La predicción lineal excitada por código ( CELP ) es un algoritmo de codificación de voz predictiva lineal propuesto originalmente por Manfred R. Schroeder y Bishnu S. Atal en 1985. En ese momento, proporcionó una calidad significativamente mejor que los algoritmos de baja tasa de bits existentes, como la predicción lineal excitada por residuo (RELP) y los vocoders de codificación predictiva lineal (LPC) (por ejemplo, FS-1015 ). Junto con sus variantes, como CELP algebraico , CELP relajado , CELP de bajo retardo y predicción lineal excitada por suma vectorial , actualmente es el algoritmo de codificación de voz más utilizado [ cita requerida ] . También se utiliza en la codificación de voz de audio MPEG-4 . CELP se usa comúnmente como un término genérico para una clase de algoritmos y no para un códec en particular.
Fondo
El algoritmo CELP se basa en cuatro ideas principales:
- Utilizando el modelo de filtro de fuente de producción de voz a través de predicción lineal (LP) (ver el libro de texto "Algoritmo de codificación de voz");
- Utilizando un libro de códigos adaptativo y uno fijo como entrada (excitación) del modelo LP;
- Realizar una búsqueda en bucle cerrado en un “dominio ponderado perceptualmente”.
- Aplicación de la cuantificación vectorial (VQ)
El algoritmo original simulado en 1983 por Schröder y Atal requería 150 segundos para codificar 1 segundo de voz cuando se ejecutaba en una supercomputadora Cray-1 . Desde entonces, formas más eficientes de implementar los libros de códigos y mejoras en las capacidades de computación han hecho posible ejecutar el algoritmo en dispositivos integrados, como teléfonos móviles.
Descodificador CELP

Antes de explorar el complejo proceso de codificación de CELP, presentamos aquí el decodificador. La Figura 1 describe un decodificador CELP genérico. La excitación se produce sumando las contribuciones de los libros de códigos fijos (también conocidos como estocásticos o de innovación) y adaptativos (también conocidos como de tono):
donde es la contribución del libro de códigos fijo (también conocido como estocástico o de innovación) y es la contribución del libro de códigos adaptativo ( tono ). El libro de códigos fijo es un diccionario de cuantificación vectorial que está (implícita o explícitamente) codificado en el códec. Este libro de códigos puede ser algebraico ( ACELP ) o almacenarse explícitamente (por ejemplo, Speex ). Las entradas en el libro de códigos adaptativo consisten en versiones retrasadas de la excitación. Esto hace posible codificar de manera eficiente señales periódicas, como sonidos vocales.
El filtro que modela la excitación tiene un modelo de todos los polos de la forma , donde se denomina filtro de predicción y se obtiene mediante predicción lineal ( algoritmo de Levinson-Durbin ). Se utiliza un filtro de todos los polos porque es una buena representación del tracto vocal humano y porque es fácil de calcular.
Codificador CELP
El principio fundamental del CELP se denomina análisis por síntesis (AbS) y significa que la codificación (análisis) se realiza optimizando perceptualmente la señal decodificada (síntesis) en un bucle cerrado. En teoría, el mejor flujo CELP se produciría probando todas las combinaciones de bits posibles y seleccionando la que produzca la señal decodificada con el mejor sonido. Obviamente, esto no es posible en la práctica por dos razones: la complejidad requerida supera cualquier hardware disponible actualmente y el criterio de selección de “mejor sonido” implica un oyente humano.
Para lograr una 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 mediante una función de ponderación perceptual simple. Normalmente, la codificación se realiza en el siguiente orden:
- Los coeficientes de predicción lineal (LPC) se calculan y cuantifican, normalmente como pares espectrales de líneas (LSP).
- Se busca el libro de códigos adaptativo (de tono) y se elimina su contribución.
- Se busca el libro de códigos fijo (innovación).
Ponderación de ruido
La mayoría de los códecs de audio modernos (si no todos) intentan moldear el ruido de codificación de modo que aparezca principalmente en las regiones de frecuencia donde el oído no puede detectarlo. Por ejemplo, el oído es más tolerante al ruido en partes del espectro que son más fuertes y viceversa. Es por eso que, en lugar de minimizar el error cuadrático simple, CELP minimiza el error para el dominio ponderado perceptualmente . El filtro de ponderación W(z) generalmente se deriva del filtro LPC mediante el uso de expansión de ancho de banda :
dónde .
Véase también
- MPEG-4 Parte 3 (CELP como tipo de objeto de audio MPEG-4)
- G.728 – Codificación de voz a 16 kbit/s utilizando predicción lineal excitada por código de bajo retardo
- G.718 : utiliza CELP para las dos capas inferiores de la banda (50–6400 Hz) en una estructura de codificación de dos etapas
- G.729.1 – utiliza codificación CELP para la banda inferior (50–4000 Hz) en una estructura de codificación de tres etapas
- Comparación de formatos de codificación de audio
- CELT es un códec de audio relacionado que toma prestadas algunas ideas de CELP.
Referencias
- BS Atal, "La historia de la predicción lineal", IEEE Signal Processing Magazine , vol. 23, núm. 2, marzo de 2006, págs. 154-161.
- MR Schroeder y BS Atal, "Predicción lineal excitada por código (CELP): voz de alta calidad a velocidades de bits muy bajas", en Actas de la Conferencia Internacional IEEE sobre Acústica, Voz y Procesamiento de Señales (ICASSP), vol. 10, págs. 937–940, 1985.
Enlaces externos
- Este artículo se basa en un artículo presentado en Linux.Conf.Au
- Algunas partes se basan en el manual del códec Speex
- Implementaciones de referencia de CELP 1016A (CELP 3.2a) y LPC 10e. Archivado el 12 de diciembre de 2016 en Wayback Machine.
- Codificación predictiva lineal (LPC)
Lecturas seleccionadas
- Introducción a la codificación CELP
- Procesamiento del habla: teoría del análisis y síntesis de LPC Archivado el 15 de junio de 2014 en Wayback Machine