CELT ( Constrained Energy Lapped Transform ) es un formato de compresión de audio con pérdida , abierto y libre de regalías , y un códec de software libre con una latencia algorítmica especialmente baja para su uso en comunicaciones de audio de baja latencia . Los algoritmos están documentados públicamente y pueden utilizarse sin restricciones de patentes de software . El desarrollo del formato fue mantenido por la Fundación Xiph.Org (como parte de la familia de códecs Ogg ) y posteriormente coordinado por el grupo de trabajo Opus del Grupo de Trabajo de Ingeniería de Internet (IETF).
CELT fue diseñado para salvar la brecha entre Vorbis y Speex en aplicaciones donde se requiere audio de alta calidad y baja latencia. [ 1 ] Es adecuado tanto para voz como para música. Toma prestadas ideas del algoritmo CELP , pero evita algunas de sus limitaciones al operar exclusivamente en el dominio de la frecuencia . [ 1 ]
El formato CELT original e independiente se ha integrado en Opus . Por lo tanto, CELT como formato independiente ha quedado obsoleto. El desarrollo continúa únicamente para su versión híbrida, integrada en Opus con SILK . Este artículo describe el formato histórico e independiente; para la versión integrada y su evolución desde su incorporación a Opus, consulte el artículo sobre Opus.
Propiedades
La característica principal de CELT es su baja latencia algorítmica. Permite latencias típicas de 3 a 9 ms, pero se puede configurar para que sea inferior a 2 ms a costa de una mayor tasa de bits para lograr una calidad de audio similar. [ 2 ] CELT admite audio mono y estéreo y es aplicable tanto a voz como a música. Puede utilizar una frecuencia de muestreo de 32 kHz a 48 kHz o superior y una tasa de bits adaptativa de 24 kbit/s a 128 kbit/s por canal o superior. [ 2 ]
No se conocen problemas de propiedad intelectual relacionados con el algoritmo CELT, y su implementación de referencia se publica bajo una licencia de código abierto permisiva ( BSD de 2 cláusulas ). [ 1 ] [ 3 ]
Al igual que Vorbis , CELT es un códec de banda completa (que abarca todo el rango de audición humana ) de propósito general, es decir, no está especializado para tipos específicos de señales de audio y, por lo tanto, es diferente de su proyecto hermano , Speex . El formato permite obtener resultados transparentes a altas tasas de bits, así como una calidad muy decente a tasas de bits más bajas. En general, se dice que sus capacidades de compresión son significativamente superiores a las de MP3 , y como otra característica útil para aplicaciones en tiempo real como la telefonía, la calidad de audio de CELT a tasas de bits más bajas está incluso a la par con HE-AAC.v1, gracias al plegado de banda. [ 4 ] [ 5 ] En pruebas de escucha comparativas a doble ciego, demostró ser notablemente superior a HE-AACv1 a ~64 kbit/s. [ 6 ]
Tiene una complejidad computacional comparativamente baja que se asemeja a la de la variante de baja latencia de AAC (AAC-LD) y se mantiene significativamente por debajo de la complejidad de Vorbis. [ 7 ]
Permite una tasa de bits constante y variable . Si la señal se pierde entre el ruido de fondo durante las pausas del habla y situaciones similares, la transmisión se puede limitar para enviar ruido ambiental al decodificador. La mayoría de los ajustes del formato, que permite la transmisión en tiempo real, se pueden modificar sobre la marcha sin interrumpir la transmisión.
El formato es resistente a los errores de transmisión. La pérdida de paquetes completos, así como los errores de bits, pueden enmascararse mediante una degradación gradual de la calidad del audio ( ocultación de pérdida de paquetes , PLC).
Tecnología

CELT es un códec de transformación basado en la transformada discreta del coseno modificada (MDCT) y conceptos de CELP (con un libro de códigos para la excitación, pero en el dominio de la frecuencia).
La señal inicial codificada en PCM se procesa en bloques superpuestos relativamente pequeños para la MDCT ( función de ventana ) y se transforma en coeficientes de frecuencia. Elegir un tamaño de bloque especialmente corto permite, por un lado, una baja latencia, pero también conlleva una resolución de frecuencia deficiente que debe compensarse. Para reducir aún más el retardo algorítmico a costa de una ligera pérdida de calidad de audio, la superposición inherente del 50 % entre los bloques se reduce prácticamente a la mitad silenciando la señal durante un octavo en ambos extremos de un bloque, respectivamente. [ 2 ]
Los coeficientes se agrupan para asemejarse a las bandas críticas del sistema auditivo humano. Se analiza la cantidad total de energía de cada grupo y los valores se cuantifican para la reducción de datos y se comprimen mediante predicción, transmitiendo únicamente la diferencia con los valores predichos ( codificación delta ).
Los valores de energía de banda (no cuantificados) se eliminan de los coeficientes DCT brutos (normalización). Los coeficientes de la señal residual resultante (la llamada “forma de banda”) se codifican mediante Cuantización Vectorial Piramidal (PVQ, una cuantización vectorial esférica ). [ 8 ] Esta codificación produce palabras de código de longitud fija (predecible), lo que a su vez permite robustez frente a errores de bits y elimina la necesidad de codificación de entropía . [ 5 ] Finalmente, toda la salida del codificador se codifica en un flujo de bits mediante un codificador de rango . [ 9 ] En conexión con la PVQ, CELT utiliza una técnica conocida como plegado de banda, que proporciona un efecto similar a la replicación de banda espectral (SBR) al reutilizar coeficientes de bandas inferiores para bandas superiores, pero tiene un impacto mucho menor en el retardo algorítmico y la complejidad computacional que la SBR. Esto funciona contra los artefactos “birdie” al preservar una mayor riqueza en las bandas de frecuencia apropiadas.
El decodificador descomprime los componentes individuales del flujo de bits codificado por rango, multiplica la energía de banda por los coeficientes de forma de banda y los transforma de nuevo (mediante iMDCT) a datos PCM. Los bloques individuales se vuelven a unir utilizando la superposición y suma ponderada (WOLA). Muchos parámetros no se codifican explícitamente, sino que se reconstruyen utilizando las mismas funciones que el codificador.
Para el acoplamiento de canales, CELT puede usar estéreo M/S o estéreo de intensidad . Los bloques se pueden describir independientemente de los fotogramas adyacentes ( intrafotograma ); por ejemplo, para permitir que un decodificador salte a una secuencia en ejecución. Con los códecs de transformación, los llamados artefactos de pre-eco pueden volverse audibles, porque el error de cuantización de los sonidos agudos y con mucha energía ( transitorios ) puede propagarse por todo el bloque DCT y el transitorio no los enmascara hacia atrás en el tiempo, así como hacia adelante. Con CELT, cada bloque se puede dividir aún más para evitar dichos artefactos.
Historia
El primer trabajo sobre planes y borradores para un sucesor de Vorbis se realizó en 2005 en Xiph.org como parte del proyecto Ghost (inicialmente conocido como “Vorbis II”). Esta discusión junto con el creador de Vorbis, Christopher Montgomery, llevó al interés de Jean-Marc Valin en un códec de latencia particularmente baja. Valin ha trabajado en CELT desde 2007. [ 5 ] En diciembre de 2007, se publicó la primera versión del borrador de libcelt como versión 0.0.1, inicialmente llamada “Code-Excited Lapped Transform”. [ 10 ] [ 11 ] CELT se estableció como una tecnología IETF en julio de 2009 [ 3 ] [ 12 ] [ 13 ] [ 14 ] bajo el grupo de trabajo “ietfcodec”. En mayo de 2009, se publicó un borrador del formato de carga útil RTP para el códec CELT . [ 15 ]
En la versión 0.9, la predicción de tono que operaba en el dominio de la frecuencia utilizada hasta entonces fue reemplazada por una solución menos compleja con un par de prefiltro y postfiltro en el dominio del tiempo, [ 16 ] que fue aportada por Raymond Chen de Broadcom . [ 5 ]
Con CELT 0.11, a partir del 4 de febrero de 2011, el formato se congeló provisionalmente ("soft freeze"), reservándose la posibilidad de realizar cambios de última hora inesperados.
Poco después de la aparición del códec híbrido CELT/ SILK Opus (anteriormente conocido como Harmony), se detuvo el desarrollo de CELT como proyecto independiente, y en su lugar se optó por Opus [ 17 ] , cuyo objetivo es tratar la parte inferior del rango espectral en el dominio del tiempo con predicción lineal (SILK) y la parte superior en el dominio de la frecuencia con MDCT . El borrador de Opus está registrado en el IETF desde septiembre de 2010.
Software
La biblioteca de software libcelt sirve como implementación de referencia para CELT, escrita en C y publicada como software libre bajo la licencia de Xiph, que consta de 3 cláusulas y se asemeja a la licencia BSD.
Aunque el formato no se había congelado definitivamente, se utilizaba en muchas aplicaciones VoIP como Ekiga [ 18 ] y FreeSWITCH [ 19 ] , que cambiaron a CELT al entrar en modo soft-freeze en enero de 2009, así como Mumble , TeamSpeak y otros [ 20 ] programas. En abril de 2011, se incluyó la compatibilidad con CELT en FFmpeg [ 21 ] [ 22 ] .
CELT también es compatible o utilizado por: [ 20 ]
- GStreamer
- kit de conexión de audio jack (netjack)
- Mumble (a partir de la versión 1.2)
- Teléfono SFL
- TeamSpeak 3
- CONDIMENTAR
- Dota 2 [ 23 ]
- Counter Strike: Ofensiva Global
- Team Fortress 2 [ 24 ]
Véase también
- Comparación de formatos de codificación de audio
- Opus (formato de audio) - sucesor de CELT
Referencias
- 1 2 3 Xiph.Org El códec de audio de latencia ultrabaja CELT - página principal Archivado el 31/08/2018 en Wayback Machine , consultado el 01/09/2009
- 1 2 3 Presentación del códec Archivado el 07/08/2011 en Wayback Machine por Timothy B. Terriberry (65 minutos de vídeo en ~100 MiB OggTheora+Vorbis, ver también las diapositivas de la presentación Archivado el 10/08/2011 en Wayback Machine en PDF, ~2,3 MiB)
- 1 2 Valin, Jean-Marc; Terriberry, Timothy B.; Maxwell, Greg; Montgomery, Christopher (8 de julio de 2010). "Códec de transformada solapada de energía restringida (CELT)" .
- ↑ Fiona Glaser (18-11-2010). "Importante: ¡próximo congelamiento del flujo de bits de CELT!" . ffmpeg-devel.mplayerhq.hu - Lista de correo de discusiones y parches de desarrollo de FFmpeg . mplayerhq.hu . Consultado el 11-06-2012 .
- 1 2 3 4 Christopher Montgomery (23-12-2010). "Audio de próxima generación: actualización CELT 23-12-2010" . Páginas de demostración de Monty . Xiph.Org. Archivado del original el 23-08-2013 . Recuperado el 11-06-2012 .
- ↑ Dirk Bösel (18 de abril de 2011). "CELT beeindruckt beim 64 kb/s Multiformat Hörtest (2011)" . MPeX.net (en alemán). MPeX.net GmbH . Consultado el 25 de abril de 2011 .
- ↑ Valin, Jean-Marc; Terriberry, Timothy B.; Montgomery, Christopher ; Maxwell, Gregory (17 de abril de 2009), "Un códec de voz y audio de alta calidad con un retardo inferior a 10 ms" (PDF) , IEEE Transactions on Audio, Speech, and Language Processing , vol. 18, n.º 1, IEEE Signal Processing Society , consultado el 16 de febrero de 2011.
- ↑ Fischer, Thomas R. (julio de 1986), "Un cuantificador vectorial piramidal", IEEE Transactions on Information Theory , vol. 32, n.º 4, págs. 568–583 , doi : 10.1109/TIT.1986.1057198
- ↑ segunda versión del borrador de la especificación
- ↑ Jean-Marc Valin (09-12-2007). "Lanzamiento experimental de Ghost/CELT 0.0.1" . Hydrogenaudio Forums . Consultado el 11-06-2012 .
- ↑ Xiph.Org (08/12/2007) Lanzamientos de CELT – celt-0.0.1.tar.gz , Consultado el 01/09/2009
- ↑ Monika Ermert (13 de noviembre de 2009). "IETF kümmert sich um lizenzfreien Audiocodec" . Heise en línea . Consultado el 12 de febrero de 2011 .
- ↑ Valin, Jean-Marc; Terriberry, Timothy; Maxwell, Gregory; Montgomery, Christopher (8 de julio de 2010). "Códec de transformada solapada de energía restringida (CELT)" . IETF Datatracker .
- ↑ IETF - Grupo de trabajo AVT (04/07/2009) Códec de transformada solapada de energía restringida (CELT) , consultado el 01/09/2009.
- ↑ IETF - Grupo de trabajo AVT (08/05/2009) Formato de carga útil RTP para el códec CELT , consultado el 01/09/2009.
- ↑ Jean-Marc Valin (15 de febrero de 2011). "Complejidad del decodificador CELT" . CELT-dev . Xiph.Org. Archivado del original el 2 de abril de 2012. Consultado el 11 de junio de 2012 .
- ↑ Jean-Marc Valin, Koen Vos (octubre de 2010). "Definición del códec de audio Opus" . Borradores de Internet de la IETF . Grupo de trabajo de la red de la IETF . Consultado el 11 de junio de 2012 .
- ↑ "Ekiga 3.1.0 disponible" . Archivado del original el 30/09/2011 . Consultado el 27/02/2009 .
- ↑ FreeSWITCH: Nuevo lanzamiento para el Año Nuevo
- 1 2 "Software que utiliza o es compatible con CELT" . Sitio web de CELT . Xiph.Org . Consultado el 12 de junio de 2012 .
- ↑ George, Nicolas (20 de abril de 2011). " [ FFmpeg-devel ] [ PATCH ] Soporte para la decodificación Xiph CELT/Opus usando libcelt" .
- ↑ "git.videolan.org Git - ffmpeg.git/commit" . git.videolan.org .
- ↑ "Notas del parche - Desarrolladores de Dota2" .
- ↑ "Team Fortress 2" . www.teamfortress.com .
Enlaces externos
- Página web oficial
- Códecs de voz
- Códecs de audio gratuitos
- Proyectos de Xiph.Org
