La predicción lineal con excitación de 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, proporcionaba una calidad significativamente mejor que los algoritmos existentes de baja tasa de bits, como el residuo predicción -excited lineal (RELP) y predictiva lineal de codificación (LPC) vocoders (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, es actualmente el algoritmo de codificación de voz más utilizado [ cita requerida ] . También se utiliza en la codificación de voz MPEG-4 Audio . CELP se usa comúnmente como un término genérico para una clase de algoritmos y no para un códec en particular.
Introducción
El algoritmo CELP se basa en cuatro ideas principales:
- Usar el modelo de filtro de fuente de producción de voz a través de la predicción lineal (LP) (consulte el libro de texto "algoritmo de codificación de voz");
- Usar un libro de códigos fijo y adaptativo como entrada (excitación) del modelo LP;
- Realización de una búsqueda en bucle cerrado en un "dominio ponderado perceptualmente".
- Aplicación de cuantificación vectorial (VQ)
El algoritmo original, simulado en 1983 por Schroeder y Atal, requería 150 segundos para codificar 1 segundo de voz cuando se ejecutaba en una supercomputadora Cray-1 . Desde entonces, las formas más eficientes de implementar los libros de códigos y las mejoras en las capacidades informáticas han hecho posible ejecutar el algoritmo en dispositivos integrados, como teléfonos móviles.
Decodificador CELP

Antes de explorar el complejo proceso de codificación de CELP, presentamos el decodificador aquí. 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 tono):
dónde 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 retardadas de la excitación. Esto hace posible codificar de manera eficiente señales periódicas, como los sonidos sonoros.
El filtro que da forma a la excitación tiene un modelo de todos los polos de la forma , dónde 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 principal detrás de CELP se llama 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 está más allá de cualquier hardware disponible actualmente y el criterio de selección de "mejor sonido" implica un oyente humano.
Para lograr 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 más manejables utilizando 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, generalmente como pares espectrales de línea (LSP).
- Se busca en el libro de códigos adaptativo (tono) y se elimina su contribución.
- Se busca en el libro de códigos fijo (innovación).
Ponderación de ruido
La mayoría (si no todos) los códecs de audio modernos intentan dar forma al ruido de codificación para 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) se deriva típicamente del filtro LPC mediante el uso de la expansión del ancho de banda :
dónde .
Ver 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, no. 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, Habla y Procesamiento de Señales (ICASSP), vol. 10, págs. 937–940, 1985.
enlaces externos
- Este artículo está basado en un documento presentado en Linux.Conf.Au
- Algunas partes basadas en el manual del códec Speex
- implementaciones de referencia de CELP 1016A (CELP 3.2a) y LPC 10e.
- 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