Articulo de referencia

CELTA

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 un retardo algorít...

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 un retardo algorítmico especialmente bajo para su uso en comunicaciones de audio de baja latencia . Los algoritmos están documentados abiertamente y pueden usarse 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 luego coordinado por el grupo de trabajo Opus del Grupo de trabajo de ingeniería de Internet (IETF).

CELT fue diseñado para cubrir la brecha entre Vorbis y Speex en aplicaciones donde se desea tanto una alta calidad de audio como un bajo retardo. [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 frecuencia . [1]

El CELT original independiente se ha fusionado con Opus . Por lo tanto, el CELT como formato independiente ahora está abandonado y obsoleto. El desarrollo continúa únicamente para su forma híbrida como una capa de Opus, integrada con SILK . Este artículo cubre el formato histórico independiente; para la forma integrada y su evolución desde la integración en Opus, consulte el artículo sobre Opus.

Propiedades

La característica principal de CELT es el bajo retardo algorítmico. Permite latencias de entre 3 y 9 ms, pero se puede configurar por debajo de los 2 ms a costa de una mayor tasa de bits para alcanzar 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 y superior y una tasa de bits adaptativa de 24 kbit/s a 128 kbit/s por canal y 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 propósito general de banda completa ( rango completo de audición humana ), es decir, no especializado para tipos especiales de señales de audio y, por lo tanto, diferente de su proyecto hermano Speex . El formato permite 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 las 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 comparativas de escucha 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 bajo retardo 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 desaparece en el nivel de ruido en pausas de habla y casos similares, la transmisión se puede limitar para señalar la salida de ruido de confort al decodificador. La mayoría de las configuraciones del formato habilitado para transmisión natural se pueden cambiar 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, se pueden enmascarar con una degradación constante de la calidad del audio ( ocultación de pérdida de paquetes , PLC).

Tecnología

Diagrama de bloques del códec

CELT es un códec de transformación basado en la transformada de coseno discreta modificada (MDCT) y conceptos de CELP (con un libro de códigos para excitación, pero en el dominio de la frecuencia).

La señal PCM inicial codificada se procesa en bloques relativamente pequeños y superpuestos para la MDCT ( función de ventana ) y se transforma en coeficientes de frecuencia. La elección de un tamaño de bloque especialmente corto permite, por un lado, una latencia baja, pero también conduce a una resolución de frecuencia deficiente que debe compensarse. Para reducir aún más el retraso algorítmico a expensas de un pequeño sacrificio en la calidad del audio, el 50% de superposición natural 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 toda la cantidad de energía de cada grupo y se cuantifican los valores para la reducción de datos y su compresión 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 cuantificación vectorial piramidal (PVQ, una cuantificación vectorial esférica ). [8] Esta codificación conduce a palabras de código de longitud fija (predecible), lo que a su vez permite la robustez contra errores de bits y no deja 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 relación con la PVQ, CELT utiliza una técnica conocida como plegado de banda, que ofrece un efecto similar a la replicación de banda espectral (SBR) al reutilizar los coeficientes de las bandas inferiores para las superiores, pero tiene mucho menos impacto en el retraso algorítmico y la complejidad computacional que la SBR. Esto funciona contra los artefactos de "birdie" al preservar más 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 nuevamente (a través de iMDCT) en datos PCM. Los bloques individuales se vuelven a unir mediante superposición-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 utilizar 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 curso. Con los códecs de transformación, los llamados artefactos de pre-eco pueden volverse audibles, porque el error de cuantificación de los sonidos agudos y de gran energía ( transitorios ) puede extenderse 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 frustrar tales artefactos.

Historia

El primer trabajo sobre los 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 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 la versión CELT 0.11 del 4 de febrero de 2011, el formato fue congelado provisionalmente (“soft freeze”), reservándose la posibilidad de realizar cambios finales inesperadamente necesarios.

Poco después de la aparición del códec híbrido CELT/ SILK Opus (antes conocido como Harmony), el desarrollo de CELT como proyecto independiente se detuvo y se basó en 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 BSD-ish de 3 cláusulas de Xiph.

A pesar de que el formato no se congeló finalmente, se estaba utilizando en muchas aplicaciones de VoIP como Ekiga [18] y FreeSWITCH [19] , que cambió a CELT al entrar en congelamiento suave en enero de 2009, así como Mumble , TeamSpeak y otro [20] software . En abril de 2011, se incluyó soporte para CELT en FFmpeg [21] [22]

CELT también es apoyado o utilizado por: [20]

Véase también

Referencias

  1. ^ abc Xiph.Org El códec de audio de retardo ultra bajo CELT - página de inicio Archivado el 31 de agosto de 2018 en Wayback Machine , consultado el 1 de septiembre de 2009
  2. ^ abc Presentación del códec Archivado el 7 de agosto de 2011 en Wayback Machine por Timothy B. Terriberry (65 minutos de video en ~100 MiB OggTheora+Vorbis, ver también las diapositivas de la presentación Archivado el 10 de agosto de 2011 en Wayback Machine en PDF, ~2,3 MiB)
  3. ^ ab Valin, Jean-Marc; Terriberry, Timothy B.; Maxwell, Greg; Montgomery, Christopher (8 de julio de 2010). "Códec CELT (Transformada superpuesta de energía restringida)".
  4. ^ Fiona Glaser (18 de noviembre de 2010). "Importante: ¡próxima congelación del flujo de bits de CELT!". ffmpeg-devel.mplayerhq.hu - Lista de correo de discusiones y parches sobre el desarrollo de FFmpeg . mplayerhq.hu . Consultado el 11 de junio de 2012 .
  5. ^ abcd Christopher Montgomery (23 de diciembre de 2010). «audio de próxima generación: actualización CELT 20101223». Páginas de demostración de Monty . Xiph.Org. Archivado desde el original el 23 de agosto de 2013. Consultado el 11 de junio de 2012 .
  6. ^ 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 .
  7. ^ Valin, Jean-Marc; Terriberry, Timothy B.; Montgomery, Christopher ; Maxwell, Gregory (17 de abril de 2009), "Un códec de audio y voz de alta calidad con un retraso de menos de 10 ms" (PDF) , IEEE Transactions on Audio, Speech, and Language Processing , vol. 18, no. 1, IEEE Signal Processing Society , consultado el 16 de febrero de 2011
  8. ^ Fischer, Thomas R. (julio de 1986), "Un cuantificador vectorial piramidal", IEEE Transactions on Information Theory , vol. 32, núm. 4, págs. 568–583, doi :10.1109/TIT.1986.1057198
  9. ^ Segunda versión del borrador de la especificación
  10. ^ Jean-Marc Valin (9 de diciembre de 2007). "Lanzamiento experimental de Ghost/CELT 0.0.1". Foros de Hydrogenaudio . Consultado el 11 de junio de 2012 .
  11. ^ Xiph.Org (8 de diciembre de 2007) Lanzamientos de CELT: celt-0.0.1.tar.gz, consultado el 1 de septiembre de 2009
  12. ^ 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 .
  13. ^ Valin, Jean-Marc; Terriberry, Timothy; Maxwell, Gregory; Montgomery, Christopher (8 de julio de 2010). "Códec CELT (Transformada superpuesta de energía restringida)". IETF Datatracker .
  14. ^ IETF - Grupo de trabajo AVT (4 de julio de 2009) Códec de transformada superpuesta de energía restringida (CELT), consultado el 1 de septiembre de 2009
  15. ^ IETF - Grupo de trabajo AVT (8 de mayo de 2009) Formato de carga útil RTP para el códec CELT, consultado el 1 de septiembre de 2009
  16. ^ Jean-Marc Valin (15 de febrero de 2011). «Complejidad del decodificador CELT». CELT-dev . Xiph.Org. Archivado desde el original el 2 de abril de 2012 . Consultado el 11 de junio de 2012 .
  17. ^ 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 redes de la IETF . Consultado el 11 de junio de 2012 .
  18. ^ Ekiga 3.1.0 disponible
  19. ^ FreeSWITCH: Nuevo lanzamiento para el nuevo año
  20. ^ ab "Software que utiliza o soporta CELT". Sitio web de CELT . Xiph.Org . Consultado el 12 de junio de 2012 .
  21. ^ George, Nicolas (20 de abril de 2011). "[FFmpeg-devel] [PATCH] Soporte para decodificación Xiph CELT/Opus usando libcelt".
  22. ^ "git.videolan.org Git - ffmpeg.git/commit". git.videolan.org .
  23. ^ "Notas del parche - Dota2 Dev".
  24. ^ "Team Fortress 2". www.teamfortress.com .
  • Página oficial
Obtenido de "https://es.wikipedia.org/w/index.php?title=CELT&oldid=1221001953"