En general, un fichero de audio es una colección de una o m’as cabeceras que se multiplexan en el tiempo con los datos de audio puros. Las cabeceras se utilizan para aportar al reproductor toda la información necesaria para la reproducción del audio.
Dependiendo del formato seleccionado, dispondremos de un conjunto determinado de posibilidades que dependen fundamentalmente de los siguientes factores: (1) el algoritmo de codificación, (2) la implementación del codec (coder/decoder = codificador/descodificador) y (3) del formato de encapsulamiento de los datos con el audio.
Comenzaremos describiendo los algoritmos de codificación (que buscan sobre todo una compresión) m’as usados.
Actualmente existen muchos algoritmos específicamente diseñados para codificar audio digital. Algunos permiten comprimir cualquier fuente de sonido PCM, mientras que otros son específicos (sobre todo para el habla humana).
Es el modelo de codificación b’asico en el que no existe compresión. Codifica cada muestra usando un número constante de bits (un código de longitud fija).
Es una mejora de la codificación PCM donde la siguiente muestra se codifica como una diferencia con la anterior (que es en realidad una predicción), usando un código de longitud fija. La ventaja radica en que como las muestras vecinas tienden a tener valores parecidos, sus diferencias (errores de predicción) suelen ser valores pequeños y por tanto se puede reducir el número de bits para representarlos.
Es una variación de DPCM donde el predictor y/o el cuantificador son adaptativos. El predictor se adapta a las características de la señal de audio tratando de minimizar las diferencias entre las muestras y las predicciones. En el caso de usar un cuantificador adaptativo, lo que varía es el número de bits por muestra (en realidad, el número de bits por error de predicción).
LPC es una t’ecnica de codificación diferencial (como ADPCM) en la que el predictor es muy sofisticado y especializado (al menos en sus versiones m’as iniciales) en la síntesis de la voz humana.
Es una mejora de LPC en la que se utiliza un cuantificador vectorial para codificar los residuos (errores de predicción).
Los seres humanos no captamos toda la información que transporta una señal de audio de la misma forma. Una parte de ella es muy importante mientras que otra es m’as irrevelante (y en ocasiones, imperceptible). Los codificadores perceptuales dedican m’as bits de datos a representar aquella información perceptualmente m’as significativa. Este algoritmo es siempre irreversible (lossy), es decir, nunca se recupera la representación PCM original de la señal.
El formato MP3 de audio implementa un algoritmo PAC.
Un codec de audio es generalmente un programa de computadora (o un sistema digital) que implementa alguno de los algoritmos de codificación anteriormente presentados. Ve’amos los m’as usados:
Son codecs especializados en la codificación de la voz humana y se basan en t’ecnicas de codificación diferencial (DPCM, ADPCM, LPC, etc.). Se usan sobre todo en telefonía. Las tasas de bits usadas son muy variables, aunque generalmente bajas.
Es un codec desarrollado por fundación Xiph.Org para codificar voz humana. Se basa en CELP y trabaja a una tasa de bits típica entre 2k y 44k bps.
Es un codec creado por Sony para el MiniDisc. Se basa en un algoritmo PAC y la tasa de compresión típica es de 32k a 256k bps.
El MPEG ha diseñado un montón de codecs est’andares basados en t’ecnicas PAC. Estos codecs no son propietarios, aunque muchos est’an patentados y la mayoría de ellos por el Instituto Fraunhofer (por lo que habría que pagar si te dedicas a ganar dinero con ellos). Se usan para codificar el audio en las películas MPEG-1 (Video CD), MPEG-2 (DVD) y MPEG-4 (DivX). Las tasas de bits típicas van desde 32k bps hasta 320k bps.
Es la versión m’as simple del codec de audio usado en las secuencias MPEG. Requiere una cantidad de recursos mínima aunque la calidad es baja.
Versión intermedia del codec, tanto en calidad como en complejidad.
Este es el codec m’as usado hasta la fecha (se utiliza por ejemplo en los DivX’s). Permite representar las señales de audio est’ereo con una alta calidad a una tasa de bits de 128k bps.
Se utiliza principalmente en los DVD’s y en los DivX’s. Se utiliza a tasas de 320 kbps para ofrecer una alta calidad en audio multicanal.
Este es uno de los codecs de la clase PAC m’as usados en los DVD’s, donde se utiliza a una tasa de bits típica de 448k bps. Es propietario de Dolby Laboratories.
Fue creado por DTS Incorporated para usarlo en los DVD’s. La tasa de bits típica es de 768k bps. Es un codec basado en PAC.
Microsoft desarrolló este codec propietario como un competidor del MP3, fundamentalmente para no tener que pagar a los que poseen las correspondientes patentes. Se trata de un codec del tipo PAC que es ligeramente superior en relación calidad/bit-rate al MP3.
Es un codec basado en PAC desarrollado por la fundación Xiph.Org. Se utiliza para codificar audio a una alta calidad utilizando una tasa de bits típica que va entre 32k y 500k bps. Vorbis tiene una calidad comparable a WMA pero con la ventaja de ser totalmente libre.
Finalmente, la fundación Xiph.Org ha creado un codec totalmente reversible para codificar audio. Su principal desventaja es que genera una tasa de bits bastante alta (aproximadamente la mitad de la tasa generada con PCM) y variable (dependiendo de la complejidad del sonido). Se basa en LPC.
Todos los formatos de audio que existen pueden utilizarse, a priori, para hacer streaming de audio, es decir, reproducir a la vez que descargamos el fichero desde una fuente que no puede garantizar la tasa de descarga (transmisión), como ocurre casi siempre en Internet. Los sistemas de streaming deben soportar las siguientes posibilidades:
Cuando se hace streaming de un evento en directo, por ejemplo, los oyentes (clientes) se conectan al servidor de audio en cualquier instante y a partir de dicho momento es cuando comienzan a recibir el audio, no desde el comienzo.
Cuando se hace streaming en redes de comuntación de paquetes (como Internet), la variación de la latencia (jitter) no es cero. Esto significa que el tiempo que necesitan los paquetes para llegar desde el servidor hasta los clientes (latencia de la red) no es constante a lo largo del tiempo.
Cuando Internet se congestiona se retrasan demasiado y a veces se pierden los paquetes de datos. Los algoritmos de codificación de audio deben recuperarse de la p’erdida de un número definido de paquetes.
El acceso aleatorio al stream se consigue haciendo que al menos por zonas, el stream de audio sea descodificable de forma independiente. Esto tambi’en ayuda a ”solucionar” los errores. Para acomodar el jitter se utiliza la t’ecnica del buffering, es decir, almacenar unos cuantos segundos antes de comenzar la reproducción. Si adem’as la latencia de la red es suficientemente baja, el buffering puede ayudar a solucionar los errores mediante retransmisiones.
Para conseguir hacer streaming, en la pr’actica cada formato de audio puede llegar a soportar un nivel m’as de encapsulamiento (wrapping), es decir, se le añanden m’as cabeceras. Los diferentes “fabricantes” han construído distintos formatos de encapsulamiento para hacer streaming. Entre los m’as usados destacamos:
Propietario de Microsoft Corporation. Cambia la extensión al fichero encapsulado a ”.asf”.
Propietario de Apple Computer. La extensión típica del fichero ”encapsulante” es ”.mov”.
Propietario de RealNetworks Incorporated. Las extensiones típicas de los ficheros son ”.ra” y ”.ram”.
Propietario de Nullsoft. Se utiliza para transmitir ficheros MP3. Se utiliza el HTTP (HyperText Transfer Protocol) como protocolo de transporte.
Creado por Xiph.Org (y por tanto, es libre). Transmite ficheros MP3 y OGG. Utiliza el HTTP (HyperText Transfer Protocol) como protocolo de transporte.
Bien. Despu’es de esta larga introducción vamos a ver qu’e formatos de audio son los m’as corrientes.
RAW = Read And Write. Cuando seleccionamos esta forma de representación lo único que podemos asegurar es que no existen cabeceras. Todos los datos del fichero son muestras o datos que sirven para extraer las muestras. El codec m’as usado es PCM, aunque no es infrecuente usar DPCM y ADPCM (est’andares ITU G.72x). El formato RAW es tambi’en el formato elegido para los CD’s de audio.
AU = Audio for Unix. Es el formato original de las estaciones de trabajo Sun y Next. Generalmente utiliza PCM.
Es el formato de audio creado por Creative para las tarjetas de sonido Sound Blaster. Se usa PCM.
IFF = Interchange File Format. Creado por Electronic Arts y utilizado en los maravillosos ordenadores Commodore Amiga. Generalmente usa PCM aunque tambi’en puede trabajar con otros codificadores. Finalmente, podía almacenar secuencias MIDI (Musical Instrument Digital Interface) y MOD (MODule files).
AIFF = Audio Interchange File Format. Es el formato est’andar en las m’aquinas Applet Macintosh, aunque tambi’en es común entre las Silicon Graphics. AIFF es una mejora del IFF.
El formato WAVE es un caso particular del formato RIFF (Rich Interchange File Format). WAVE es el formato de los ficheros de audio en las m’aquinas con Windows. Generamente transporta muestras en formato PCM aunque puede contener otros tipos de codificaciones.
Almacena secuencias MP3.
Almacena secuencias WMA.
Almacena secuencias Speex, FLAC o Vorbis.
Vamos a comprobar cómo afecta el bit-rate a la calidad del audio usando Vorbis (instalar el paquete ”vorbis-tools”) y MP3 (instalar el paquete ”lame”). Tambi’en tendremos que instalar el programa mplayer. Este último programa puede ser instalado como un paquete o compilado directamente desde el repositorio, dependiendo de la distribución de Linux. Excepto en la Gentoo (que ya lo hace por defecto), se recomienda compilar los fuentes.