Codificación de la voz

Técnicas de codificación de la voz

Cuando se utilizan equipos o redes digitales para transmitir o almacenar señales de voz, lo primero que hay que hacer es digitalizar la voz. Esto supone convertir la señal analógica de la voz (señal continua en tiempo y amplitud) en una señal digital o secuencia binaria de ceros y unos. A todo este proceso se le conoce como codificación de la voz.

La codificación de la voz ha evolucionado notoriamente desde las primeras ideas de Alec Reeves. Existen tres tipos generales de técnicas de codificación y decodificación de la voz o codecs:

  • De forma de onda. Básicamente muestrean la señal analógica y la codifican directamente. Transmiten los valores cuantificados al extremo distante, donde se reconstruye la señal original. Este sistema de codec es más bien simple y reproducen una buena calidad de sonido en destino. Su mayor inconveniente es que, comparado con otros sistemas, necesitan un gran ancho de banda para conseguir unos mismos niveles de calidad.
  • Vocoder o de la señal origen. Con esta técnica se representa la señal sonora de acuerdo a un modelo matemático. Periódicamente identifica el modelo con el que se corresponde el sonido de la muestra y envía al destino los parámetros que lo identifican. En el destino se va reconstruyendo la forma de onda de acuerdo a los parámetros recibidos. Es de destacar que, en el caso del vocoder, no se transmite la información directa de la voz, sino los parámetros que la definen. Este sistema puede verse completado con un identificador de silencio para conseguir una mayor eficiencia. Con el sistema vocoder se puede reducir la necesidad de ancho de banda hasta los 2,4 Kbps. En este caso, el sonido no es de buena calidad (suena como metálico) pero es inteligible.
  • Híbridos. El inconveniente del sistema vocoder es que no ofrece una alta calidad de sonido, ni aún aumentando considerablemente el ancho de banda. Para conseguir mejorar la calidad, se utilizan sistemas híbridos. Éstos ofrecen lo mejor de ambos sistemas anteriores, consiguiendo una muy buena calidad de sonido con un ancho de banda limitado.
Comparación de los distintos tipos de codecs
Comparación de los distintos tipos de codecs

Codec de forma de onda

Estos sistemas de codificación de la voz se basan en medir la amplitud de la señal de la voz en un instante determinado, indicar esa medida en forma binaria y transmitir la información al destino. Tomando estas medidas de forma reiterada y frecuente, se puede lograr regenerar la señal de la voz en el destino.

Los codec de forma de onda realizan la digitalización de la señal analógica de la voz en dos pasos:

  • Muestreo
  • Cuantificación

Cómo funciona el muestreo

El muestreo consiste en tomar muestras periódicas del nivel de la señal analógica para representar posteriormente estos valores en forma binaria mediante las técnicas de cuantificación. La información binaria es transmitida al destino donde se le aplica el proceso inverso para conseguir una señal analógica similar a la original.

Comparación de formatos de audio
Comparación de formatos de audio

Para que la señal conseguida en destino reproduzca fielmente la señal original es necesario que el tiempo entre muestra y muestra sea tal que no pueda ocurrir nada impredecible entre ellas. En 1928, el sueco Harry Nyquist desarrolló la hipótesis de que la señal puede ser reconstruida siempre que las muestras se tomen a una frecuencia doble de la frecuencia máxima de la señal original. Esta hipótesis fue demostrada matemáticamente, y convertida en teorema, por el estadounidense Claude Shannon veinte años más tarde (1948). A pesar de ello, el teorema se conoce como teorema de Nyquist. No obstante, Shannon, que murió no hace mucho (año 2001), es considerado el padre de la teoría de la información (de donde viene la Sociedad de la Información).

Shannon es considerado el padre de la teoría de la información (de donde viene la Sociedad de la Información).

Volviendo al tema, si la máxima frecuencia de la señal analógica que se pretende retransmitir es 4.000 Hz, aplicando el teorema de Nyquist se deben tomar 8.000 muestras cada segundo, o lo que es lo mismo, una muestra cada 0,125 milisegundos.

Muestreo y cuantificación en el proceso de codificación de la voz
Muestreo y cuantificación en el proceso de codificación de la voz

En qué consiste la cuantificación

Una vez que sabemos cada cuánto tiempo tenemos que tomar muestras, la siguiente cuestión es cuántos bits son necesarios para representar este valor. Parece una pregunta simple, pero lo cierto es que cualquier valor digital sólo representa un conjunto de valores discretos. Por ejemplo, si el nivel de tensión máximo de la señal de la voz es 30 y utilizamos 2 bits para representarlo, sólo podremos transmitir 4 niveles de tensión (00, 01, 10 y 11). Estos niveles podrían corresponderse con los valores 0, 10, 20 y 30. Si en vez de 2 bits se utilizasen 3 ó 10, el número de niveles de tensión representados aumentaría, pero seguirían siendo limitados y, por lo tanto, seguiría existiendo la necesidad de realizar una aproximación.

A la asignación del valor binario correspondiente a cada valor real de la muestra se lo conoce como cuantificación. Como la cuantificación siempre se lleva a cabo por aproximación, esto quiere decir que existe un error (diferencia entre la señal original y la cuantificada) y, por tanto, la señal de destino será similar a la original, pero no idéntica. A este error se lo conoce como error o ruido de cuantificación.

Cuantos más bits se utilicen para representar cada muestra, mayor será la fidelidad de la señal en destino y, por tanto, menor el ruido de cuantificación. El inconveniente es que la velocidad de transmisión necesaria (ancho de banda) es directamente proporcional al número de bits de la muestra. En el caso de utilizarse 2 bits por muestra, la velocidad de transmisión necesaria sería de 16 Kbps (2 bits x 8.000 muestras al segundo).

 Una forma de mejorar el ruido de cuantificación sin aumentar el ancho de banda es dejar de aplicar una cuantificación uniforme para dedicarle más valores a los niveles bajos y menos a los niveles altos. Siguiendo con el ejemplo anterior, para representar los valores reales 8 y 28, tendríamos que utilizar los bits 01 y 11 (según la escala del ejemplo propuesto anteriormente). Estos dígitos identifican en realidad a los valores 10 y 30 (no 8 y 28). Aunque, de forma absoluta, la diferencia en ambos casos es 2, esta diferencia supone un 20% de error en el primer caso y un 7% de error en el segundo.

Para evitar esto se utiliza una cuantificación no uniforme (por ejemplo, logarítmica), aplicando una mayor granularidad a los niveles bajos que a los altos. En el ejemplo, a las cuatro combinaciones posibles se les aplicarían las amplitudes 0, 4, 12 y 30 (en vez de 0, 10, 20 y 30).

Cuantificación lineal y logarítmica
Cuantificación lineal y logarítmica

Desde 1972, las redes telefónicas han digitalizado la voz utilizando la recomendación G711 de la UIT-T. Este codec es de tipo forma de onda y utiliza 8 bits para cada muestra, lo que hace que la velocidad de transmisión de un canal telefónico sea 64 Kbps (8 x 8.000). Los equipos digitales de las redes telefónicas utilizan circuitos telefónicos de 64 Kbps siguiendo esta recomendación.

Qué es el Vocoder

Homer W. Dudley era un físico que trabajaba en los laboratorios Bell Telephone. En 1928 se le ocurrió el reto de reducir el ancho de banda necesario para transmitir la voz por las redes de telefonía. De esta forma se incrementaría la capacidad de transmisión de las redes de larga distancia sin tener que crear nueva infraestructura. Desarrolló una idea que consistía en analizar la señal de la voz para identificar los parámetros que la definen; de forma que transmitiendo estos parámetros se pueda resintetizar la voz en destino. A este proceso le dio el nombre de análisis y resíntesis del paso de banda de la voz.

Sus teorías las llevó a la práctica con un prototipo al que llamó Vocoder (Voice Coder o ‘Codificador de voz’). Con el tiempo, el vocoder evolucionó a un diseño más viable comercialmente y se le cambió el nombre por el de Voder. Este equipo se mostraría en la Feria Mundial de Nueva York de 1939.

El Voder nunca tuvo un éxito comercial, entre otras cosas, porque la idea de transformar las conversaciones telefónicas de la gente en murmullos robóticos no le pareció atractiva a los ejecutivos de las compañías telefónicas. No obstante, los militares descubrieron que este sistema facilitaba el cifrado de las comunicaciones, con lo que durante la segunda guerra mundial desarrollaron una versión digital (1942) que sería utilizada para establecer comunicaciones cifradas entre Roosevelt y Churchill.

Estándares de codificación de la voz o codec

Desde que Alec H. Reeves tuviera la idea de digitalizar la señal de la voz en 1937, se han ido desarrollando sistemas de codificación de la voz cada vez más eficientes y eficaces. Desde un principio, el objetivo ha sido el mismo: conseguir un sistema que ofrezca una mayor calidad de sonido con un menor ancho de banda. El tiempo y el esfuerzo de muchos investigadores y entidades han propiciado que esta marca se superara una y otra vez. Sin embargo, este esfuerzo resultaría banal si el mercado no se hubiera puesto de acuerdo en utilizar sistemas compatibles entre sí.

El organismo regulador que ha jugado el papel más destacado con los codecs de voz ha sido la Unión Internacional de Telecomunicaciones, sector de normalización de las telecomunicaciones, más conocida como UIT-T o por sus siglas en inglés ITU-T.

Comparación de formatos estándar de codec
Comparación de formatos estándar de codec

A diferencia de las redes telefónicas tradicionales, formadas por operadores interconectados donde cada uno de ellos controla su red de forma absoluta, Internet está formada por proveedores de red interconectados sobre los que otros proveedores ofrecen servicios. Esto hace que el trabajo de regulación sea más complicado si cabe. Por ejemplo, una particularidad que se puede dar con la VoIP es que una misma comunicación de voz se vea sometida a distintas codificaciones en cascada. El resultado es que la calidad será peor que la del peor de los tramos.

Otra particularidad de los codecs es que están optimizados para reproducir el habla, sin embargo, a veces se necesita transmitir otro tipo de información sonora distinta de la voz. Piénsese, por ejemplo, en sonido ambiente o música. En estos casos, los proveedores de servicio suelen buscar alternativas que garanticen la calidad y no limiten, en lo posible, los servicios a los que los usuarios de las redes telefónicas tradicionales estamos acostumbrados.

Las recomendaciones de la UIT-T que se ocupan de normalizar la codificación de la voz son las de la serie G.700.

G.711. PCM

En 1937, el mencionado Alec Harley Reeves, un brillante ingeniero británico que trabajaba en Francia para la International Western Electric Company desarrolló la idea de digitalizar la señal de voz para evitar los ruidos y distorsiones a las que se ven sometidas las comunicaciones analógicas. El resultado fue la técnica de codificación de la voz conocida como PCM (Pulse Code Modulation, ‘Modulación por codificación de pulsos’). Como, por otro lado, las comunicaciones analógicas podían ser interceptadas fácilmente, las primeras aplicaciones de este sistema de audio digital fueron militares. No obstante, la codificación PCM no se haría popular hasta los años 60, después de la invención del transistor. El sistema de digitalización PCM quedaría normalizado por el UIT-T con el modelo G.711, publicado en 1972.

Curiosamente, Reeves, quien también es considerado precursor del radar, se interesó también por las comunicaciones paranormales, como la telepatía o las comunicaciones con el más allá; pero en este campo no consiguió avances.

PCM es un codec de forma de onda que utiliza una velocidad de muestreo de 8.000 Hz. Aunque en un principio utilizaba una cuantificación uniforme de 12 bits por muestra, lo que produce un ancho de banda de 96 Kbps, posteriormente se desarrollaron distintos tipos de cuantificaciones no uniformes que sólo necesitan 8 bits por muestra, lo que nos lleva a un ancho de banda de 64 Kbps.

G.711 utiliza una cuantificación no uniforme en dos variantes:

  • Ley μ (Ley mu). Utilizada, fundamentalmente, en Estados Unidos y Japón.
  • Ley A. Propuesta por K. Cattermole en 1962 y utilizada en Europa y el resto del mundo.

Lo que diferencia a estas dos variantes es la forma de realizar la cuantificación.

Curvas de compresión/expansión
Curvas de compresión/expansión

G.726. PCM diferencial y adaptativo

Como se ha visto, e sistema PCM transmite muestras individuales para reconstruir en destino la forma de onda original. Este sistema no considera ningún tipo de relación entre muestras consecutivas. No obstante, el hecho es que la señal de la voz va evolucionando de forma suave. Esto quiere decir que si se tienen en cuenta las últimas muestras, se puede predecir, aproximadamente, el valor que va a tener la muestra siguiente. Por tanto, bastará con transmitir la diferencia entre el valor calculado y el valor real de la muestra para que en el destino puedan reconstruir la señal original. Como en el otro extremo se utiliza el mismo modelo de predicción, al recibir el valor de la diferencia se consigue reproducir la señal original.

La gran ventaja de esta técnica es que la información que se necesita transmitir es mínima, reduciéndose significativamente el ancho de banda necesario (se queda en un 25% comparado con PCM).

Esta técnica se conoce como PCM diferencial o DPCM (Differential PCM o ‘PCM diferencial’).

Por otro lado, en la idea de reducir aún más el ancho de banda necesario se pensó que los parámetros de predicción se podrían ir adaptando (modificando según los resultados que se van obteniendo) para minimizar el error de predicción. Como en ambos extremos se utiliza el mismo modelo de predicción, se consigue el mismo resultado pero con menos información que transmitir. A esta técnica se la conoce como DPCM adaptativo o ADPCM.

El sistema ADPCM está recogido en el estándar G.721 de la UIT-T. Con este estándar se consigue un canal de voz con calidad similar a G.711 utilizando tan sólo 32 Kbps. G.721 fue sustituido en 1984 por G.726, el cual utiliza canales de 16, 24, 32 y 40 Kbps con diferentes niveles de calidad.

Tanto los sistemas DPCM y ADPCM son del tipo codec de forma de onda.

G.728. LD-CELP

A principio de los años 80 empezaron a aparecer los primeros codecs híbridos. Este es el caso de los sistemas de codificación de la voz conocidos como AbS (Analysis by Synthesis, ‘Análisis por síntesis’), los cuales se basan en utilizar una lista de modelos de señal de forma que sólo tienen que transmitir al destino el código de identificación del modelo que le va correspondiendo a cada muestra de señal.

El primer sistema AbS apareció en 1982 y se conoce como MPE (Multi-Pulse Excited, ‘Excitación multipulso’). En 1986 aparecería una variante conocida como RPE (Regular-Pulse Excited, ‘Excitación de pulso regular’), utilizada por el sistema europeo de telefonía móvil GSM (Global System for Mobile communications, ‘Sistema global para las comunicaciones móviles’), consiguiendo una alta calidad de voz con tan sólo 13 Kbps. A este sistema se lo conoce como GSM-FR (GSM Full rate, ‘GSM de velocidad completa’).

Comparación de los distintos codecs
Comparación de los distintos codecs

El inconveniente de los sistemas MPE y RPE es que no pueden mantener una buena calidad de voz a velocidades inferiores a 10 Kbps. Este inconveniente fue superado por un nuevo codec conocido como CELP (Code-Excited Linear Predictive, ‘Predicción lineal con excitación por código’).

La recomendación UIT-T G.728 describe una modalidad del sistema CELP conocida como LD-CELP (Low-Delay CELP, ‘CELP de bajo retardo’). G.728 agrupa cinco muestras de voz para determinar mejor el vector del libro de códigos que le corresponde. Este proceso de análisis genera un retardo adicional de menos de un milisegundo, de ahí el nombre.

LD-CELP utiliza un libro de códigos de 1.024 entradas, por lo que el índice del libro de códigos sólo necesita 10 bits (RPE utiliza 47 bits). Como G.728 toma 8.000 muestras por segundo y envía 10 bits por cada 5 muestras, el ancho de banda necesario es de 16 Kbps. La calidad de voz conseguida es 3,9 MOS.

El gran inconveniente del sistema G.728 es que necesita procesadores potentes que sean capaces de llevar a cabo el análisis necesario, lo que hace que raramente sea utilizado debido a su mayor coste.

G.723.1. ACELP y MP-MLQ

En la carrera por conseguir disminuir el ancho de banda necesario manteniendo unos buenos niveles de calidad, en 1995 se publicó el nuevo estándar G.723.1 que consigue velocidades de 6,3 y 5,3 Kbps con calidades de voz 3,8 y 3,5 respectivamente.

Estos sistemas de codificación de la voz realizan 8.000 muestras por segundo que cuantifican con 16 bits. A continuación toman cuatro grupos de 60 muestras (3.840 bits) para determinar los coeficientes de predicción apropiados. Los parámetros que identifican el modelo del libro de códigos utilizado se envían de acuerdo a estos dos sistemas:

  • MP-MLQ (Multipulse Maximum Likelihood Quantization, ‘Cuantificación multipulso de máxima probabilidad’). Consigue un ancho de banda de 6,4 Kbps enviando la información comprimida en tramas de 192 bits (8.000 x 16 x 192 / 3.840 = 5.333).
  • ACELP (Algebraic Code-Excited Linear Prediction, ‘Predicción lineal con excitación por código algebraico’). Consigue reducir el ancho de banda necesario a 5,3 Kbps al enviar la información comprimida en tramas de 160 bits (8.000 x 16 x 160 / 3.840 = 5.333). Lo que aporta ACELP es que las entradas del libro de códigos ya no vienen dadas por un conjunto de valores que definen la forma de onda, sino que dichas formas de onda se representan por ecuaciones algebraicas.

Adicionalmente, G.723.1 utiliza un sistema de supresión del silencio conocido como SID (Silence Insertion Description, ‘Descripción de la inserción de silencio’). Este sistema solo necesita transmitir 4 octetos, por lo que el silencio sólo ocupa 1 Kbps.

Técnicas de codificación de la voz
Técnicas de codificación de la voz

El inconveniente de los sistemas G.723.1 es el gran retardo total que genera (superior a 37,5 milisegundos), debido, entre otras cosas al tiempo necesario para llevar a cabo el análisis (7,5 milisegundos). Las calidades conseguidas con este codec están en torno a los 3,8 MOS. No obstante, en enlaces que añadan retardos excesivos los niveles de calidad bajan tremendamente. A pesar de todo, este tipo de codificación resulta muy interesante en aplicaciones que disponen de muy poco ancho de banda.

G.729. CS-ACELP

Otras de las líneas de trabajo que se han seguido para reducir el ancho de banda necesario ha sido el sistema de codificación de la voz conocido como CS-ACELP (Conjugate Structure ACELP, ‘ACELP con estructura conjugada’). Con este sistema se consigue que el ancho de banda necesario sea de 8 Kbps. Para ello se toman 8.000 muestras por segundo y se identifican los parámetros de predicción y modelo del libro de códigos con cada grupo de 80 muestras. Al destino se envían tramas de 80 bits por cada grupo. El resultado es 8 Kbps (8.000×80/80).

CS-ACELP utiliza dos libros de códigos: uno fijo y otro adaptable. El primero de ellos contiene formas de onda preestablecidas, mientras que el segundo contiene formas de onda que se van adaptando a las señales que se van reconstruyendo. El resultado es una mayor calidad de voz. Para el cálculo de los parámetros de predicción no sólo se utiliza el grupo de 80 muestras (10 milisegundos), sino que también se tienen en cuenta las muestras de los 5 milisegundos siguientes. El retardo del algoritmo es 15 milisegundos.

El estándar G.729 de UIT-T se basa en este sistema. Posteriormente se publicarían distintas mejoras: G.729A (MOS 3,7), G.729B (que le saca mayor eficiencia a los periodos de silencio), G.729D (que trabaja a 6,4 Kbps con MOS 3,8) y G.729E (utiliza 11,8 Kbps pero ofrece una mayor calidad de voz).

Otros codificadores de voz

Aparte de los codecs normalizados descritos anteriormente, en el mercado se han desarrollado otro tipo de codecs que han sido utilizados, fundamentalmente, para los sistemas de telefonía móvil digital. Este es el caso, por ejemplo, de los sistemas siguientes:

  • CDMA QCELP (Qualcom CELP, IS-733). Se trata de un codificador de velocidad variable que se utiliza en los sistemas de telefonía móvil del tipo CDMA (IS-95). Aunque QCELP puede funcionar a distintas velocidades, las más comunes son 6,2 y 13,3 Kbps.
  • GSM EFR (Enhanced FR, ‘FR mejorado’). Este sistema, utilizado como alternativa al original FR se basa en la técnica ACELP, trabaja a 12.200 bps (FR lo hacía a 13.000 bps) y ofrece una mejor calidad que FR.
  • GSM AMR (Adaptative Multi-Rate, ‘Multivelocidad adaptable’). Se trata de un sistema que puede trabajar en 8 modos distintos con velocidades que van desde 4,75 a 12,2 Kbps. Cuando opera a 12,2 se trata del sistema EFR. El sistema puede cambiar de un modo a otro cada 20 milisegundos para adaptarse a las condiciones del entorno. El sistema AMR es utilizado para la telefonía móvil de tercera generación.

Más información sobre la codificación de la voz y VoIP

Si te interesa el tema de la transmisión de la voz por IP, puedes consultar las siguientes publicaciones:

REF: VOIP PG45

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *