mini tutorial matlab audio

5
Instituto Tecnol´ ogico y de Estudios Superiores de Occidente Departamento de Electr´onica, Inform´ atica y Sistemas Tutorial Matlab/Octave Introducci´on alprocesamiento de audio L. M. Bazdresch Agosto 2009

Upload: ddanthe

Post on 23-Jun-2015

1.962 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Mini Tutorial Matlab Audio

Instituto Tecnologico y de Estudios Superiores de Occidente

Departamento de Electronica, Informatica y Sistemas

Tutorial Matlab/Octave

Introduccion al procesamiento de audio

L. M. Bazdresch

Agosto 2009

Page 2: Mini Tutorial Matlab Audio

Tutorial Octave: Procesamiento de audio

L. M. Bazdresch

Este tutorial presenta algunas de las herramientas basicas para iniciarse en elprocesamiento de audio en Matlab/Octave. El codigo presentado en este tutorialha sido probado solo en Octave; en Matlab pudiera ser necesario hacer algunosajustes.

En Windows, la instalacion de Octave incluye un paquete de procesamientode audio y de senales con los comandos que usaremos aquı. En Linux, es necesarioinstalar los paquetes a mano. Los que se necesitan son audio y signal. El paquetede audio es viejo, se recomienda instalar en su lugar el paquete aaudio disponibleen http://folk.uio.no/fl/aaudio.shtml.

Fuentes de audio

Octave tiene dos formas generales de leer una fuente de audio. Una es leyendoun archivo con las muestras de audio (por ejemplo, un archivo .WAV). Otra esgrabando audio directamente de un microfono, utilizando la tarjeta de sonido.

Lectura de archivo

Octave incluye un comando para leer un archivo .WAV:

[ x , f s , b i t s ] = wavread ( f i l ename ) ;

donde x es una matriz con una columna por cada canal de audio, fs es lafrecuencia de muestreo (especificada en el encabezado del archivo .WAV), bitses el numero de bits por muestra (tambien tomado del encabezado), y filename

es el nombre del archivo .WAV entre comillas simples.

Grabacion

Para grabar directamente de un microfono, se puede usar el comando aurecorddel paquete de audio:

[ x , fsu , chanu ] = aurecord ( t , f s , chan ) ;

donde t es el tiempo que se desea que dure la grabacion, fs es la frecuencia demuestreo deseada, y chan es el numero de canales deseados. Es posible que latarjeta de sonido no soporte la frecuncia de muestreo o el numero de canalesque se pidieron; en las variables fsu y chanu regresa los valores que realmentese usaron. Las muestras de audio se regresan en la matrix x.

Utilizando el paquete aaudio, la grabacion se puede hacer con el comando:

Y = arecord ( frames , channels , f s ) ;

1

Page 3: Mini Tutorial Matlab Audio

donde frames es el numero de muestras que se quiere capturar, channels es elnumero de canales, y fs es la frecuencia de muestreo.

Destinos del audio

Una vez que el audio ha sido leıdo y procesado, se pueden hacer dos cosascon el: grabarlo en un archivo o reproducirlo.

Escritura de archivos .WAV

La forma mas facil de escribir un archivo de audio es con wavwrite:

wavwrite (x , f s , b i t s , f i l ename )

donde las variables tienen el mismo significado que en wavread. El archivo .WAVque resulta puede ser reproducido fuera de Octave con cualquier programade audio (mplayer, vlc, Windows Media Player, WinAmp, iTunes, Audacity,etcetera).

Reproduccion

Para reproducir el audio desde Octave, se pueden usar los comandos

sound(x , f s )

del paquete audio o bien

aplay (x , f s )

del paquete aaudio.

Analisis en frecuencia

Junto con el procesamiento del audio, es conveniente poder analizarlo enfrecuencia. Con una senal que generalmente contiene muchas frecuencias y esde larga duracion (decenas o centenas de segundos), la transformada de Fourierdirecta de la senal no da mucha informacion. Por ejemplo, la siguiente figuramuestra el espectro de magnitud de nueve segundos de una cancion. No sepuede observar gran cosa: las frecuencias bajas tienen mas energıa que las altas,y a partir de unos 5000-8000Hz la senal tiene pocas componentes; y la cancioncontiene frecuencias hasta unos 22kHz, que es lo que se espera de una senaltomada de un CD. Sin embargo, la transformada de Fourier pierde la informacionde como cambian las frecuencias con el tiempo.

2

Page 4: Mini Tutorial Matlab Audio

0

0.002

0.004

0.006

0.008

0.01

0.012

0.014

-30000 -20000 -10000 0 10000 20000 30000

Am

plit

ud

Frecuencia (Hz)

Espectro de Magnitud

El espectrograma suele ser mas util para el analisis de audio. Es una figuratridimensional que rescata la dinamica temporal de la cancion. La senal se divideen intervalos muy pequenos y se obtiene la transformada de cada intervalo; lainformacion frecuencial de cada intervalo se aprecia con colores. La siguientefigura muestra el espectrograma de la misma cancion.

frecuencia

tiempo

n=16, fs=44.1e3

0

5000

10000

15000

20000

0 1 2 3 4 5 6 7 8 9

El codigo para generar este espectrograma es el siguiente:

3

Page 5: Mini Tutorial Matlab Audio

% o func in para generar espectrogramas de una n s e a l de audio

% argumento de entrada : e l nombre de l a rch ivo . wav que cont i ene e l audio% hay que pasar e l nombre como s t r ing , e s dec i r , en t r e c om i l l a s s imp l e s

function specgr ( f i l ename )

%%%% l e e r un cana l de l a rch ivo o r i g i n a l[ y , Fs ]=wavread ( f i l ename ) ;x=y ( : , 1 ) ’ ;clear y ;

% parametros que ne c e s i t a specgramstep = f ix (5∗Fs /1000 ) ; % rebanadas e s p e c t r a l e s de 5mswindow = f ix (20∗Fs /1000 ) ; % ventana de datos de 20f f t n = 2ˆnextpow2(window ) ; % s i g u i e n t e potenc ia de dos[ S , f , t ] = specgram(x , f f t n , Fs , window , window−s tep ) ;

% g r a f i c a c i o nfigure ( 1 ) ;S = abs (S ( 2 : f f t n ∗20000/Fs , : ) ) ; % magnitud en e l rango 0<=20000 HzS = S/max(S ( : ) ) ; % normal i za r magnitud para que e l amximo sea 0 dS = max(S , 10ˆ(−60/10)) ; % c l i p abajo de −60 dBS = min(S , 10ˆ (0/10 ) ) ; % c l i p a r r i b a de 0 dB .imagesc ( t , f , log10 (S ) ) ; % mostrar en e s c a l a ı l ogar tmicaset (gca ( ) , ” yd i r ” , ”normal ” ) ;t i t l e ( ’n=16 , f s =44.1 e3 ’ ) ;xlabel ( ’ tiempo ’ ) ;ylabel ( ’ f r e cu enc i a ’ ) ;% print −c o l o r b16r441 . eps % para grabar l a imagen en arch ivo

4