Codec 2 es un códec de audio de voz de baja tasa de bits ( codificación de voz ) libre de patentes y de código abierto . [ 1 ] Codec 2 comprime la voz mediante codificación sinusoidal , un método especializado para el habla humana . Se han logrado tasas de bits de 3200 a 450 bits/s. Codec 2 fue diseñado para su uso en radioaficionados y otras aplicaciones de voz de alta compresión.
Descripción general
El códec fue desarrollado por David Grant Rowe, con el apoyo y la cooperación de otros investigadores (por ejemplo, Jean-Marc Valin de Opus ). [ 2 ]
El códec 2 consta de modos de códec de 3200, 2400, 1600, 1400, 1300, 1200, 700 y 450 bits/s. Supera a la mayoría de los demás códecs de voz de baja tasa de bits . Por ejemplo, utiliza la mitad del ancho de banda de la excitación multibanda avanzada para codificar la voz con una calidad similar. El códec de voz utiliza audio muestreado PCM de 16 bits y genera bytes digitales empaquetados. Cuando se le envían bytes digitales empaquetados, genera audio muestreado PCM. La frecuencia de muestreo de audio está fijada en 8 kHz.
La implementación de referencia es de código abierto y está disponible gratuitamente en un repositorio de GitHub . [ 3 ] El código fuente se publica bajo los términos de la versión 2.1 de la Licencia Pública General Reducida de GNU (LGPL). [ 4 ] Está programado en C y el código fuente actual requiere aritmética de punto flotante , aunque el algoritmo en sí no la requiere. El paquete de software de referencia también incluye un módem de software de voz digital con multiplexación por división de frecuencia y una interfaz gráfica de usuario basada en WxWidgets . El software está desarrollado en Linux y se ofrece una versión para Microsoft Windows creada con Cygwin , además de una versión para Apple MacOS .
El códec se ha presentado en varias conferencias y ha recibido el Premio a la Innovación Técnica de la ARRL 2012, [ 5 ] y el Premio a la Mejor Presentación de la Conferencia Linux Australia. [ 6 ]
Tecnología
Internamente, los algoritmos de codificación de audio paramétricos operan sobre tramas PCM de 10 ms utilizando un modelo de la voz humana. Cada uno de estos segmentos de audio se clasifica como sonoro (vocal) o sordo (consonante).
El códec 2 utiliza codificación sinusoidal para modelar el habla, la cual está estrechamente relacionada con la de los códecs de excitación multibanda . La codificación sinusoidal se basa en regularidades (periodicidad) en el patrón de frecuencias de sobretonos y superpone sinusoides armónicas. El audio hablado se recrea modelando el habla como una suma de ondas sinusoidales armónicamente relacionadas con amplitudes independientes, denominadas pares espectrales lineales (LSP), superpuestas a una frecuencia fundamental determinada de la voz del hablante (tono). El tono (cuantizado) y la amplitud (energía) de los armónicos se codifican y, junto con los LSP, se intercambian a través de un canal en formato digital. Los coeficientes LSP representan el modelo de codificación predictiva lineal (LPC) en el dominio de la frecuencia y permiten una cuantización robusta y eficiente de los parámetros LPC. [ 7 ]
Los bytes digitales se encuentran en formato de campo de bits y se han agrupado en bytes. Estos campos de bits también se codifican opcionalmente en formato Gray antes de agruparse. La codificación Gray puede ser útil al enviar datos sin procesar, pero normalmente una aplicación simplemente envía los campos de bits directamente. Los campos de bits conforman los diversos parámetros que se almacenan o intercambian (tono, energía, operadores booleanos de voz, LSP, etc.).
Por ejemplo, el modo 3200 convierte 20 ms de audio a 64 bits. De esta forma, se emiten 64 bits cada 20 ms (50 veces por segundo), con una velocidad de datos mínima de 3200 bits/s. Estos 64 bits se envían como 8 bytes a la aplicación, que debe descifrar los campos de bits o enviar los bytes a través de un canal de datos.
Otro ejemplo es el Modo 1300, que recibe 40 ms de audio y emite 52 bits cada 40 ms (25 veces por segundo), para una velocidad mínima de 1300 bits/s. Estos 52 bits se envían como 7 bytes al canal de datos o de la aplicación.
Adopción
El códec 2 se utiliza actualmente en varias radios y sistemas de radio definidos por software:
- FreeDV [ 8 ]
- Serie FlexRadio 6000 [ 9 ]
- SM1000 [ 10 ]
- Quisk [ 11 ]
- Proyecto M17 [ 12 ]
- Radio MANET DTC Sentry Mesh 6161 [ 13 ]
El códec 2 también se ha integrado en FreeSWITCH y hay un parche disponible para su compatibilidad con Asterisk .
Había un repetidor de voz digital FM a Codec2 en órbita terrestre en el CubeSat de radioaficionados LilacSat-1 (indicativo ON02CN, constelación QB50 ), que fue lanzado y posteriormente desplegado desde la Estación Espacial Internacional en 2017. [ 14 ]
Historia
Bruce Perens, destacado defensor del software libre y radioaficionado , impulsó la creación de un códec de voz libre para operar a menos de 5 kbit/s. Dado que Perens carecía de experiencia en el tema, en 2008 contactó con Jean-Marc Valin, quien le presentó al desarrollador principal, David Grant Rowe, que había colaborado con Valin en Speex en varias ocasiones. Rowe también era radioaficionado (indicativo VK5DGR ) y tenía experiencia en la creación y el uso de códecs de voz y otros algoritmos de procesamiento de señales de voz. Obtuvo un doctorado en codificación de voz en la década de 1990 y participó en el desarrollo de uno de los primeros sistemas de telefonía por satélite ( Mobilesat ).
Aceptó la tarea y anunció su decisión de trabajar en un formato el 21 de agosto de 2009. Se basó en la investigación y los hallazgos de su tesis doctoral. [ 15 ] [ 16 ] El modelado sinusoidal subyacente se remonta a los desarrollos de Robert J. McAulay y Thomas F. Quatieri (laboratorios Lincoln del MIT) de mediados de la década de 1980.
En agosto de 2010, David Rowe publicó la versión 0.1 alpha. [ 17 ] La versión 0.2 se lanzó a finales de 2011, introduciendo un modo con 1400 bits/s y mejoras significativas en la cuantización.
En enero de 2012, en linux.conf.au , Jean-Marc Valin ayudó a mejorar la cuantificación de pares espectrales de línea, con la que Rowe está menos familiarizado. [ 18 ] Después de varios cambios en los modos de velocidad de bits disponibles en invierno y primavera de 2011/2012, los modos de 2400, 1400 y 1200 bits/s estuvieron disponibles después de mayo de ese año.
El códec 2 700C, un nuevo modo con una velocidad de bits de 700 bits/s, se terminó a principios de 2017. [ 19 ]
En julio de 2018 se demostró un modo experimental de 450 bits/s, desarrollado como parte de una tesis de maestría en la Universidad de Erlangen-Núremberg. Mediante un entrenamiento inteligente de la cuantización vectorial, la tasa de datos pudo reducirse aún más basándose en el principio del modo 700C. [ 20 ]
Referencias
- ↑ "DCC2011-Codec2-VK5DGR" (PDF) . Archivado del original (PDF) el 14 de abril de 2016. Consultado el 25 de abril de 2014 .
- ↑ "Un cuantificador de energía de tono para Codec2" . Archivado del original el 19 de junio de 2015.
- ↑ "Repositorio para el código fuente de Codec 2" . GitHub . 14 de octubre de 2021.
- ↑ "Codec2: un códec de voz de código abierto y bajo ancho de banda" . Slashdot . 21 de septiembre de 2010.
- ↑ "La Junta Directiva de ARRL nombra a los galardonados en su segunda reunión de 2012" . www.arrl.org .
- ↑ "Conferencia Linux Australia 2012" . Consultado el 2 de agosto de 2012 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Técnicas para la codificación sinusoidal armónica" (PDF) . Archivado del original (PDF) el 15 de mayo de 2013. Consultado el 12 de abril de 2013 .
- ↑ "FreeDV: Voz digital amateur de código abierto: donde la radioafición impulsa el estado del arte" .
- ↑ "FreeDV, CODEC2 y la API de forma de onda" . Archivado del original el 2 de abril de 2015. Consultado el 6 de marzo de 2015 .
- ↑ "Presentamos el micrófono inteligente SM1000 de Rowetel" . 21 de mayo de 2014.
- ↑ "Quisk, una radio definida por software (SDR)" . james.ahlstrom.name .
- ↑ "Descripción del protocolo M17" . GitHub .
- ↑ https://www.dtccodan.com/products/sentry_mesh_6161#specifications
- ↑ "Satélites de la constelación QB-50 desplegados desde la ISS" . Sitio web de la American Radio Relay League . 15 de noviembre de 2017. Consultado el 31 de marzo de 2019 .
- ↑ "Técnicas para la codificación sinusoidal armónica" (PDF) . Archivado del original (PDF) el 15 de mayo de 2013. Consultado el 12 de abril de 2013 .
- ↑ "Códec de voz de baja velocidad de código abierto, parte 1 – Rowetel" . 21 de agosto de 2009.
- ↑ "Lanzamiento de la versión alfa de Codec2 V0.1 – Rowetel" . 25 de agosto de 2010.
- ↑ "Un cuantificador de energía de tono para Codec2" .
- ↑ "Códec de código abierto codifica voz a solo 700 bits por segundo" . Slashdot . 13 de enero de 2017. Consultado el 31 de marzo de 2019 .
- ↑ "Voz digital HF Codec2 a 450 bps" . Southgate Amateur Radio News . 8 de julio de 2018. Archivado del original el 31 de marzo de 2019. Consultado el 31 de marzo de 2019 .
{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace )
Enlaces externos
- Sitio web oficial
- FreeDV
- Códecs de voz
- Códecs de audio gratuitos