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 aquel entonces, ofrecía una calidad significativamente superior a la de los algoritmos existentes de baja tasa de bits, como la predicción lineal excitada por residuos (RELP) y los vocoders de codificación predictiva lineal (LPC) (por ejemplo, FS-1015 ). Junto con sus variantes, como CELP algebraica , CELP relajada , CELP de baja latencia y predicción lineal excitada por suma vectorial , es actualmente el algoritmo de codificación de voz más utilizado . También se emplea en la codificación de voz de audio MPEG-4 . CELP se usa comúnmente como 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 fuente-filtro de producción del habla a través de la predicción lineal (PL) (véase el libro de texto "algoritmo de codificación del habla");
- 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 cuantización vectorial (VQ)
El algoritmo original, simulado en 1983 por Schroeder y Atal, requería 150 segundos para codificar 1 segundo de voz en una supercomputadora Cray-1 . Desde entonces, métodos más eficientes para implementar los diccionarios de códigos y mejoras en la capacidad de procesamiento han permitido 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 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 llamados estocásticos o de innovación) y adaptativos (también llamados de paso):
dóndees la contribución del libro de códigos fijo (también conocido como estocástico o de innovación) yes la contribución del diccionario de códigos adaptativo ( tono ). El diccionario de códigos fijo es un diccionario de cuantización vectorial que está (implícita o explícitamente) codificado en el códec. Este diccionario de códigos puede ser algebraico ( ACELP ) o almacenarse explícitamente (por ejemplo, Speex ). Las entradas en el diccionario de códigos adaptativo consisten en versiones retardadas de la excitación. Esto permite codificar de manera eficiente señales periódicas, como sonidos sonoros.
El filtro que da forma a la excitación tiene un modelo de polos completos de la forma, dóndeSe denomina filtro de predicción y se obtiene mediante predicción lineal ( algoritmo de Levinson-Durbin ). Se utiliza un filtro de polos porque representa adecuadamente el tracto vocal humano y porque es fácil de calcular.
Codificador CELP
El principio fundamental de CELP se denomina análisis por síntesis (AbS) y consiste en que la codificación (análisis) se realiza optimizando perceptualmente la señal decodificada (síntesis) en un bucle cerrado. En teoría, la mejor señal CELP se obtendría probando todas las combinaciones de bits posibles y seleccionando la que produzca la señal decodificada con 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 la participación de 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 manejables mediante una función de ponderación perceptiva 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 (de tono) y se elimina su contribución.
- Se consulta el libro de códigos fijo (de innovación).
ponderación de ruido
La mayoría (si no todos) los códecs de audio modernos intentan moldear el 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 tolera mejor el ruido en las partes del espectro que son más fuertes y viceversa. Por eso, en lugar de minimizar el simple error cuadrático, 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 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 mediante predicción lineal excitada por código de baja latencia
- 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.º 2, marzo de 2006, págs. 154-161.
- MR Schroeder y BS Atal, "Predicción lineal excitada por código (CELP): habla de alta calidad a tasas 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 se basa en una ponencia presentada 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 LPC. Archivado el 15 de junio de 2014 en Wayback Machine.
- Códecs de voz
- Compresión de datos