# Códec de audio

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:

### Codificadores perceptuales

Los codificadores perceptuales aprovechan las limitaciones en la percepción del sistema auditivo humano (umbral de audición, enmascaramiento temporal y/o frecuencial) para codificar el flujo de datos.
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.

### Codificadores paramétricos

Los codificadores paramétricos se basan en que el audio y la voz se pueden representar y sintetizar con tonos aislados, patrones armónicos (representados con sinusoides) y componentes ruidosas. Estos se representan con parámetros como la amplitud, la frecuencia fundamental o los componentes espectrales y requieren pocos bits para representarlos.
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.
    Existen dos tipos de vocoders:
      * vocoder por predicción lineal
      * LPC-10

### Codificadores de forma de onda

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í.
La codificación de la señal se puede llevar a cabo tanto en el dominio temporal como frecuencial:
    Codificadores en el dominio temporal:
      * Modulación por codificación de pulsos (PCM, Pulse Code Modulation)
      * Modulación por codificación de impulsos diferenciales (DPCM, Differential PCM)
      * Modulación por codificación de impulsos diferenciales adaptativos(ADPCM, Adaptative PCM)
    Codificadores en el dominio frecuencial:
      * Codificación en subbandas
      * Codificación por transformada

### Codificadores híbridos (codificación de voz)

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.
    Algunos codificadores híbridos son:
      * Codificador RELP
      * Codificador multipulso MPC
      * Codificador CELP
      * Codificador VSELP
      * Codificador RPE-LTP

## Tipo de códecs de audio

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):

### Códecs de audio con pérdidas

En audio se aprovechan las limitaciones del sistema auditivo humano (margen frecuencial, umbral de audición, enmascaramiento temporal y/o enmascaramiento frecuencial) para comprimir los datos de audio. Se usan diferentes métodos para eliminar los datos inaudibles:
   * 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.
   * Predicción.
   * Codificación entrópica: codificación de Huffman, codificación aritmética, Run Length Coding (RLE).

## Parámetros

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:
| Codec | AAC | FLAC | Monkey's Audio | MP3 | Vorbis (Ogg) | WavPack | WMA |
| Creador | ISO/IEC MPEG Audio Committe | Xiph.Org Foundation, Josh Coalson | Matthew T. Ashland | ISO/IEC MPEG Audio Committe | (Xiph.Org Foundation) | Conifer Software | Microsoft |
| Fecha lanzamiento público | 1997 | 20/07/2001 | 2000 | 1993 | 11/05/2000 | 1998 | 1999 |
| Última versión estable | ISO/IEC 14496-3 | 1.3.2 | 4.33 | ISO/IEC 11172-3,ISO/IEC 13818-3 | 1.3.6 | 5.1.0 | 11.0 |
| Tipo de compresión | Con pérdidas, Híbrido | Sin pérdidas | Sin pérdidas | Con pérdidas | Con pérdidas | Con pérdidas, Sin pérdidas, Híbrido | Con pérdidas, Sin pérdidas |
| Frecuencia de muestreo | 8kHz a 192kHz | 1Khz a 1.04857MHz | 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48kHz | 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48kHz | 1Hz a 200kHz | 1Hz a 13.777216MHz | 8, 11.025, 12, 16, 22.05, 32, 44.1, 48, 96kHz |
| Tasa de bits | 8-529Kbps (estéreo) | Variable | Variable | 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 Kbps | Variable | Variable (modo sin pérdidas) / superior 196kbps (modo con pérdidas) | 4-768kbps / variable (sin pérdidas) |
| Bits por muestra | Cualquiera | 4, 8, 16, 24, 32 | ? | Cualquiera | Cualquiera | Variable (modo sin pérdidas) / superior a 2.2 (modo con pérdidas) | 16, 24 (modo sin pérdidas) / Cualquiera (modo con pérdidas) |
| CBR | Si | No | No | Si | Si | Si | Si |
| VBR | Si | Si | Si | Si | Si | Si | Si |
| Multicanal | hasta 28 canales | hasta 8 canales | No | No | hasta 255 canales | hasta 16 canales | hasta 8 canales (WMA Professional) / hasta 6 canales (WMA sin pérdidas) |

## Ejemplos de códecs de audio

| Sin pérdidas | Con pérdidas | Códecs de voz |
| ALAC (Apple Lossless) DST (Direct Stream Transfer) FLAC (Free Lossless Audio Codec) LA (Lossless Audio) LPAC (Lossless Predictive Audio Codec) LTAC (Lossless Transform Audio Codec) MLP (Meridian Lossless Packing) Monkey's Audio (APE) MPEG-4 ALS MPEG-4 SLS OptimFROG QDesign RealAudio Lossless RKAU Shorten (SHN) TTA (True Audio) WavPack WMA lossless (Windows Media Audio Lossless) | AAC (Advanced Audio Coding) HE-AAC (High Efficiency Advance Audio Coding) AC3 (Dolby Digital A/52) ADPCM ADX (videojuegos) ATRAC (Adaptive TRansform Acoustic Coding) DRA DTS (Digital Theather Systems) MP1 (MPEG audio layer-1) MP2 (MPEG audio layer-2) MP3 (MPEG audio layer-3) mp3PRO Musepack Ogg Vorbis Opus Perceptual Audio Coding RTA (Real Time Audio Codec) TwinVQ Siren WMA (Windows Media Audio) | AMBE AMR CELP CELT EVRC G.711 G.722 G.723 G.726 G.728 G.729 GSM HILN (MPEG-4 paramétrico) iLBC IMBE Perceptual Audio Coding (radio digital y satélite) Speex SMV QCELP VSELP |