Técnicas de Compresión de Datos: La técnica más simple de codificar es PCM. Con ella se logra transmitir voz digital a una velocidad de 64Kbps (8bits/muestra, 8000 muestras/segundo). En algunas aplicaciones, como la transmisión de voz en sistemas celulares es necesario tratar de reducir el número de bits que produce el codificador. Así comienzan a desarrollarse técnicas llamadas de compresión para lograr este propósito. Entre ellas DPCM y DM que acabamos de estudiar. Para tener una visión mas amplia de otras técnicas de compresión de datos, a continuación se muestra un árbol de clasificación de las mismas. En el curso de Comunicaciones I conocimos Run-length, Huffman, Lempel-ZivWelch las cuales se enmarcan en el grupo de métodos que comprimen y permiten una recuperación sin pérdidas. También se presentaron PCM, DPCM y PCM las cuales se conocen como técnicas basadas en la codificación de la forma de onda temporal. Queremos concluir este curso con una revisión de algunas otras técnicas a fin de tener una visión mas completa. En la mayoría de los casos estas técnicas se aplican a voz por lo que comenzaremos revisando algunos conceptos básicos sobre la generación de la voz humana y sus características mas relevantes. Modelo de desarrollo de la voz La voz humana se produce cuando se exige al aire salir desde los pulmones, a través de las cuerdas vocales y a lo largo del tracto vocal. Simultáneamente, las cuerdas vocales vibran produciendo energía que se convierte en voz. La voz es una señal noestacionaria y puede ser considerada como cuasi-estacionaria en segmentos de entre 5 y 20ms. La señal de voz se puede clasificar en: en voiced (sonoras), unvoiced (fricativas , no sonoras o sordas como algunas consonantes por ejemplo la s y la f) y mixtas. Las vocalizadas son cuasiperiódicas mientras que las no vocalizadas lucen bastante aleatorias. A continuación puede verse un ejemplo: Además la energía de los segmentos vocalizados es generalmente superior a los no vocalizados. Los sonidos vocalizados se producen por la vibración de las cuerdas vocales; en los no vocalizados no se presenta vibración de las cuerdas vocales sino que mas bien se deben al aire que sale de los pulmones y luego es moderado por los dientes y los labios. Cuantificación vectorial: Una variación sobre la señal PCM para lograr reducir el número de bits a transmitir es cambiar el cuantificador que se ha visto hasta ahora el cual toma cada muestra de la señal y las cuantifica uniforme o no uniformemente. Esto se llama cuantificación escalar. La teoría demuestra que esta no es la forma más eficiente de cuantificar ya que se desperdicia la conexión que pueden tener bloques de muestras. Por ejemplo si se reúnen bloques de N muestras, se les puede asignar un bloque de salida dependiendo de su ubicación en un espacio N-dimensional. Por ejemplo, si N=2, tendríamos un espacio bidimensional como el que se ilustra a continuación. La idea es la siguiente: se divide el plano en diversas zonas, equivalentes a lo que eran los niveles de cuantificación escalares; una vez ubicado el bloque o vector de entrada en una determinada zona, se sustituye su valor por lo que se conoce como el centroide. Este valor representará todos los vectores que caigan en esa zona La cuantificación vectorial ofrece mejores resultados que la cuantificación escalar, sin embargo, es más sensible a los errores de transmisión y lleva consigo una mayor complejidad computacional. Clasificación de los codificadores de voz Los codificadores de voz se clasifican en tres grandes grupos, a saber: 1. Codificadores de la forma de onda: Tratan de reproducir la señal en el dominio de la frecuencia o en el dominio del tiempo. Ofrecen una alta calidad de voz a tasas medias, (del orden de 32 kb/s). Sin embargo, no son útiles cuando se quiere codificar a tasas bajas. Entre los codificadores de forma de onda temporal se encuentran PCM, DPCM y DM. Por otra parte existen los codificadores de forma de onda en el dominio de la frecuencia. Estos codificadores dividen la señal en bandas de frecuencia y las codifican de manera independiente. Esto permite asignar diferente número de bits a cada banda de frecuencia. Por ejemplo, el esquema siguiente presenta un caso de codificación por subbandas: Se separa la señal en bandas, se realiza una decimación (eliminación de muestras) y luego se codifica el contenido de cada banda usando algún sistema de codificación como los de tiempo. Se puede, por ejemplo asignar mas bits a zonas de frecuencia mas importante y menos bits a las menos importantes. El ruido de cuantificación producido queda confinado a cada una de las bandas. Una aplicación de esto es en teleconferencias. También existe la codificación por transformada siendo la Transformada Coseno Discreta (relacionada con la transformada de Fourier) la mas usada porque produce una gran compactación espectral. Se realiza la transformada Coseno de la señal y luego se codifican los coeficientes resultantes en el dominio de la frecuencia. En el receptor se antitransforman estos coeficientes produciendo una señal muy parecida a la original. La transformada Coseno de una secuencia discreta se calcula como: Esto se usa en estándares de compresión de audio e imágenes (MPEG) 2. Vocoders: Se basan en modelos de generación de la voz; en el transmisor se analiza la voz, se extraen los parámetros del modelo y esto es lo que se almacena o envía y en el receptor, en base a estos parámetros, se reconstruye la señal de voz. Producen inteligibilidad a bajas tasas pero la voz no suena natural. Los Vocoder usan el siguiente modelo para representar la generación de la voz: El sistema se compone de un filtro variable en el tiempo, un generador de ruido aleatorio y de un generador de impulsos. Los parámetros del filtro varían en función de la acción consciente que se realiza al pronunciar una palabra. El modelo tiene dos entradas, que dependen del tipo de señal. Para señales sonoras (vocales) la excitación es un tren de impulsos de frecuencia controlada, mientras que para las señales no sonoras (consonantes) la excitación es ruido aleatorio. El Vocoder por predicción lineal modela los parámetros del tracto vocal como un filtro de puros polos que se le conoce como filtro LPC (Linear Predictive Coding); este nombre se debe a que un filtro como el mostrado supone que cada muestra es una combinación lineal de las muestras pasadas. s(n ) = ∑ a k s(n − k ) + Ge(n ) H(z ) = σ p 1 + ∑ a k z −k k =1 Los coeficientes del filtro se calculan de forma de minimizar la potencia del error entre la muestra actual y su predicción. Este modelo aplica en cortos intervalos de la voz donde se asume estacionaridad de la señal de voz. Los parámetros se obtienen, como se dijo anteriormente, al minimizar la potencia del error de predicción. Una vez obtenido los parámetros, estos son enviados previamente cuantificados junto con el tipo de excitación que aplica, la ganancia, etc. En el receptor se aplica el modelo para regenerar la señal de voz original. Este vocoder permite obtener tasa del orden de 2.4Kbps. 3. Codificadores Híbridos: En este grupo se ubican codificadores que combinan técnicas de los dos grupos anteriores para tratar de, a tasa no muy altas (8Kbps), obtener mejor calidad que con los vocoders. Es decir combinan la sencillez de los Vocoders con la capacidad que tienen los codificadores de forma de onda de lograr buena calidad. En estos codificadores, las muestras de la señal de entrada se dividen en bloques de muestras (vectores) que son procesados secuencialmente. Llevan a cabo una representación paramétrica de la señal de voz (como los vocoders) pero tratan de que la señal suene menos artificial para esto tratan de seleccionar mejor la excitación que alimenta al sistema de generación de la voz. La diferencia básica entre los diferentes codificadores híbridos es la forma como seleccionan y codifican la excitación del modelo de generación de voz. Por ejemplo: -En RELP (Regular Excited Linear Prediction) la excitación es una serie de pulsos regularmente espaciados, 10 pulsos cada 5ms. Se asignan de 3 a 4 bits por pulso. Este es usado en GSM y se obtiene una tasa de 13 Kbps -En CELP (Coded Excited Linear prediction) la excitación se toma de un Codebook o Diccionario almacenado tanto en el transmisor como en el receptor en base al resultado de minimizar la potencia del error perceptual que no es mas que el error de predicción pasado por un filtro perceptual. La idea de este filtro es atenuar las componentes frecuenciales menos importantes para el oído y acentuar aquellas importantes. Con el error perceptual se buscan en los diccionarios las ganancias y la excitación mas apropiada. La excitación luego es cuantificada vectorialmente. Los codificadores CELP usan dos predictores: uno corto y uno largo para determinar la peridiodicidad en el caso de trozos sonoros(voiced) de la voz. La excitación trata de actualizarse cada 5ms. El empeño por representar mejor la excitación del modelo de generación de voz resulta conveniente para darle a la voz un sonido mas natural. - El codificador VSELP (Vector Sum Excited Linear Prediction) emplea dos cuantificadores VQ sumados como excitación al modelo de generación de la voz. A continuación se explicará en un poco mas de detalle el algoritmo RPE usado en las comunicaciones móviles GSM. En el se convierte una señal PCM de 64kbps en una secuencia de 13kbps. La trama o segmento de voz de entrada consta de 160 muestras de señal. A estas muestras se le aplica un preprocesado y posteriormente se pasan por un filtro de primer orden de preénfasis. La salida obtenida se analiza para obtener los coeficientes del filtro de retardo corto, STP (análisis LPC; Short Time Predictor). Estos parámetros se utilizan para filtrar las 160 muestras. Los coeficientes del filtro, llamados coeficientes de reflexión r(i), se transforman en unos coeficientes, llamados LAR LAR(i)=log10( (1+r(i)) /(1-r(i)) ), antes de transmitirlos. Para las operaciones siguientes, el segmento de voz se subdivide en 4 sub-segmentos con 40 muestras de la señal residuo del filtro de retardo corto cada uno. El siguiente paso es calcular los parámetros del filtro de retardo largo (LTP; long Time Predictor), el pitch (retardo del filtro LTP) y la ganancia, en la etapa de análisis LTP. El bloque resultante de 40 muestras pasa al bloque de análisis del residuo(RPE). Los parámetros RPE se utilizan en un decodificador local para reconstruir las 40 muestras de la versión cuantificada de la señal residuo del filtro LTP. Sumando estas muestras al bloque anterior del residuo STP estimado, se consigue una versión reconstruida de la señal residuo actual del filtro STP. Este bloque de señal residuo del filtro STP se pasa al bloque de análisis LTP para producir la nueva estimación de señal residuo STP que se va a utilizar en el siguiente sub-bloque, completando así el lazo de realimentación. En resumen se han generado parámetros del filtro STP, parámetros del filtro LTP y finalmente parámetros del analizador de residuo. Los diagramas de bloques del codificador y del decodificador simplificados se muestran a continuación: A continuación se muestran cronológicamente diferentes algoritmos de codificación de la voz y los organismos que los normalizaron y Para finalizar se presenta una tabla comparativa entre diferentes técnicas. Entre otras cosas se muestran las velocidades alcanzadas y el MOS (Mean Opinión Store) el cual es un criterio para determinar según los usuarios la calidad de la señal reconstruida. El MOS va entre 1 y 5 siendo 5 calidad excelente y 1 Mala calidad.