You are on page 1of 12

Escuela de Ingeniera Tcnica de Telecomunicacin

Prctica M01

COMPRESIN DE AUDIO
Cdificador MP3 mediante MatLab

Escuela de Ingeniera Tcnica de Telecomunicacin

INTRODUCCIN:

De entre todos los estndares de audio, el MPEG-1 Layer 3, o MP3, es el formato de compresin ms conocido, y que ms ha influido en el actual empleo multitudinario de audio digital comprimido en la gran mayora de los sistemas de reproduccin de audio y sistemas multimedia. Aunque han aparecido otros estndares posteriores con mejores prestaciones (como el AAC de MPEG-2 y 4), la prctica totalidad de los dispositivos multimedia soportan el estndar MP3, y este es uno de los motivos por los que se sigue utilizando el MPEG-1 Layer 3 a pesar de que en la actualidad no es el mejor. En esta prctica, vamos a analizar un codificador de audio de MP3, basado en MatLab, y del cual disponemos todo el cdigo, con el fin de comprender y analizar los conceptos tericos estudiados sobre el estndar en las clases tericas. Por este motivo, resulta ms que recomendable un repaso detallado del funcionamiento del estndar antes de iniciar la realizacin de esta prctica.

1. Estndar MPEG-1 Audio Layer 3


En el tema 4 de la asignatura, hemos estudiado con detalle los diferentes estndares de compresin de audio, entre los que se encuentra el MP3. En este tema, analizamos el procedimiento de compresin, sus fundamentos tericos, as como la justificacin y utilidad de cada uno de los bloques. De forma genrica, en el estndar MP3 se define tres niveles de codificacin denominados 1, 2 y 3. Del primero al tercero aumentan tanto la complejidad del codificador como la calidad del sonido. Los tres son compatibles jerrquicamente. MPEG-1 define para cada nivel el formato del flujo de datos y el decodificador. Con el fin de poder admitir futuras mejoras, no se define el codificador, pero en un apartado informativo se da un ejemplo de codificador para cada uno de los niveles. Se puede construir el codificador que se desee siempre y cuando el flujo de bits generado tras codificar cumple con el estndar. De hecho el codificador que utilizaremos en esta prctica cumple con el estndar puesto que los clips comprimidos podrn ser reproducidos en cualquier reproductor MP3. El nivel 3 (Layer 3) es el ms complejo de los tres. Su diagrama de flujo se muestra a continuacin. Se caracteriza por tener dos bucles que van realizando mltiples iteraciones para procesar los datos con mayor nivel de calidad para una determinada ventana de muestras de la seal de entrada. El proceso de codificacin se basa en una serie de pasos o acciones que se realizan en cada uno de los bloques (consultar con los apuntos para ms detalle): Banco de filtros. Modelo psicoacstico. Joint Stereo Coding. Cuantificacin y codificacin. Formado por dos bucles anidados el bucle interno (rate loop)
UCAM E.I.T.T. 2 / 12 2006 Rafael Berenguer Vidal

SIM_M01_0607_v1_00.doc

Escuela de Ingeniera Tcnica de Telecomunicacin


y el bucle externo (control distortion loop). Formateador de trama.

El trabajo previo a realizar para realizar esta prctica: Repasar los conceptos tericos del tema 4, en concreto, el punto 9.1 y anotar sobre este grfico la funcionalidad de cada uno de los bloques y qu datos de entrada y salida proporciona cada uno.

SIM_M01_0607_v1_00.doc

UCAM E.I.T.T. 3 / 12

2006 Rafael Berenguer Vidal

Escuela de Ingeniera Tcnica de Telecomunicacin


NOTAS:

2. Codificador MP3 basado en MatLab


El proyecto con el que vamos a trabajar en esta prctica es un programa que convierte un archivo de sonido WAV de Microsoft, en un archivo de sonido MP3, de acuerdo a las especificaciones dadas en el estndar internacional ISO/IEC 11172-3. El archivo WAV debe ser monofnico, con frecuencia de muestreo igual a 44.1 KHz y en formato PCM de 16 de bits. El archivo resultante es creado con el mismo nombre del archivo WAV original, y est codificado en formato MPEG-1 Capa III, con las siguientes caractersticas: Tasas de transferencia = 96...320 Kbps. Frecuencia de muestreo = 44.1 KHz. Modo = Monofnico. El proyecto consiste de varios archivos .m relacionados entre s, pensados para funcionar como un todo (y no para su utilizacin independiente); aunque despus de entender el cdigo, pueden ser personalizados. Cada uno de los ficheros realiza la funcin de uno de los bloques del grfico anterior. Aunque en algunos casos la funcionalidad de un slo bloque es realizada por varios ficheros .m Los archivos que se incluyen en este proyecto son: Archivo principal:
o Wav2mp3.m

Filtro hbrido:
o o o o Ci.mat Filtro_subbanda.m Transf_discreta_coseno.m Aliasing.m

SIM_M01_0607_v1_00.doc

UCAM E.I.T.T. 4 / 12

2006 Rafael Berenguer Vidal

Escuela de Ingeniera Tcnica de Telecomunicacin


Modelo Psicoacstico I:
o o o o o o Analisis_fft.m Limites_banda_critica.m Componentes_tonales.m Reduccion.m Umbrales_enmasc_individual.m Umbral_enmasc_global.m

Cuantizacin/Codificacin:
o o o o Distorsion_permitida.m Ciclo_interno.m Huffman.m Ciclo_externo.m

Formato:
o o o Encabezado.m Info_secundaria.m Datos_principales.m

Los archivos son totalmente modificables, de acuerdo con lo que deseemos visualizar del programa. Adicionalmente, se incluyen tres archivos que pueden ser usados si deseamos ampliar el codificador hacia las Capas I y II del formato de audio MPEG-1. Estos archivos extra intentan facilitar la ampliacin y mejora del codificador. Los 3 archivos adicionales son (todos pertenecientes al modelo psicoacstico I):
o o o Factores_escala.m Nivel_presion_sonora.m Umbral_enmasc_minimo.m

El cdigo ha sido probado en MATLAB 5.2, 6.X y 7.X, sobre Windows. Para utilizar el programa, se deben copiar todos los archivos en un directorio del disco que est incluido en el PATH de MatLab y luego llamar al programa principal wav2mp3 desde la ventana de comandos. Es un programa interactivo y por tanto va solicitando al usuario los datos a medida que stos son necesarios para el proceso de compresin. Este programa est pensado de una manera didctica, y el objetivo principal no es un desempeo ptimo en cuanto a velocidad o calidad en el sonido, sino mostrar lo ms detalladamente posible cmo funciona el esquema de codificacin MP3. En cuanto a la velocidad de codificacin, lo ms recomendable es codificar trozos pequeos de fichero de audio, ya que el codificador en MatLab no fue pensado para trabajar en tiempo real, adems de que la manera en que MatLab est construido, no lo permite. Este programa est basado en: Information Technology -- Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s -- Part 3: Audio. ISO/IEC. Genve, Switzerland. First Edition. 1993-08-01. ISO/IEC IS 11172-3, propiedad de la Organizacin
SIM_M01_0607_v1_00.doc UCAM E.I.T.T. 5 / 12 2006 Rafael Berenguer Vidal

Escuela de Ingeniera Tcnica de Telecomunicacin


Internacional para la Estndarizacin (ISO).

NOTAS:

3. Preparar esta prctica

En el comn se dispone de los ficheros necesarios para realizar esta prctica. En concreto estn almacenados en el directorio //Comun/SIM/Ejercicios/. No obstante, dado que en esta unidad no est permitido escribir, los copiaremos a la unidad personal donde podremos trabajar. Copiar la carpeta PrcticaM01 de la carpeta //Comun/SIM/Ejercicios a //Personal/SIM/Ejercicios. Esta carpeta PrcticaM01 contiene los archivos que utilizaremos para trabajar en esta primera parte de la prctica.

La primera tarea que realizaremos ser abrir Director: Abrir el programa MatLab 7.X desde el men Inicio de Windows. Una vez abierto el programa, definiremos el path de trabajo del MatLab al directorio //Personal/SIM/Ejercicios/PrcticaM01 desde el inferfaz grfico del programa.

Tras realizar la asignacin del path, nos aparecer en la ventana, Current Directory el listado de ficheros de los que se compone el proyecto: Abrir el fichero Lame.txt

Este fichero contiene la descripcin del punto 2 as como los crditos sobre la autora de este proyecto. Abrir el fichero Factores_escala.m y analizar su contenido. Para qu capa de MPEG-1 se utiliza este fichero? Qu almacena la variable TFE? Qu relacin existe entre la variable de entrada S y la variable de salida FDE? Cerrar el fichero.

NOTAS:

SIM_M01_0607_v1_00.doc

UCAM E.I.T.T. 6 / 12

2006 Rafael Berenguer Vidal

Escuela de Ingeniera Tcnica de Telecomunicacin

4. Anlisis de Wav2mp3.m
Abrir el fichero Wav2mp3.m y analizar su contenido.

El fichero principal del proyecto es Wav2mp3.m. Vamos a analizar dicho fichero antes de utilizarlo.

Qu ocurre si al ejecutar el programa el fichero .wav de entrada tiene una frecuencia de muestreo distinta de 44.1 KHz.? Y si el fichero de entrada es estreo?

En la lnea 86, se ejecuta un switch en funcin del valor de tasa de bit. Qu variables se inicializan en funcin del valor del bitrate? Estas variables se utilizan posterioremente en las llamadas a otras funciones. A qu funciones nos referimos? Qu representan entonces estas variables?

En la lneas 155, 157, 161, 164 y 170, se inicializan un conjunto de valores: Qu variables se inicializan? Cul es la utilidad de cada una de ellas dentro del proceso de compresin?

En la lnea 199 se ejecuta un bucle for: Entre qu valores vara la variable a? Por qu motivo el incremento de la variable es 1152? Cmo se consigue que rsize sea mltiplo de 1152?

Lnea 208: Qu almacena la variable ENT? Qu funcin realiza por tanto el comando wavread?

En la lnea 213 se realiza una llamada a la funcin Analisis_fft.m: Abrir esta funcin. Qu funcin realiza? Qu relacin existe entre la variable de entrada ENT y la variable de salida F? Por qu se enventana mediante hanning?

Lneas 221, 227 y 240: Analizando los ficheros a los que se llama, explicar qu funcin realizan cada una de estas lneas y relacionarlo con el grfico del proceso de compresin del punto 1 de esta prctica. En qu punto de la compresin tendremos los datos almacenados en la variable S, una vez hayamos finalizado el bucle for de la lnea 239?

En la lnea 258, se inicia un bucle for que se repite dos veces. A qu bloques del diagrama del estndar de compresin, corresponde dicho bucle for? Por qu se ejecuta 2 veces?

SIM_M01_0607_v1_00.doc

UCAM E.I.T.T. 7 / 12

2006 Rafael Berenguer Vidal

Escuela de Ingeniera Tcnica de Telecomunicacin


En la lnea 263, se produce un solapamiento de la seal de entrada. Por qu se realiza este solapamiento? Qu mtodo se utiliza para calcular la MDCT? Coincide esta expresin de clculo con la vista en clase?

Lnea 283: Para qu se utiliza la variable XR? Dnde se calcula dicha variable?

En las lneas 307-443, tiene un lugar unos de las acciones ms importantes del proceso de compresin. A qu bloques del diagrama del estndar, corresponden dichas lneas del cdigo? Qu funcin realiza el Ciclo_interno y el Ciclo_externo? Cul de los dos se ejecuta primero? Cul se ejecuta el ltimo? Hay ms ejecuciones de ambas funciones en la compresin de una ventana de datos? En qu punto se calculan los factores de escala que se utilizan para la ventana? Cuntos factores de escala se utilizan? En la lna 442, se calcula la cantidad total de bits que usa el espectro cuantizado. Explicar qu elementos se tienen en cuenta para dicho clculo.

Lneas 449-461: Qu significa el padding_bit que se calcula en estas lneas? En qu caso ser distinto de 0?

Lneas 463-492: Qu tarea realiza la funcin Encabezado.m de la lnea 464? Qu datos se almacenan adems de los datos de audio comprimidos? Bajo qu variable se han almacenado stos?

Una vez, finalizado el bucle for principal, los datos se almacenan en el fichero de salida. En qu lneas del cdigo se realiza este proceso? Por qu al final existen varias lneas clear?

NOTAS:

SIM_M01_0607_v1_00.doc

UCAM E.I.T.T. 8 / 12

2006 Rafael Berenguer Vidal

Escuela de Ingeniera Tcnica de Telecomunicacin

5. Empleo deI cdec

A continuacin vamos a emplear dicho codificador para comprimir varios ficheros .wav y comprobar su funcionamiento. Desde el entorno de MatLab lanzar la ejecucin de Wav2mp3.m Vamos a codificar el fichero voz.wav completo con 128 kbps. La compresin es lenta, por lo que debemos tener paciencia hasta que finalice. Se ejecuta correctamente dicha compresin?Cul es el nombre del fichero .mp3 resultante? Reproducirlo en el reproductor multimedia. Es audible? Cmo es su calidad? Es similar al que obtendramos con otro cdec con el mismo clip de audio y la misma tasa de bit? Por qu motivo?

En primer lugar, vamos a modificar el programa para tener una realimentacin sobre el proceso de compresin. Vamos a modificar el programa Wav2mp3.m para que, como todos los cdecs, vaya mostrando el punto en el nos encontremos dentro del proceso de compresin. Modificar el fichero Wav2mp3.m para que vaya mostrando una indicacin similar a la siguiente en la barra de MatLab:

Comprimiendo fichero XXXXX de wav a mp3 -----> Comprimido 2.3 sg. de 12.7 sg. (18.11%) . . . -----> Comprimido 2.8 sg. de 12.7 sg. (22.05%) . . .

A continuacin vamos a modificar el interfaz del programa para que podamos introducir todos los parmetros directamente desde la llamada a la funcin. Modificar el interfaz del programa para que podamos llamar a la funcin segn se muestra a continuacin:

Wav2mp3(fichero.wav,tasabit,duracion_a_codificar)

Renombrar el fichero comprimido anteriormente. Recodificar el mismo fichero voz.wav con los mismos parmetros que antes, mediante el nuevo interfaz de llamada de la funcin Wav2mp3.m. Ocupa la misma cantidad de bytes? Tiene la misma calidad? Modificar ahora, la interfaz para que podamos indicar tambin el nombre del fichero de salida:

Wav2mp3(fichero_a_codificar.wav,fichero_codificado.mp3,tasabit,duracion_a_co

SIM_M01_0607_v1_00.doc

UCAM E.I.T.T. 9 / 12

2006 Rafael Berenguer Vidal

Escuela de Ingeniera Tcnica de Telecomunicacin


dificar)

Probar el funcionamiento del proceso de compresin mediante esta nueva llamada.

NOTAS:

6. Pruebas del codificador

En la carpeta de las prcticas tenemos los ficheros .wav clasica, corral, jazz, rock y voz, todos ellos muestreados a 44.1 KHz. Vamos a continuacin a codificar todos estos ficheros a diferentes tasas de bit para comprobar su calidad (subjetiva). Asimismo, vamos a aprovechar para hacer una prueba de rendimiento del codificador. Completar la siguiente tabla empleando la funcin anterior. Se sugiere construir un nuevo programa en MatLab que vaya haciendo llamadas a la funcin Wav2mp3.m pasndole diferentes nombres de ficheros .wav y tasas de bit, y registrando el tiempo requerido para la codificacin. Los ficheros mp3 de salida tambin debern ser guardados con diferentes nombres, con el fin de que posteriormente podamos valorar su calidad al reproducirlos mediante el reproductor multimedia.

SIM_M01_0607_v1_00.doc

UCAM E.I.T.T. 10 / 12

2006 Rafael Berenguer Vidal

Escuela de Ingeniera Tcnica de Telecomunicacin

Nombre del fichero a comprimir

Tasa de Bit (Kbps)


96 112 128 160 192 224 256 320 96 112 128 160 192 224 256 320 96 112 128 160 192 224 256 320 96 112 128 160 192 224 256 320 96 112 128 160 192 224 256 320

Tiempo total de compresin (sg. de compresin)

Tiempo relativo de compresin (sg. de comp. / sg. de duracin del audio)

Tamao total del fichero comprimido (KBytes)

Tamao relativo del fichero comprimido (KBytes / sg. de duracin del audio)

Calidad Subjetiva (1 mnima 5 mxima)

Glitches (Ninguno-PocosFrecuentes-Muchos)

clasica.wav

corral.wav

jazz.wav

rock.wav

voz.wav

Escuela de Ingeniera Tcnica de Telecomunicacin

Construir una nueva funcin en Matlab que permita mostrar las siguientes grficas para evaluar el proceso de compresin de los clips de audio: 1. Grfica que muestre el Tiempo relativo de compresin (ordenadas) en funcin del bitrate (abcisas). En la misma figura se dibujar la grfica de cada clip de audio con un color distinto, as como una sexta curva que mostrar la media de las cinco grficas. 2. Grfica que muestre el Tamao relativo del fichero comprimido de compresin (ordenadas) en funcin del bitrate (abcisas). En la misma figura se dibujar la grfica de cada clip de audio con un color distinto, as como una sexta curva que mostrar la media de las cinco grficas. 3. Grfica que muestre la Calidad subjetiva (ordenadas) en funcin del bitrate (abcisas). En la misma figura se dibujar la grfica de cada clip de audio con un color distinto, as como una sexta curva que mostrar la media de las cinco grficas.

NOTAS:

SIM_M01_0607_v1_00.doc Vidal

EITT 12 / 12

2006 Rafael Berenguer

You might also like