Sei sulla pagina 1di 3

SONIDO EN MATLAB

FRECUENCIA QUE PERCIBE EL SER HUMANO: SONIDOS GRAVES Y AGUDOS


El odo humano es capaz de captar vibraciones de un amplio espectro de frecuencias (aproximadamente entre 20 y 20
000 Hz, margen de audiofrecuencias que determina el llamado espectro audible.
Los sonidos o tonos agudos
Este intervalo de altas frecuencias o tonos agudos est comprendido entre los 5.000 y 20.000 hercios. Los sonidos
Agudos tienen relacin con el tono y este a su vez con la frecuencia. a mayor frecuencia mas agudo es el sonido
Graves / tonos graves
Los graves o tonos graves son la el intervalo de las bajas frecuencias, que el odo humano es capaz de interpretar. Este
margen est comprendidas entre los 20 y 300 Hz.
1. capturar sonido con el microfono
Se usa el comando
wavrecord ;
su sintaxis es
Fs = 11025;
y = wavrecord(5*Fs, Fs, int16);
en la cual:
Fs= frecuencia de muestreo
el numero 5 significa la cantidad de segundos que estamos grabando
int16 se usa para el numero de bits (se puede obiar)
particularmente yo lo obivio por que me crea una copia del vector para otro canal es decir mi comando queda de la
siguiente manera :
Fs = 11025;
y = wavrecord(5*Fs, Fs)
y comenzamos a hablar por el microfo, nos damos cuenta de que esta grabando cuando en la parte inferior izquierda
dice busy, una vez finalizado podemos reproducirlo con:
wavplay(y, Fs); si es que hemos colocado el int16 o
sound(y,Fs) si es que no hemos utilizado el int16
Resumiendo mi Voz esta guardada en la variable y
En Matlab se puede guardar este vector en un archivo de extension .wav
la sintaxis es:
wavwrite(y,Fs,ajg.wav);
donde y es el vector donde esta nuestra voz
Fs es la frecuencia de muestreo a la cual a sido muestreada el vector y
ajg.wav es el nombre del archivo que se va ha crear.
este archivo se guarda dentro de la carpeta work , la cual esta dentro de la carpeta matlab en la unidad .
Supongamos que queremos cargar ese archivo de voz ajg.wav u otro archivo de voz que tengamos en este formato
lo primero es que el archivo de voz debe de estar en la carpeta works del matlab.
Ejecutando el siguiente comando y listo:
[X,Fs,NBITS]=wavread(archivo.wav)
donde X es el vector donde se almacenara el archivo de audio
Fs es la frecuencia de muestreo del archivo de audio
y NBITS es el numero de bits con el que esta el archivo de audio
con esto ya tenemos nuestra grabacion en el vector y, y tambien esta en el vector X

Manejo de archivos de sonido

Para capturar una seal por la entrada auxiliar de la tarjeta de sonido del computador, MATLAB cuenta con
la funcin wavrecord(t*Fs,Fs,Ch) cuyos parmetros corresponden al tiempo en segundos de captura de la
seal, frecuencia de muestreo (admite 8000, 11025, 22050 y 44100), el tipo de canal (1 para mono y 2
para stereo).
Si se desea capturar una seal en stereo con 5 segundos de duracin, con una frecuencia de muestreo de
11.025 podemos emplear las siguients funciones:
Fs = 11025;
y = wavrecord(5*Fs, Fs, 2);
Para guardar una seal capturada en formato wav se puede hacer uso de la funcin
wavwrite(y,Fs,NBits,'Nombre.wav') cuyos parmetros corresponden a la seal grabada, la frecuencia de
muestreo, el nmero de bits (puede ser 8, 16, 24 o 32) y el nombre del archivo en el cual se grabar el
sonido. Hay que tener en cuenta que los valores de amplitud que estn fuera del rango [-1,+1]
son clipeados.
Si no se especifican los NBits el programa asume por defecto 16 Bits.
Si no se determina una Fs, el programa asume por defecto 8000 Hz.
Por ejemplo, para guardar el sonido capturado anteriormente se emplear el siguiente comando:
wavwrite(y,Fs,16,'sonido_uno.wav')
Para escuchar o manipular vectorialmente un sonido almacenado en formato wav se utilizan dos
comandos.
wavread('File.wav')
sound(Var)
Para el ejemplo anterior File es el nombre del archivo que se desea escuchar, los valores de amplitud
deben estar en el rango [-1,+1].
La variable Var corresponde al vector que se desea escuchar cuya frecuencia de muestreo por defecto
ser de 8192 Hz.
Si se utiliza sound(var,Fs) el resultado ser un sonido con una frecuencia de muestreo definida por el
usuario. Se asume que los valores estn dentro del rango [-1,1] ya que los valores que estn fuera del
rango son clipeados.
Si se emplea sound(var,Fs,Bits) sonar con una frecuencia de muestreo definida por el usuario y
determinados nmero de Bits por muestra.
Por ejemplo, para escuchar la seal guardada anteriormente como sonido_uno, se asigna a una
variable s el comando wavread y luego se escucha con el comando sound.
s= wavread('sonido_uno.wav');
sound(s,44100)
Si se desean conocer los datos de un archivo en formato wav, como los valores del vector, su frecuencia
de muestreo o el nmero de bits NBits por muestra, se emplea la siguientes sintaxis:
[y,Fs,NBits]=wavread('file.wav')
En la variable y se almacenan los valores del vector, en la variable Fs se almacena la frecuencia de
muestreo y en la variable Nbits se almacena el nmero de bits por muestra del archivo con formato wav. Si
se desea saber la dimensin de los canales del archivo en formato wav, se utiliza el siguiente comando:
siz=wavread('file.wav','size')
En la variable siz se almacena la dimensin del archivo en formato wav.
Si se desean leer las primeras N muestras del archivo en formato wav se emplea el siguiente comando:
[n]=wavread('file.wav',Num)
En donde la variable Num corresponde a la cantidad de muestras que se desean tomar del archivo.
Si se desea obtener la informacin adicional contenida en un archivo de formato wav, como el copyright o
el ttulo, se emplea el siguiente comando[y,Fs,NBits,Opts]=wavread('file.wav')
En la variable y se almacenan los valores del vector, en la variable Fs se almacena la frecuencia de
muestreo, en la variable Nbits se almacena el nmero de bits por muestra y en la variable Opts se
almacena el resto de la informacin

TRANSFORMADA RPIDA DE FOURIER [FFT]


Si se desea obtener la transformada rpida de Fourier, se utiliza la sentencia x=abs(fft(vector a
trabajar)) en donde abs se refiere al valor absoluto o a la magnitud. Por su parte fft(x) es la
transformada discreta de Fourier de un vector x.
Los archivos violin.wav y flauta.wav se almacenaron anteriormente con el comando wavwrite. Se
necesita hacer una grfica espectral de sus seales, adems se desea saber cul fue el tamao de
las muestras y si las seales capturadas tienen uno o dos canales (Dimensin Vectorial).
v=wavread('violin.wav');
f=wavread('flauta.wav');
sound(v)
sound(f)
espv=abs(fft(v));
espf=abs(fft(f));
subplot(2,1,1),plot(espv),grid on,zoom,title('Espectro de un violin')
subplot(2,1,2),plot(espf),grid on,zoom,title('Espectro de una flauta')
Espectros de las ondas de violn y flautaEn las grficas se pueden observar la cantidad de
componentes armnicas para estos dos instrumentos.
Tamao de cada muestra
length(v) retorna 42860
length(f) retorna 97064

lo

lo

Dimensin vectorial
size(v) retorna 42860X1,
que indica que es una
seal monofnica.
size(f) retorna 97064X1,
que indica que es una
seal monofnica

Potrebbero piacerti anche