stringtranslate.com

CELTA

La Transformada Lapeada de Energía Restringida ( CELT ) es un formato de compresión de audio con pérdida abierto, libre de regalías y un códec de software gratuito con un retraso algorítmico especialmente bajo para su uso en comunicaciones de audio de baja latencia . Los algoritmos están documentados abiertamente y pueden utilizarse sin restricciones de patentes de software . El desarrollo del formato estuvo a cargo de la Fundación Xiph.Org (como parte de la familia de códecs Ogg ) y luego fue coordinado por el grupo de trabajo Opus del Internet Engineering Task Force (IETF).

CELT estaba destinado a cerrar la brecha entre Vorbis y Speex para aplicaciones donde se desea audio de alta calidad y bajo retardo. [1] Es adecuado tanto para habla 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 CELT independiente original se ha fusionado con Opus . Por lo tanto, CELT como formato independiente está actualmente abandonado y obsoleto. El desarrollo continúa únicamente para su forma hibridada como una capa de Opus, integrada con SILK . Este artículo cubre el formato histórico e independiente; para la forma integrada y su evolución desde la integración en Opus ver el artículo sobre Opus.

Propiedades

La característica central de CELT es el bajo retraso algorítmico. Permite latencias típicas de 3 a 9 ms, pero se puede configurar por debajo de 2 ms al precio 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 velocidad 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 permisiva de código abierto ( BSD de 2 cláusulas ). [1] [3]

Al igual que Vorbis , CELT es un códec de uso general de banda completa (todo el rango de audición humana ), es decir, no está especializado para tipos especiales de señales de audio y, por lo tanto, es diferente de su proyecto hermano Speex . El formato permite obtener resultados transparentes a velocidades de bits altas, así como una calidad muy decente a velocidades de bits más bajas. Con todo, 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 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 fondo de ruido en pausas del habla y casos similares, la transmisión puede limitarse para señalar la salida de ruido de confort al decodificador. La mayoría de las configuraciones del formato naturalmente habilitado para transmisión 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 inicial codificada en PCM se maneja en bloques superpuestos relativamente pequeños 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 baja latencia, pero también conduce a una mala resolución de frecuencia que debe compensarse. Para una mayor reducción del retraso algorítmico a expensas de un menor 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 ocho en ambos extremos de un bloque, respectivamente. . [2]

Los coeficientes están agrupados para parecerse 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 solo la diferencia a los valores predichos ( codificación delta ).

Los valores de energía de banda (no cuantificados) se eliminan de los coeficientes DCT sin procesar (normalización). Los coeficientes de la señal residual resultante (la llamada "forma de banda") se codifican mediante la 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 robustez contra errores de bits y no deja necesidad de codificación de entropía . [5] Finalmente, todas las salidas del codificador se codifican en un flujo de bits mediante un codificador de rango . [9] En relación con el PVQ, CELT utiliza una técnica conocida como plegado de bandas, que ofrece un efecto similar a la replicación de bandas espectrales (SBR) al reutilizar coeficientes de bandas inferiores para otras superiores, pero tiene mucho menos impacto en el retraso algorítmico y complejidad computacional que el SBR. Esto actúa contra los artefactos de “pajaritos” al preservar una mayor riqueza en las bandas de frecuencia apropiadas.

El decodificador descomprime los componentes individuales del flujo de bits codificado en rango, multiplica la energía de la banda por los coeficientes de forma de la banda y los transforma nuevamente (a través de iMDCT) en datos PCM. Los bloques individuales se vuelven a unir mediante superposición 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 podrá utilizar M/S estéreo o estéreo de intensidad . Los bloques se pueden describir independientemente de los marcos adyacentes ( Intra-frame ); 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 preeco pueden volverse audibles, porque el error de cuantificación de los sonidos agudos y con mucha energía ( transitorios ) puede extenderse por todo el bloque DCT y el transitorio no los enmascara ni hacia atrás ni hacia adelante en el tiempo. . Con CELT cada bloque se puede dividir aún más para frustrar tales 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 denominado “Vorbis II”). Esta discusión junto con el creador de Vorbis, Christopher Montgomery, despertó el 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ó el primer borrador de libcelt como versión 0.0.1, inicialmente denominada "Transformación superpuesta excitada por código". [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 del tono que operaba en el dominio de la frecuencia utilizada hasta entonces fue reemplazada por una solución menos compleja con un par de filtro previo y posterior en el dominio del tiempo, [16] que fue aportada por Raymond Chen de Broadcom . [5]

Con CELT 0.11 del 4 de febrero de 2011, el formato se congeló provisionalmente ("congelación suave"), reservando la posibilidad de realizar últimos cambios inesperadamente necesarios.

Poco después de la llegada del códec híbrido CELT/ SILK Opus (anteriormente conocido como Harmony), se detuvo el desarrollo de CELT como proyecto separado, viviendo en su lugar sobre la base de 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 la 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 VoIP como Ekiga [18] y FreeSWITCH , [19] que cambiaron a CELT al entrar en congelación en enero de 2009, así como Mumble , TeamSpeak y otros [ 20] software. En abril de 2011, se incluyó soporte para CELT en FFmpeg . [21] [22]

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

Ver 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 , obtenido 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 diapositivas de 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 de transformación superpuesta de energía restringida (CELT)".
  4. ^ Fiona Glaser (18 de noviembre de 2010). "Importante: ¡próxima congelación del flujo de bits CELT!". ffmpeg-devel.mplayerhq.hu: lista de correo de parches y discusiones sobre 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, Cristóbal ; Maxwell, Gregory (17 de abril de 2009), "Un códec de audio y voz de alta calidad con menos de 10 ms de retraso" (PDF) , Transacciones IEEE sobre procesamiento de audio, voz y lenguaje , vol. 18, núm. 1, Sociedad de procesamiento de señales IEEE , consultado el 16 de febrero de 2011
  8. ^ Fischer, Thomas R. (julio de 1986), "Un cuantificador de vectores piramidales", 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 CELT - celt-0.0.1.tar.gz, obtenido 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, Timoteo; Maxwell, Gregorio; Montgomery, Christopher (8 de julio de 2010). "Códec de transformación superpuesta de energía restringida (CELT)". Rastreador de datos del IETF .
  14. ^ IETF - Grupo de trabajo AVT (4 de julio de 2009) Códec de transformada superpuesta de energía restringida (CELT), obtenido 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, obtenido el 1 de septiembre de 2009
  16. ^ Jean-Marc Valin (15 de febrero de 2011). "Complejidad del decodificador CELT". Desarrollo CELT . 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 del IETF . Grupo de trabajo de la red 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 admite CELT". Sitio web del 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: desarrollador de Dota2".
  24. ^ "Equipo Fortaleza 2". www.teamfortress.com .

Enlaces externos