Un códec de audio es un códec que incluye un conjunto de algoritmos que permiten codificar y decodificar los datos auditivos, lo cual significa reducir la cantidad de bits que ocupa el fichero de audio. Sirve para comprimir señales o ficheros de audio con un flujo de datos (stream) con el objetivo de que ocupan el menor espacio posible, consiguiendo una buena calidad final, y descomprimiéndolos para reproducirlos o manipularlos en un formato más apropiado. Se implementa en software, hardware o una combinación de ambos.
Hardware
En términos de hardware, los códecs de audio son un poco diferentes. Al conectar una fuente analógica en tu computadora, esta se conecta directamente a un códec de audio para transferir el sonido digital a analógico o viceversa en el caso del micrófono. Esto se logra generalmente a través de conectar un dispositivo en tu línea de entrada/salida de conectores del sistema. Estos conectores tienen un aspecto similar al tipo que puedes encontrar en un reproductor de CD portátil o un reproductor de MP3, la toma de los auriculares típicos.
Métodos de codificación
Actualmente existen una gran variedad de códecs de audio. Aunque cada vez son más complejos y añaden características adicionales, se pueden clasificar en cinco grandes grupos dependiendo del método de codificación o reducción de la tasa de bits:
Para codificar las muestras en formato PCM (audio digital sin comprimir) se realiza una transformada al dominio frecuencial y se cuantifican y codifican a partir de un conjunto de datos obtenidos en un modelo psicoacústico. La implementación de este modelo psicoacústico es lo que determina la calidad final y es donde se aprovecha el enmascaramiento temporal o frecuencial, siendo el umbral de enmascaramiento el que controla la cuantificación.
En la cuantificación de audio se utilizan distintos tipos de cuantificadores: uniforme, no-uniforme, logarítmico (ley-mu o ley-A), diferencial o vectorial. Generalmente se utiliza cuantificación no-uniforme para música, cuantificación diferencial o logarítmica para señales de voz y cuantificación vectorial para procesado avanzado de la señal de voz.
En la salida de este bloque se puede incorporar un codificador entrópico que comprime sin pérdidas para reducir el tamaño de la trama binaria. Esta trama se empaqueta junto con información adicional que contiene datos imprescindibles para la decodificación como el tamaño de la trama, el número de bits de codificación, el margen dinámico... También se puede añadir corrección de errores.
El decodificador desempaqueta la señal codificada para obtener las muestras y la información auxiliar. Seguidamente, decodifica las muestras y las convierte en el dominio temporal para obtener audio en formato PCM, aunque este no será igual al inicial, puesto que es un proceso de codificación con pérdidas.
Las distintas versiones de MPEG-1, siendo MP3 (MPEG-1 layer3) la más conocida, utilizan este método de codificación.
Durante el proceso de codificación se extrae información de las muestras de entrada aplicando una transformada de fourier para luego realizar la estimación de parámetros. Seguidamente se codifican basándose con un modelo de la percepción humana, y se multiplexan para formar la trama binaria.
En el proceso de decodificación, a través de un bloque de síntesis y con los parámetros codificados, se reproduce una señal con las características análogas a la señal original.
Un ejemplo de este tipo de codificación es HVXC para voz y HILN para música, ambos dentro del estándar MPEG-4
Vocoders (codificación de voz)
Los vocoders son codificadores paramétricos específicos para la codificación de la voz. Estos analizan la señal de voz correspondiente a un segmento temporal considerado estacionario para extraer los parámetros del modelo y la excitación. Esta información es la que se codifica. En el proceso de decodificación, el decodificador sintetiza los parámetros a través de un modelo de producción de voz.
Los codificadores de forma de onda se basan en el estudio de la señal, de forma que intentan reproducir la forma del señal de entrada. Generalmente se diseñan para ser independientes de la señal, de manera que se utilizan para codificar una gran variedad de señales. Estos codificadores aprovechan la redundancia de la señal y, a partir de una predicción lineal, permiten codificar la señal auditiva. De esta forma se consiguen tasas de compresión elevadas cuando las señales son redundantes y prácticamente nulas cuando no es así.
Los codificadores híbridos, también conocidos como codificadores de análisis-por-síntesis combinan las técnicas de los codificadores de forma de onda con los vocoders. El objetivo de estos es obtener voz de alta calidad a tasas de bit bajas (inferiores a 8kHz). Su funcionamiento se basa en analizar un conjunto de muestras como si se tratase de una sola para obtener los parámetros de la señal. Al decodificar la trama, se sintetizan los parámetros para conseguir que se parezca al original.
Si obviamos las pérdidas producidas por el error de cuantificación, que en muchos casos son inapreciables, los códecs pueden ser, según el tipo de compresión, con pérdidas (lossy) o sin pérdidas (lossless):
Transformada en el dominio frecuencial y eliminación de las frecuencia inaudibles (inferiores a 20 Hz y superiores a 20kHz, u enmascaradas por otras frecuencias de mayor potencia).
División del señal en subbandas de frecuencia que se aproximan a las bandas críticas y cuantificar cada subbanda en función de un umbral de detección del ruido dentro de la subbanda. De esta forma se analiza el señal de audio y se calcula la cantidad de ruido (pérdidas inapreciables) que se pueden introducir a cada rango de frecuencias, es decir, el umbral de enmascaramiento.
Predicción de datos.
Caracterización de la voz a partir de una parametrización.
El nivel de compresión se puede controlar y depende de la calidad que se quiera obtener, el tamaño del fichero, el ancho de banda de la red, el tiempo de compresión...
Usualmente se utilizan compresiones máximas para transmisiones, especialmente cuando son servicios en directo como telefonía (telefonía IP o celular) o reproducciones en directo como pódcast (radio por internet o programas de audio por internet).
Códecs de audio sin pérdidas
Estos códecs utilizan una compresión sin pérdidas para minimizar el tamaño del flujo de datos. Para realizar esta codificación se utilizan algoritmos basados en la eliminación de la redundancia de la señal de audio, y por lo tanto en el grado de predictibilidad de la información. Si la señal tiene patrones repetitivos, este es redundante y por lo tanto fácil de predecir.
Usualmente los patrones repetitivos de señal son más evidentes en otro dominio (temporal, frecuencial...), es por esto que la transformación de la señal en función de estos patrones permitirá reducir o eliminar la redundancia.
En audio, igual que en vídeo, imagen o datos, la eliminación de la redundancia se implementa:
Transformaciones en otro dominio donde los patrones repetitivos sean más evidentes.
Los códecs de audio se caracterizan por los siguientes parámetros:
Número de canales: depende del número de señales de audio simultáneos que contiene el flujo de datos. Puede ser mono (1 canal), estéreo (2 canales) o multicanal como 5.1 (seis canales) o 7.1 (ocho canales).
Frecuencia de muestreo: determina la calidad percibida, por lo tanto cuanto más alto sea mayor será la fidelidad del sonido obtenido respecto al original. Puesto que el sistema auditivo humano no es capaz de percibir frecuencias superiores a 20kHz y que la frecuencia de muestreo debe cumplir el criterio de Nyquist, para obtener calidad CD nunca se utiliza frecuencias de muestreo superiores a 44.1kHz, puesto que no suponen ninguna ganancia de calidad.
Número de bits por muestra. Determina la precisión con la que se reproduce la señal original y el rango dinámico de la misma. Se suelen utilizar 8 (para un rango dinámico de hasta 45 dB), 16 (para un rango dinámico de hasta 90 dB como el formato CD) o 24 bits por muestra (para 109 a 120 dB de rango dinámico). El más común es 16 bits.
Tipo de compresión: distingue entre compresión con pérdidas (lossy) y sin pérdidas (lossless).
Tasa de bits: determina el número de bits de información necesarios por unidad de tiempo. La tasa de bits no se puede deducir de los parámetros anteriores puesto que la compresión puede ser con pérdidas o sin pérdidas. Además, puede ser constante (CBR), variable (VBR) o en media (ABR). En audio se utiliza tasa de bits variable (VBR), puesto que es más eficiente que CBR cuando hay silencios o segmentos donde la complejidad es baja y se pueden almacenar con menos bits.
Aplicaciones
El objetivo principal de los códecs de audio es reducir la cantidad de datos digitales necesarios para reproducir una señal auditiva. Resulta especialmente útil comprimir los datos para que ocupen el mínimo tamaño posible a la hora de almacenarlo y si se tiene que transmitir por la red se pueda enviar con la mayor rapidez posible. Así, las aplicaciones principales son:
Almacenamiento: útil en dispositivos de reproducción multimedia o de audio almacenado, puesto que a mejor codificación mayor será la compresión y por lo tanto también el espacio requerido para almacenarlo. Se utiliza en reproductores de audio digital como reproductores de CD-MP3, reproductores basados en Flash o reproductores basados en disco duro (iPod de Apple, Creative Zen, Commodore eVIC...).
Transmisión: útil cuando se debe enviar la información por cualquier tipo de red, puesto que a menor tasa de bits más rápido será el envío. Se utiliza para pódcast (radio o programas por internet), radio digital, audio para televisión digital y especialmente para videoconferencia y telefonía (IP o celular).
Estandarización
Hay dos organizaciones que dominan la estandarización de los codificadores de audio:
ITU-T (Unión Internacional de las Telecomunicaciones) dentro del conjunto de normas H.320 y H.323 donde se definen los estándares para videoconferencia y telefonía IP G.7xx.
ISO/IEC (Organización Internacional de la Estandarización y Comisión Electrotécnica Internacional).
Dispositivos
Mientras que los códecs de audio se utilizan principalmente en computadoras personales, hay un número de otros dispositivos que los necesita para mantenerse al día con la tecnología actual. Básicamente, cualquier dispositivo capaz de reproducir audio que también tiene una computadora utiliza los códecs. Ahora todo, desde automóviles hasta teléfonos móviles y los equipos de radiodifusión, utiliza códecs.
Compatibilidad
Los principales problemas con los códecs de audio es el gran número existente. Encontrar los códecs adecuados puede ser difícil a veces, ya que por lo general vienen en paquetes. Como todos ellos son diseñados específicamente para trabajar con un determinado tipo de archivo y el formato, por ejemplo, el códec "A" podría funcionar con el reproductor de MP3, mientras que el codec "B" podría ofrecer ningún sonido debido a problemas de compatibilidad.
Características de los principales códecs de audio
Las características técnicas de los principales códecs de audio son: