La codificación Code Excited Linear Prediction ( CELP ) es un algoritmo de codificación de voz propuesto originalmente por Manfred Schroeder y B. S. Atal en 1985. En ese momento, el algoritmo proporcionaba una calidad significativamente mejor que los algoritmos de baja tasa de bits existentes , como los códecs de audio RELP y LPC (p. ej . , FS-1015 ). Junto con variantes como ACELP , RCELP , LD-CELP y VSELP , es el algoritmo de codificación de voz más utilizado en la actualidad. CELP se usa actualmente como un término general para una clase de algoritmos en lugar de un códec específico .
El algoritmo CELP se basa en cuatro ideas principales:
El algoritmo original de Schroeder y Atal en 1983, cuando se ejecutó en la supercomputadora Cray I, requirió 150 segundos para codificar una señal de voz de 1 segundo. Con el advenimiento de formas más eficientes de implementar tablas de códigos y la mejora de las capacidades computacionales, se ha hecho posible ejecutar el algoritmo en dispositivos integrados como los teléfonos móviles.
Antes de explorar el complejo proceso de codificación CELP, veamos cómo funciona un decodificador. La ilustración describe el decodificador universal CELP. La excitación se realiza mediante la suma de las contribuciones de la tabla de códigos adaptativa (de lo contrario, reloj ) y la tabla de códigos fija (de lo contrario, estocástica):
donde es la contribución del libro de códigos adaptativo (reloj) y es la contribución del libro de códigos fijo (estocástico). Un libro de códigos fijo es un diccionario de cuantificación vectorial que está (implícita o explícitamente) codificado en un códec. Este libro de códigos puede ser ACELP algebraico o almacenarse explícitamente (por ejemplo, Speex ). Las entradas en el libro de códigos adaptativo consisten en versiones retardadas de la excitación. Esto hace posible codificar eficientemente señales periódicas como el habla humana.
El filtro que genera la excitación tiene todos los polos del modelo en la forma Este filtro es aplicable no solo porque utiliza todos los polos, sino también porque es fácil de calcular y es una buena representación de la voz humana.
El principio básico detrás de CELP se llama (Absoluto) "Análisis por Síntesis", lo que significa que la codificación (análisis) se realiza perceptualmente, optimizando la señal decodificada en un circuito cerrado. En teoría, el mejor flujo CELP se produciría combinando todos los conjuntos de caracteres binarios posibles y eligiendo el que produce la señal decodificada con mejor sonido. Obviamente, esto no es posible por dos razones: la complejidad de la implementación está más allá de cualquier hardware actualmente disponible, y el criterio de selección del "mejor sonido" implica un ser humano como oyente.
Para implementar la codificación en tiempo real utilizando recursos informáticos limitados, la búsqueda CELP se divide en búsquedas secuenciales más pequeñas y manejables utilizando una función de ponderación perceptual simple. Por lo general, la codificación se realiza en el siguiente orden:
La mayoría (si no todos) los códecs de audio modernos intentan moldear la distorsión en la codificación para que aparezca principalmente en aquellas regiones de frecuencia donde el oído humano no puede captarla. Por ejemplo, el oído es más tolerante a la distorsión en partes del rango de audio que son más fuertes y viceversa. Por eso, en lugar de minimizar el error cuadrático, CELP minimiza los errores en la región ponderada. El resultado de ponderación en la curva W(z) generalmente se deriva del filtro LKP a través de la extensión del ancho de banda :
donde _
de compresión | métodos|||||||
---|---|---|---|---|---|---|---|
Teoría |
| ||||||
sin pérdidas |
| ||||||
Audio |
| ||||||
Imágenes |
| ||||||
Video |
|