2. VOZ SOBRE IP: PROTOCOLOS Y CÓDECS 2.1. Introducción En este apartado se presenta una breve descripción de VoIP junto con el conjunto de funcionalidades que hacen su uso ventajoso con respecto a la telefonía conmutada. Además, se presentan los distintos estándares sobre los que se sustenta la solución estudiada y el conjunto de códecs que van a ser utilizados en la codificación de las señales de audio. 2.2. Definición de VoIP Voz sobre IP [3] es una tecnología que permite realizar una conversación oral haciendo uso de la red de conmutación de paquetes mediante el empleo del protocolo IP y conjugándolo con el protocolo RTP [4], el cual permite ejecutar aplicaciones en tiempo real. Los pasos básicos para la generación de una llamada telefónica a través de Internet consisten en la conversión de la voz analógica a un formato digital y la compresión y empaquetamiento de la señal obtenida para su transmisión. En el extremo opuesto se realiza el proceso inverso para recuperar la señal vocal. En cuanto a los dispositivos necesarios para llevar a cabo este proceso pueden ser tanto un ordenador, un teléfono VoIP como un teléfono tradicional con o sin adaptador, dependiendo del tipo de servicio deseado. Entre las funcionalidades aportadas podemos destacar la posibilidad de realizar varias llamadas de forma simultánea, la inclusión de protocolos que permiten cifrar y autenticar la trama de datos (Secure RTP) [5], la integración con otros servicios disponibles en la red de Internet o el hecho de que la movilidad es completamente transparente. Además, desde el enfoque empresarial, se ha verificado que el uso de la telefonía sobre IP aumenta la productividad y ocasiona costes operacionales más bajos, 14 debido a que es necesaria una única red para la transmisión de voz y datos. Tal es así, que según el informe de Cisco [6], el gasto de realización de videoconferencias se reducen un 30% con respecto a la telefonía tradicional. Como ventajas añadidas, mencionar la capacidad de usar protocolos de encaminamientos dinámicos, que permiten que los paquetes converjan hacia la mejor ruta, y aplicaciones de monitorización, cualidad añadida que permite a los administradores de red controlar el uso de la misma. 2.3. Estándares El hecho de usar una red de conmutación de paquetes hace necesario solventar ciertos problemas, que surgen de la naturaleza inherente de la misma, relativos a la comunicación en tiempo real. Tal es así, que la red ha ido optimizándose para eliminar, dentro de lo posible, la congestión de la red y la pérdida de paquetes asociada. Sin embargo, todavía se está trabajando en la robustez de la misma y la calidad del sonido transportado. Es por ello, que los estándares establecidos se centran en tres pilares básicamente: los códecs de audio, los protocolos de transporte y los servicios de directorio. Así, en el año 1996, la ITU definió la especificación H.323, la cual se basaba en el uso de RTP/RTCP, que determinaba cómo el tráfico de voz, datos y video debe ser transportado sobre una red local basada en IP. Dentro del conjunto de recomendaciones que compone H.323, se halla el estándar G.729 para códec de audio. No obstante, más adelante se llega al acuerdo de sacrificar parte de la calidad del sonido en beneficio del ancho de banda usado. Tal es así que se implanta G.723.1, el cual requiere 6.3 kbps frente a los 8 kbps necesarios anteriormente. En cuanto a RTP, es un protocolo que permite sincronizar diferentes flujos de datos pertenecientes a aplicaciones en tiempo real. Sin embargo, no incluye mecanismos para entregar los paquetes a tiempo, para recuperar paquetes perdidos o para asegurar la calidad de servicio (QoS). Finalmente, 15 el protocolo LDAP prevalece como candidato para los servicios de directorios. 2.4. Codificación de la voz Las redes de datos, como es el caso de la red IP sobre la que se soporta este tipo de telefonía, son redes digitales. Esto significa que el caso de transportar señales vocales, originalmente analógicas, requiere que en algún punto de la red se realice la digitalización de la señal de audio. De esta forma, una señal continua en el tiempo y que toma infinidad de valores es convertida y cuantificada a una secuencia de números discretos. Esta tarea suele realizarse, generalmente, en los propios terminales y el elemento vital involucrado de forma directa es el códec. Inicialmente, los códecs se basaron en codificar de la manera más eficiente posible la forma de onda de la señal de entrada, haciendo uso de características de la voz y el oído humano (por ejemplo, ha sido comprobado que el oído es más sensible a ruidos y distorsiones en señales de baja amplitud que en aquellas de mayor amplitud). Con el paso del tiempo, con el objetivo de reducir el ancho de banda consumido en la transmisión, se comenzaron a utilizar técnicas predictivas. Estas técnicas consisten en predecir los valores de las muestras en función de la extrapolación obtenidas de las muestras previas, y codificar exclusivamente la diferencia entre el valor predicho y el valor real de la muestra. Posteriormente, se añade una nueva idea en la codificación de la voz. Se trata de generar voz sintética la cual emula la producción de voz en el aparato fonador humano. En este tema se han diseñado modelos válidos basados en un generador de impulsos y un filtro lineal ambos variables con el tiempo. La voz humana puede incluir tonos que alcancen hasta los 20 KHz, que está directamente relacionado con el límite de frecuencias que es capaz de percibir el oído. Sin embargo, la mayor parte de la energía se concentra en las frecuencias más bajas, por debajo de los 4 KHz. Es por ello que la mayor parte de los códecs utilizados, considerados de banda estrecha, se centran en el tratamiento de la voz en ese intervalo. No obstante, se han 16 desarrollados códecs que cubren un espectro más amplio a cambio de ocupar un mayor ancho de banda en la transmisión de los datos a través de la red. 2.4.1. Digitalización y codificación La digitalización es el primer paso en el proceso de la transmisión de voz a través de la red de paquetes. Esta tarea consiste en la conversión de una señal de naturaleza analógica en una señal que toma valores discretos. Para conseguir tal efecto se divide este proceso en dos etapas: muestreo y cuantificación. La tarea de codificación es la pieza clave donde toma relevancia el códec de voz. Se basa en la traducción de los valores discretos a numéricos para su transmisión. 2.4.1.1. Muestreo La finalidad del muestreo consiste en tomar muestras de la señal vocal de manera periódica. La periodicidad de las muestras debe satisfacer el Teorema de Nyquist. Teorema fundamental de la teoría de la información que establece que la mínima frecuencia a la que puede ser muestreada una señal para que pueda ser reconstruida sin perder información debe duplicar la frecuencia máxima de la señal. Debido a lo expuesto anteriormente, es plausible filtrar la voz humana a 3,4 KHz sin dejar de ser entendible por el receptor. De tal manera, y basándose en el mencionado teorema, para que sea posible reconstruir esta señal a partir de sus muestras, la tasa de muestreo debe ser, como mínimo, de 6,8 KHz. Teniendo en cuenta que los filtros reales no pueden implementar cortes abruptos tal cual los teóricos, se ha establecido de manera extendida en la telefonía una frecuencia de muestreo de 8 KHz, lo que equivale a tomar una muestra de voz cada 125 microsegundos. 17 En la siguiente ilustración se representa una porción de una señal analógica que posee una frecuencia máxima , que al ser combinada con un tren de pulsos de una periodicidad , donde designa la frecuencia de muestreo, se consigue una señal muestreada válida para su posterior reconstrucción en el extremo receptor de la comunicación. Figura 2. Muestreo de una señal analógica. 2.4.1.2. Cuantificación Una vez se ha obtenido las muestras a partir de la señal original, el siguiente paso consiste en la cuantificación. Este proceso consiste en convertir las muestras analógicas en muestras que tomen un conjunto de valores discretos. Así, se completa el proceso de la digitalización. En la siguiente figura se muestra un sencillo ejemplo del resultado de este proceso. 18 Figura 3. Cuantificación de una señal muestreada. Como es de esperar, al transformar los infinitos valores que puede tomar una señal analógica a un conjunto discreto, se produce una distorsión conocida como ruido de cuantificación. A pesar de su nombre, esta distorsión no es propiamente un ruido, pues no proviene de factores externos, sino que es intrínseco a esta tarea. Existe una relación directa entre la cantidad de valores discretos, la distorsión asociada y el ancho de banda necesario. Esta relación se basa en que cuanto más valores discretos se usen en el proceso de la cuantificación, menor será la distorsión pero mayor la cantidad de información que es necesaria transmitir. A modo de ejemplo, se representa en la siguiente ilustración el error cometido en la cuantificación de una muestra. De modo que se puede observar la diferencia existente entre el valor tomado por la señal analógica y el nivel de cuantificación correspondiente para su muestra. Figura 4. Error de cuantificación. 19 2.4.1.3. Codificación A pesar de ya disponer de una señal digital es necesario codificar los valores discretos, es decir, asignarles valores numéricos, para que sea posible su empaquetamiento y posterior transmisión. Para llevar a cabo esta operación y su inversa se utilizan los códecs (codificadores / decodificadores). 2.4.2. Códecs Los códecs pueden ser clasificados en base a distintos factores que los caracterizan, como pueden ser su tasa de bits, la calidad del audio codificado, su complejidad, el tipo de tecnología que usan o el retardo que introducen. Originariamente, los códecs fueron diseñados para ser usados en el rango de frecuencias donde se concentra la mayor parte de energía, entre los 300 Hz y los 3,4 KHz. Estos códecs se conocen como de banda estrecha (NB, NarrowBand). Con posterioridad, se han incluido códecs capaces de trabajar en rangos más amplios, entre 50 Hz y 7 KHz, considerados de banda ancha (WB, WideBand). Actualmente, la ITU-T ha estandarizado códecs de banda “superancha” (SWB, SuperWideBand), para el rango comprendido entre 50 Hz y 14 KHz, y de banda completa (FB, FullBand), para el intervalo de frecuencias de 50 Hz a 20 KHz [7]. Un conjunto de códecs de banda estrecha se detallan con mayor profundidad en los siguientes epígrafes, pues son los que se utilizan en la codificación de los ficheros de audio usados en este proyecto. Este tipo de códecs son los más usados hoy en día en la telefonía móvil y fija. En cuanto a los de banda ancha se presentan los códecs más representativos en el ámbito de la transmisión de audio. La mayor parte derivan de los códecs de banda estrecha, aunque se presentan nuevas alternativas en función de su utilización. Se están haciendo más presentes 20 debido al hecho de que los operadores móviles están desarrollando nuevos servicios en sus redes como el denominado “voz en alta definición”. Los códecs de banda superancha no son muy numerosos debido a su reciente inclusión en la transmisión de audio de alta calidad. En general, son extensiones incluidas en los anexos de códecs de banda ancha estandarizados por la ITU-T, a excepción de SILK desarrollado por Skype. Por último se han desarrollado los códecs de banda completa. Estos presentan una nueva experiencia en la transmisión del audio que no sólo busca proporcionar una alta calidad en la voz humana sino que pretende captar el sonido ambiental. Los dos más recientes son las extensiones de G.711.1 y G.722 [8]. En la tabla 1 se recoge una comparativa de la calidad de audio esperada para los distintos tipos de códec, atendiendo a la banda de frecuencias de funcionamiento. Estas conclusiones junto con las gráficas comparativas presentadas a continuación han sido extraídas por el equipo de investigación de Nokia [9]. Tipo de códec NB WB SWB FB Banda de frecuencias (Hz) 300 - 3400 50 - 7000 50 - 14000 20 - 20000 Calidad esperada Teléfono Radio AM Radio FM CD Tabla 1. Calidad esperada según el tipo de códec. El siguiente conjunto de tablas muestran los códecs de voz más representativos pertenecientes a cada tipo de códec, según la clasificación establecida. En ellas se recoge las tasas de bit y el retraso generado en la codificación, y su aplicación básica en las comunicaciones. 21 Códec Nombre Tasa de bit (Kbps) G.711 PCM: Pulse Code Modulation 64 / 56 0,125 G.723.1 Hybrid MPC-MLQ and ACELP 6,3 / 5,3 37,5 40 / 16 / 12,8 / 9,6 1,25 G.728 G.729 AMR iLBC LD-CELP: LowDelay Code Excited Linear Prediction CS-ACELP: Conjugate Structure Algebraic Codebook Excited Linear Prediction Adaptative Multi Rate internet Low Bitrate Códec Retardo (ms) 11,8 / 8 / 6,4 15 12,2 a 4,75 20 15,2 / 13,33 20 / 30 Comentarios Utiliza dos posibles leyes de compresión: µ-law y A-law [10] Desarrollado inicialmente para videoconferencias en la PSTN. Se utiliza actualmente en VoIP [11] Diseñado para aplicaciones DCME (Digital Circuit Multiplex Encoding) [12] Ampliamente utilizado en aplicaciones de VoIP, a 8 KHz [13] Utilizado en redes celulares GSM [14] Utilizado en VoIP por su robustez ante pérdida de paquetes [15] Tabla 2. Códecs de banda estrecha. Figura 5. Comparación entre AMR y códecs de la serie G de la ITU-T. 22 La comparación entre AMR y la serie G de la ITU-T (figura 5), revela que el primero de ellos es ligeramente mejor, en cuanto a calidad del sonido, para tasa de bits similares. Códec Tasa de bit (Kbps) Nombre Retardo (ms) 64 / 56 / 48 3 G.722.1 Transform Coder 32 / 24 40 G.711.1 WideBand G.711 96 / 80 / 64 11,875 G.729.1 WideBand G.729 8 a 32 49 G.722.2 AMR-WB 23,85 a 6,6 25,9375 G.722 Sub-band ADPCM Comentarios Originalmente creado para audio y videoconferencias. Actualmente utilizado en servicios de telefonía de banda ancha en VoIP [16] Usado en audio y videoconferencias [17] Amplía el ancho de banda del códec G.711, optimizando su uso para VoIP [18] Amplía el ancho de banda del códec G.729, optimizando su uso para VoIP con audio de alta calidad [19] Estándar en común con 3GPP [20] Tabla 3. Códecs de banda ancha. Figura 6. Comparativa entre códecs de banda ancha. 23 De nuevo, puede apreciarse que, en la mayor parte de los casos, el códec AMR de banda ancha sigue proporcionando mejor calidad de audio que el resto de los códecs analizados. Códec G.711.1 SWB G.722 SWB Nombre G.711.1 Superwideband G.722 Superwideband G.722.1C Anexo C de G.722.1 SILK SILK Tasa de bit (Kbps) Retardo (ms) 128 a 96 12,8125 96 / 80 / 64 48 / 32 / 24 8 a 24 12,3125 40 25 Comentarios Extensión interoperable con G711 y G711.1 [21] Extensión interoperable con G.722 [22] Optimizado para su uso en tiempo real [23] Utilizado por Skype [24] Tabla 4. Códecs de banda superancha. Figura 7. Comparativa de códecs de banda superancha. En la anterior gráfica se comprueba que AMR de banda ancha extendido, AMR-WB+ [25], continúa siendo el códec que aporta mayor calidad a la comunicación. No obstante, no se ha incluido en la tabla 4 24 como una opción válida pues presenta un alto retardo para la telefonía en tiempo real. Códec G.719 Nombre Low-complexity, full-band Tasa de bit (Kbps) Retardo (ms) Comentarios 32 a 128 40 Primer códec fullband estandarizado por la ITU-T [26] Tabla 5. Códec de banda completa. 2.4.2.1. G711 La recomendación G.711 [10] recoge el códec básico en telefonía estandarizado por la ITU-T. Conocido formalmente como Pulse Code Modulation (PCM) es un códec del tipo de “forma de onda”. G.711 es un estándar para la representación de señales de audio en la banda de frecuencias conocida como banda estrecha a partir de una señal muestreada a una tasa de 8000 muestras por segundo. Teniendo en cuenta que en la cuantificación logarítmica no uniforme se utilizan 8 bits para representar cada muestra, se obtiene una tasa de bit de 64 kbit/s. Por otro lado, el proceso de cuantificación está implementado mediante un algoritmo no lineal, debido al comportamiento del oído humano, minimizando la cantidad de niveles de cuantificación. Este algoritmo se basa en aportar pequeñas distorsiones para amplitudes pequeñas de señal y un aumento de las mimas con respecto a la amplitud de la señal. Se distinguen dos algoritmos principales, la ley µ, usada en Norte América y Japón, y la ley A, usada en Europa y el resto del mundo. Ambas leyes están compuestas de 256 niveles no lineales de cuantificación, correspondiente a los 8 bits disponibles. El primero de ellos permite una mayor resolución para elevados rango de señal y hace uso de 15 segmentos de recta para aproximarse a la curva real, mientras que la segunda 25 proporciona más niveles de cuantificación para amplitudes de señal más reducidas y sólo utiliza 13 segmentos de recta. 2.4.2.2. G.729 El códec G.729 [13] es un estándar de codificación de señales vocales desarrollado por la ITU-T. Está caracterizado por generar una tasa de bit de 8 kbit/s utilizando el algoritmo CS-ACELP (Conjugate-Structure Algebraic-Code-Excited Linear-Prediction). Se enmarca dentro de los códecs basados en el modelo de síntesis de voz. Utiliza un mecanismo consistente en dos generadores de impulsos combinados que se seleccionan de una lista predeterminada (codebook). Esta técnica se conoce como CELP. En ella se utilizan ventanas de audio de 10 ms con una cabida para 80 muestras, puesto que la frecuencia de muestreo coincide con el caso anterior (8000 muestras por segundo). De tal manera que cada 10 ms se extraen los parámetros del modelo CELP: coeficientes del filtro lineal predictivo (LPC), punteros a la tabla de impulsos adaptativos y fijos (codebook) y ganancias. A partir de los mencionados coeficientes se obtienen parámetros equivalentes, llamados LSP (Line Spectrum Pairs), y se cuantifican utilizando vectores predictivos de dos etapas (VQ). G.729 es comúnmente utilizado en aplicaciones de VoIP debido que presenta unos requerimientos de ancho de banda considerablemente inferiores a otros códecs pertenecientes a la misma familia, veáse tabla 2. Tal como ha sido comentado anteriormente, este estándar opera a una tasa de bit de 8 kbit/s y genera tramas de 10 ms, por lo que se necesitan de 80 bits para codificar cada ventana de audio. No obstante, existen extensiones que permiten incrementar o disminuir la calidad de la conversación pues éstas ofrecen tasas de bit de 11,8 kbit/s y 6,4 kbit/s, respectivamente. El anexo A de esta recomendación define un nuevo algoritmo denominado G.729a con una complejidad menor que G.729 y totalmente interoperable. Esta reducción de la complejidad se consigue mediante simplificaciones en los algoritmos empleados con respecto a la versión original, que implican la sustitución de algunos bloques de procesamiento 26 por otros más sencillos y la fijación de ciertos parámetros que en la versión completa varían en base al audio a codificar. En contraposición, la calidad de la conversación es empeorada. En el anexo B se proporciona un esquema para la detección de actividad vocal (VAD, Voice Activity Detection) y supresión de silencios mediante el uso de las conocidas tramas SID. Gracias a este modelo es posible realizar una “transmisión discontinua” (DTX) en la cual se decide si se transmite voz o se genera ruido de confort (CNG). En caso de generar ruido de confort, la actualización de los parámetros de ruido de fondo es empaquetada en las mencionadas tramas SID. De tal forma que en el extremo receptor se distinguen si las tramas recibidas son activas o de silencio. Esta nueva implementación permite la reducción del ancho de banda total utilizado, ya que no se transmiten muestras durante los períodos de silencio, excepto la información de actualización del ruido de confort. 2.4.2.3. AMR El códec AMR (Adaptative Multi Rate) [14], a diferencia de los anteriores, está estandarizado por el organismo 3GPP y es utilizado típicamente en redes celulares GSM. En común con el códec G.729 presenta la capacidad de hacer uso de las tecnologías DTX, VAD y CNG, descritos anteriormente. El nombre adoptado por este códec proviene de la variedad de posibilidades de tasa de bit a las que puede operar. Estos regímenes binarios son los siguientes 12,20; 10,20; 7,95; 6,70; 5,90; 5,15 y 4,75 kbit/s. De forma similar a G.729, su funcionamiento también se basa en el modelo CELP, pero en este caso las ventanas de audio son de 20 ms. De nuevo la frecuencia de muestreo es de 8000 muestras por segundo por lo que en cada ventana de audio caben una cantidad de 160 muestras. Cada ventana, a su vez, se divide en cuatro de 5 ms (40 muestras) cada una. En base a las velocidades de transmisión el tamaño de las tramas pueden tomar los siguientes valores: 244, 204, 159, 148, 134, 118, 103 ó 95 bits, respectivamente. 27 2.4.2.4. iLBC iLBC (internet Low Bitrate Códec) es un códec de voz desarrollado por Global IP Solutions [15]. Es muy adecuado para aplicaciones de voz sobre IP, sobre todo en condiciones de pérdida de tramas elevada. Las causas principales de la existencia de tramas perdidas suelen ser la pérdida o el retraso de los paquetes IP. La mayor parte de los códecs aprovechan las dependencias entre tramas de voz, lo que conlleva una propagación del error cuando ocurren estos fenómenos. En cambio, las tramas codificadas mediante el códec iLBC son totalmente independientes, erradicando el problema presentado. En la siguiente figura se muestra una comparación entre la calidad de voz en la escala MOS codificada mediante el códec iLBC frente a dos códecs de la ITU-T, G.729 y G.723.1, en función de la pérdida de paquetes. En ella se demuestra que al aumentar la pérdida de paquetes la calidad ofrecida por iLBC supera ampliamente a las otras dos alternativas. Figura 8. Comparativa de calidad de iLBC frente a G.729 y G.723.1. 28 Está diseñado para la voz en banda estrecha y permite trabajar a dos tasas de bit que generan dos tamaños de trama distintos, 30 ms para una tasa de 13,33 kbit/s y 20 ms para 15,20 kbit/s. De tal manera que una trama de 20 ms contiene 304 bits, mientras que una de 30 ms está formada por 400 bits. La frecuencia de muestreo sigue siendo de 8000 muestras por segundo por lo que se codifican 160 muestras para tramas de 20 ms y 240 muestras para tramas de 30 ms. 29