6.2 Capabilities and Limitations
6.2.1 Idempotence
Estándares para codificadores de voz
El campo de la codificación de voz, ha tenido un importante nivel de investigación y desarrollo, con el fin de obtener códecs de audio que brinden la mejor calidad de conversación. La elección de un eficiente mecanismo de codificación y decodificación es vital para el uso de tecnología de conmutación de paquetes. De acuerdo con Minoli [23], a mediados de los 90’s la ITU (International Telecommunication Union) estandarizó algunos códecs que son aplicables para voz sobre internet y para aplicaciones en Intranet, entre los que se encuentran el G.728, G.729 y el G.723.1. Sin embargo, la tasa de bits del G.728 es de 16 kbps, la cual, puede ser demasiado alta para aplicaciones sobre IP.
Por su parte, el G.729 de la ITU trabaja a 8 kbps, empleando Predicción Lineal con Excitación por Código Algebraico de Estructura Conjugada. Este algoritmo fue diseñado para ambientes inalámbricos y aplicaciones de redes multimedia. Debido a que fue creado para ese tipo de ambientes, este códec exhibe robustez tanto para errores en bits como para paquetes perdidos. Produce un retardo algorítmico de 15 ms.
La Recomendación G.723.1 opera a 6.3 y 5.3 kbps, y fue diseñado originalmente para videófonos con tasa de bits baja. El tamaño de la trama de este algoritmo es de 30 ms y el retardo que produce este códec es de 37.5 ms. Por lo que, cualquier cantidad significante de retardo adicional en la red, afectará el fluido de una conversación. Tomando en cuenta a la norma G.114 de la ITU [17], la cual especifica que para tener una buena calidad de voz, no se debe exceder un retardo de 150 ms en una vía, el retraso que produce este códec puede no ser tolerable para aplicaciones en tiempo real. Por otro lado, si el tipo de tráfico no es sensible al retardo, entonces el G.723 es menos complejo y emplea menos ancho de banda que el G.729, a cambio de una pequeña degradación en la calidad de voz.
En la Tabla 3.1, se listan la tasa de bits, el retardo y la puntuación MOS de algunos estándares de codificación de voz. La prueba de calidad de voz Mean Opinión Score (MOS) es empleada para identificar la calidad de diferentes códecs de voz. En esta escala, una puntuación de 4.0 es considerada “toll quality”, es decir, dicha ponderación corresponde a la calidad de voz escuchada a través de una línea telefónica normal.
CAPITULO 3. ESTÁNDARES PARA CODIFICADORES DE VOZ 28
Algoritmo Tasa de bits
kbit/s Retardo ms MOS G.711 64 0 4.3 G.726 ADPCM 32 0.125 4.2 G.729 8 15 4.0 G.729 A 8 15 3.7 G.728 16 0.625 4.0 G.723.1 6.3 37.5 3.9 G.723.1 5.3 37.5 3.7 IS54-VSELP GSM 8 20 3.5 IMBE 6.3 20 3.4 MELP 2.4 22.5 3.2 FS-1016 CELP 4.8 30 3
29
Por su parte, Cox [7], en la Figura 3.1 muestra la calidad de conversación y los requisitos de proporción de bits para muchos códecs de conversación diferentes. Nótese que la ITU ha procurado que la calidad de los codificadores de voz de tasa de bits baja, sea muy cercana a la Recomendación de la ITU G.726 a 32 kbps ADPCM, ya que la calidad de voz que proporciona éste, es muy buena y completamente aceptable para uso telefónico, consiguiendo una puntuación de MOS de 4.2.
Figura 3.1: Proporción de bits frente a calidad de conversación de varios códecs.
Fuente: “Three new speech coders from the ITU cover a range of applications”. Cox, R.V. [7].
Tomando en cuenta la información anterior, en esta tesis se eligió trabajar con la Recomendación de la ITU G.729 [16], ya que además de proveer buena calidad de voz, su tasa de bits es baja y su retardo es pequeño, con lo cual se hace atractivo su uso para aplicaciones en tiempo real como lo es Voz sobre IP. La recomendación G.729 tiene 2 variantes: G.729A y G.729B.
Salami [27] comenta que el anexo A es el códec de voz estándar para aplicaciones de voz y datos integrados. Al igual que la versión original, genera tramas de 10 ms y usa el mismo algoritmo de predicción lineal con excitación por código algebraico de estructura conjugada, y ellos son completamente interoperables. Para obtener el G.729a, la versión original fue sujeta a varios cambios algorítmicos, con lo que se redujo en un 50% el grado de complejidad, pero al mismo tiempo, su desempeño es ligeramente menor en el caso de
CAPITULO 3. ESTÁNDARES PARA CODIFICADORES DE VOZ
30
presencia de ruido de fondo. Por su lado Black [3] comenta que efectivamente, la versión de menor complejidad tiene menor calidad. De acuerdo con lo anterior, tenemos que el G.729 está evaluado con una puntuación de 4.0 en la escala MOS. Por su parte el G.729 versión A, alcanza una ponderación del MOS de 3.7. Ambos códecs incluyen estrategias para tratar con ocultamiento de pérdida de paquetes, haciéndolos buenas elecciones para usar con voz sobre Internet.
Por otro lado la Recomendación G.729 Anexo B, emplea un esquema de detección de silencio, lo cual hace que trabaje a una tasa de bits baja. Esto se realiza porque de acuerdo con Benyassine [1], cuando se establece una conversación normal de dos vías , el 60% de ella está compuesta de silencio. De ahí que al usar detección de silencio, la capacidad de canal se libera para aplicaciones concurrentes. Sin embargo, emplea un algoritmo muy sofisticado para poder distinguir entre las señales de voz y el silencio. Por otro lado, la versión B, está diseñada para interactuar con la versión completa G.729 y con el anexo A. Sin embargo, el desempeño de este códec puede no ser tan bueno como el G.729 original en ciertas circunstancias.
En esta tesis, nos enfocamos al uso de la versión original del G.729. Puesto que establece un balance adecuado entre complejidad, calidad de escucha y bajo retardo. Estableciendo de esta manera, un eficiente uso del ancho de banda y produciendo un aceptable desempeño en redes por paquetes, ya que ofrece una “toll quality”, a una tasa de bits baja de 8kbps.
En la Tabla 3.2 se mencionan algunos softwares que proporcionan aplicaciones de Voz sobre IP, con sus respectivos códecs:
Software Códec
Vocaltec G.711, G.723.1, G.729
WebPhone G.711, G.723.1, G.726, G.729 A,B
Net2Phone G.723.1, G.729A
Intel Internet Phone G.711, G.723, G.729
Multivoice PC Client G.711, G.723, GSM, G.729A Tabla 3.2: Softwares que brindan aplicaciones de VoIP
31 3.1. DESCRIPCIÓN GENERAL DE LA PRODUCCIÓN DE VOZ
3.1 Descripción general de la producción de voz
Hoy en día, el campo de la codificación de voz, tiene como misión desarrollar códecs de audio que brinden la mejor calidad de conversación. De acuerdo con Minoli [23] la calidad de un codificador de voz está en función de su proporción de bits, de la complejidad de implementación y del retraso. Para entender el mecanismo de funcionamiento de los codificadores de voz, una breve explicación de cómo la voz es producida, se menciona enseguida.
La Figura 3.2 muestra el sistema vocal humano. Durante una conversación, una señal de excitación que proviene de los pulmones y las cuerdas vocales, se filtra en el tracto vocal, el cual comprende, la garganta, la lengua, la cavidad nasal y los labios. El tracto vocal tiene ciertas características de resonancia. Estas características pueden ser alteradas variando la forma del tracto vocal, por ejemplo al mover la posición de la lengua. Las frecuencias en resonancia se llaman formantes, y en ellas se concentra la energía de la señal que caracteriza el tipo de fonema que se está pronunciando.
Figura 3.2: Sistema vocal humano
El modelo del tracto vocal se compone de un filtro variable en el tiempo, un generador de impulsos y de un generador de ruidos. Según Proakis [24], el filtro variable en el tiempo tiene dos posibles señales de excitación: la sonora, y la sorda. En los sonidos sonoros, las cuerdas vocales se abren y cierran en distintas frecuencias que modulan el aire que pasa por ellas, representando cierta periodicidad. Además, se caracterizan por tener alta energía y su contenido de frecuencias está en el rango de los 300 Hz a 4000 Hz.
CAPITULO 3. ESTÁNDARES PARA CODIFICADORES DE VOZ
32
Por el contrario, en los sonidos sordos, las cuerdas vocales no intervienen, sino que el aire de los pulmones, produce un sonido que es formado por el tracto vocal. Además, se caracterizan por tener baja energía, no son periódicos y se consideran como ruido aleatorio. En la Figura 3.3 se ilustra el Modelo del Tracto Vocal.
V TIEM A(z) G VOZ PARÁMETROS DEL TRACTO VOCAL FILTRO ARIABLE EN EL PO 1/ PITCH GENERADOR DE RUIDO ALEATORIO GENERADOR DE IMPULSOS
Figura 3.3: Modelo del tracto vocal
Cabe mencionar que la forma del tracto vocal y el tipo de excitación cambian relativamente de manera lenta. Esto significa que para intervalos de tiempo corto, el sistema de producción de voz puede ser considerado como estacionario, por lo cual la voz es dividida en tramas. Los codificadores analizan cada trama de voz y extraen los siguientes parámetros: los coeficientes del filtro, la ganancia del sistema, el periodo del pitch, además de modelar la excitación como impulsos o como ruidos. Estos parámetros son después transmitidos al receptor dónde se usan para sintetizar la voz. La Figura 3.4 ilustra el proceso de codificación y decodificación de la voz.
Secuencia de parámetros Voz Voz Síntesis Análisis
33 3.2. RECOMENDACIÓN G.729
3.2 Recomendación G.729
De acuerdo con la Recomendación de la ITU-T G.729 [16], este códec está diseñado para operar con una señal digital muestreada a 8000 Hz y codificada en PCM lineal de 16 bits a la entrada del codificador. Este códec se encuentra dentro de la categoría de los codificadores CELP (Code Excited Linear Prediction). Estos codificadores están basados en el sistema vocal humano mencionado en el apartado anterior, en el cual, el tracto es modelado como un filtro digital lineal constituido únicamente por polos (respuesta al impulso infinita o IIR), y la voz es generada por una señal que excita a este filtro.
La señal de voz es analizada trama a trama para extraer los parámetros del modelo CELP. De esta manera, las tramas de índices son generadas cada 10 ms, correspondientes a 80 muestras con una velocidad de muestreo de 8000 muestras por segundo. La trama de voz es dividida en 2 subtramas de 5 ms. De esta manera, las tramas de voz se analizan para determinar el tipo de la señal de estímulo y la forma del tracto. Los parámetros del filtro son calculados sólo una vez por cada trama de voz, en cambio, la señal de excitación es calculada por cada subtrama.
Los codificadores CELP intentan producir una señal que suene como la voz original. Para ello, en el transmisor se analiza la voz y se extraen los parámetros del modelo del tracto y la excitación. El codificador contiene una réplica del sintetizador del receptor, filtrando una señal de excitación a través de un filtro de término corto que representa el tracto vocal, véase la Figura 3.5. El filtro de término largo o de tono se aplica mediante el Libro de códigos adaptativo. La salida del decodificador es comparada con la señal objetivo. La excitación elegida es aquella que minimiza una medida de error perceptual entre la señal sintetizada y la señal original. De esta forma, la señal de voz es analizada, y sintetizada a la salida del decodificador. A esta técnica se le llama Análisis por síntesis, porque en ésta se analiza una señal sintetizando varias posibilidades, y se elige aquella que produce el mínimo error.
CAPITULO 3. ESTÁNDARES PARA CODIFICADORES DE VOZ 34 Código N . . Código 2 Código 1 Filtro de Término Largo Filtro de Término Corto Señal de voz Minimización del error Filtro de Ponderación Perceptual Sintetizador
35 3.2. RECOMENDACIÓN G.729
3.2.1 Descripción del codificador.
s Tabla de códigos adaptativos Búsqueda de la tabla de códigos fijos Información LPC Interpolación de cuantificación para el análisis de LP Pre-procesamiento
En el codificador, la señal de entrada se pasa por un filtro pasa altas y se pone a escala en el bloque de preprocesamiento. La señal preprocesada es empleada como la señal de entrada para todo el análisis subsecuente. En la Figura 3.6 se muestra el diagrama a bloques del codificador.
Señal vocal de entrada Tabla de códigos fijos Gc Filtro de síntesis Gp Información LPC Análisis del pitch Ponderación perceptual Cuantificación de la ganancia Codificación
de parámetro Tren de bits transmitido Información
LPC
CAPITULO 3. ESTÁNDARES PARA CODIFICADORES DE VOZ 36
Filtro LPC
La predicción lineal es empleada para modelar el tracto vocal como un filtro digital de décimo orden, constituido únicamente por polos de respuesta al impulso infinita o (filtro IIR). Este filtro, calcula la próxima muestra como una suma ponderada de las muestras pasadas. Su función de transferencia está dada por:
( )
( )
z A z a z H i i 1 1 1 10 1 = + =∑
−Proakis [24] menciona que típicamente en el sistema de producción de voz, la forma del tracto vocal cambia cada 10 ms. Esto significa que para intervalos de tiempo corto, el tracto puede ser considerado como estacionario. De tal manera, que las características espectrales de la onda dependen del fonema que se está pronunciando en cada momento. Durante este tiempo, el filtro es caracterizado por un número de coeficientes, conocidos como Coeficientes de Predicción Lineal.
Cabe mencionar, que a este filtro se le conoce también como filtro LPC (Linear Predictive Coefficients), ya que cada muestra es una combinación lineal de las muestras anteriores. Dada la señal , el problema consiste en determinar los coeficientes de predicción de la trama de voz actual. Sin embargo, para determinar el valor de los coeficientes del filtro de la presente trama de voz, se necesita realizar un proceso de correlación entre las muestras de la señal de voz. En el cual, son también examinadas las muestras anteriores y posteriores a dicha trama, con el fin de suavizar las transiciones entre tramas de voz sucesivas. De esta forma, se mejora la calidad de los coeficientes de la trama actual, proporcionando una mejor calidad de voz. La responsable de realizar dicho proceso se le llama Ventana de Análisis.
( )
n si
a
En el códec G.729, la ventana de análisis LP que se muestra en la Figura 3.7, dura un intervalo de 30 ms, es decir, se aplica a 120 muestras de las tramas de voz precedentes, 80 de la trama presente y 40 muestras de la trama futura. De hecho, con este look-ahead de 5 ms correspondientes a 40 muestras de la trama de voz siguiente, se requiere que el codificador se espere 5 ms adicionales al retardo de los 10 ms, en el cual, la trama de voz actual se está procesando. De ahí que el retardo de codificación total, sea de 15 ms, llamándose retardo algorítmico. Dicha ventana consta de dos partes: La primera es media ventana de Hamming y la segunda un cuarto del ciclo de la función coseno.
37 3.2. RECOMENDACIÓN G.729 120 muestras 40 muestras Trama anterior Trama futura Trama actual
Figura 3.7: Ventana de análisis LP
Cabe mencionar que los 10 ms que el G.729 emplea para codificar la señal de voz, permite que el retardo de una vía no se incremente demasiado, y pueda mantenerse por debajo de los 150 milisegundos que recomienda la ITU. De lo contrario, si este retardo fuera más grande, entonces tendríamos que esperar más tiempo para obtener los 10 coeficientes del filtro LPC. Con lo cual, es factible sobrepasar el umbral de tiempo que establece la ITU, y como consecuencia, obtener en el receptor una pobre calidad de voz. Es por ello, que el uso del G.729 se hace viable para trabajar en redes de paquetes, pues el retardo de codificación que introduce es aceptable.
Análisis de predicción lineal.
Una vez obtenidos los coeficientes de predicción a través de la ventana de análisis LP, se transforman al dominio LSP (Line Spectrum Pair). Esto se debe según Villarrubia[31], a que la cuantificación y transmisión de los parámetros LP debe hacerse asegurando tanto la estabilidad del filtro de síntesis , como la facilidad en la interpolación entre parámetros de tramas de voz consecutivas, para propósitos de cuantificación e interpolación. Ambas condiciones se obtienen recurriendo al uso de parámetros LP equivalentes, como son los LSP’s. Asimismo Proakis [24] comenta que en tecnologías de comunicación, los parámetros LSP’s aportan ventajas para ser cuantificados vectorialmente, reduciendo la tasa binaria necesaria para su transmisión, sin introducir degradaciones perceptibles en la voz decodificada. La conversión de parámetros se realiza a través de una predicción MA (Moving Average) de 4º. orden.
Los coeficientes de predicción son calculados para minimizar el error entre la muestra actual y su predicción. La señal residual obtenida se cuantifica mediante un eficiente proceso de cuantificación vectorial de dos etapas. La primera etapa es una cuantificación vectorial (VQ) de 10 dimensiones que utiliza un libro de códigos L1 de 128 entradas (7 bits). La segunda etapa es una VQ de 10 bits que se aplica como una VQ de división mediante dos libros de códigos de cinco dimensiones, L2 y L3, de 32 entradas (5 bits cada una).
CAPITULO 3. ESTÁNDARES PARA CODIFICADORES DE VOZ 38
Hay que considerar, que al ser transmitido un paquete de voz en un ambiente de red como lo es IP, un error en cualquiera de los bits que contenga a estos parámetros, causa como consecuencia, un error en la decodificación. Debido a que un valor erróneo será el seleccionado en la tabla de cuantización. Por ejemplo, si un bit correspondiente a cualquiera de los parámetros LSP’s es alterado, entonces cambiará tanto el tamaño como la forma del tracto vocal. Con lo cual, el sonido reproducido en el extremo receptor será diferente, puesto que las resonancias que caracterizan el tipo de fonema que se está pronunciando, habrán sido modificadas. Con ello, la calidad de la voz se degrada de manera importante, tal y como lo muestran más adelante los experimentos realizados en esta tesis.
Filtro de Ponderación Perceptual
Una vez preprocesada la señal de voz, ésta es introducida en un filtro de ponderación perceptual. Este filtro se encarga de realizar el efecto de enmascaramiento, producido en el sistema auditivo humano por una señal de alta energía sobre otra de más baja. Lo anterior se realiza con el fin de modificar el espectro del ruido y hacerlo perceptualmente inaudible. A la salida de este filtro, se obtiene la señal objetivo.
La intención del filtro perceptual, es atenuar la energía de la señal en aquellas frecuencias en las que el oído humano detecta menos los posibles errores y amplificarlas para aquellas en que el oído es más perceptivo.
Excitación
Enseguida se calcula la excitación, la cual se cuantifica vectorialmente en cada subtrama de 5 ms. De acuerdo con Rosenberg [25], la excitación es representada como la suma de dos componentes. La primera determina el retardo de la excitación, y la segunda es una señal con cuatro impulsos en varias posiciones. El primer componente es llamado contribución del Libro de códigos Adaptivo, y es el responsable de representar la estructura armónica de la voz debida a la vibración de las cuerdas vocales, es decir, modela la periodicidad en la voz.
El primer paso en este proceso es pre-calcular el pitch delay. Éste es predeterminado a través de un bucle abierto por cada trama de 10 ms, obteniéndose el valor máximo de la autocorrelación de la señal de voz ponderada, que es obtenida al pasar la señal de voz a través de un filtro perceptual ponderado, véase Figura 3.8. Esto se hace con