Técnicas de Compresión de Datos: Modelo de

Anuncio
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.
Descargar