You are on page 1of 5

PONTIFICIA UNIVERSIDAD CATOLICA MADRE Y MAESTRA FACULTAD DE LAS CIENCIAS DE LAS INGENIERIAS DEPARTAMENTO DE INGENIERIA TELEMATICA

ASIGNATURA: COMUNICACIONES DIGITALES

CLAVE Y GRUPO: ITT-457-P-071

TITULO DE LA PRCTICA: Analizador de seales de audio

NUMERO DE LA PRCTICA: 4 PRESENTADO POR: LUIS SANTOS

FECHA DE ENTREGA: 27/3/2012

SANTIAGO, REPUBLICA DOMINICANA

RESUMEN DEL PROYECTO Se disear una aplicacin para analizar seales de audio. La misma permitir la grabacin de seales de audio de duracin variable, diferentes frecuencias de muestreo, diferentes tasas de bit por muestra, tanto mono como estreo. La aplicacin permitir reproducir la seal de audio, como tambin graficarla en el dominio del tiempo y en el de la frecuencia en Hz y almacenar el archivo de audio. La interaccin del usuario con la aplicacin se realizar a travs de una Interfaz Grfica de Usuario (GUI).

DISCUSION TECNICA En esta prctica se utilizaran los conocimientos adquiridos en prcticas anteriores especficamente la creacin de una interfaz grafica y la transformada rpida de Fourier (FFT) en conjunto con esto se utilizaran herramientas de MATLAB para el manejo y grabacin de audio. Primero se proceder a crear un interfaz grafica, la cual contara con graficas, botones y listas de acuerdo a las necesidades de la aplicacin; El propsito de la aplicacin es el anlisis de audio y para esto se proceder a capturar audio con el dispositivo de grabacin del computador (micrfono integrado (mi caso)) y esto se podr lograr utilizando las funciones para el manejo de audio con las que cuenta matlab, que en mi caso para capturar se utilizara audiorecorder (Fs,NBits,NCH) acompaada de recordblocking (obj,T) la cual recibe un objeto audio y el tiempo de grabacin. Terminada la grabacin se proceder a capturar los datos en un objeto tipo audio utilizando la funcin getaudiodata (audiograbado) esto proporcionara amplitudes en cada intervalo de tiempo de la seal de audio, las cuales se graficaran para visualizar su comportamiento. Tambin se mostrara una grafica con la potencia en cada intervalo de frecuencia, para esto primero se calculara la rpida transformada de Fourier de la seal de audio procesada y la misma se multiplicara por su conjugado, entonces se podr graficar potencia vs frecuencia. Mi aplicacin contara con dos botones, uno de estos inicia el proceso de conversin y graficado de la seal de audio, el otro reproducir lo que se grabo; Cabe destacar que antes o despus de grabado se podr variar la frecuencia de muestreo y que podrn ser elegidas en una lista , al igual que el numero de bits y el canal por igual, el tiempo de grabacin deber ser introducido por el usuario.

DISCUSION DE LOS RESULTADOS Los resultados obtenidos fueron los esperados, se realizaron pruebas con las distintas frecuencias de muestreo y con distintos nmero de bits/muestras en estreo y mono, cabe mencionar que cuando se utilizo un mayor nmero de bits/muestras la fidelidad incrementaba RESULTADOS

APENDICE
function procesar_Callback(hObject, eventdata, handles) % hObject handle to procesar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

global Frec;%variable global F=get(handles.frecuencia,'VALUE');%captura el valor del objeto en la lista switch %esta funcion reasigna el valor numerico de frecuencia correspondiente al elegido en la interfaz case 1 Frec=8000; case 2 Frec=11025; case 3 Frec=22050; case 4 Frec=44100; end BM=get(handles.bitmuestra,'VALUE');;%captura el valor del objeto en la lista switch BM %esta funcion reasigna el valor numerico de bit/muestras correspondiente al elegido en la interfaz case 1 BM=8; case 2 BM=16; case 3 BM=24; end CH=get(handles.canal,'VALUE');;%captura el valor del objeto en la lista switch CH %esta funcion reasigna el valor numerico del canal correspondiente al elegido en la interfaz case 1 CH=1; case 2 CH=2; end

T=str2double(get(handles.duracion,'string'))% se captura el valor numerico del tiempo global audio_procesado;%variable global %wavrecord(BM,F,CH,'double'); audio_sin_procesar=audiorecorder(Frec,BM,CH);%se prepara la grabacion del audio recordblocking(audio_sin_procesar,T);%se interrumpe la ejecucion un tiempo T para grabar el audio

audio_procesado=getaudiodata(audio_sin_procesar);%se procesa el audio grabado, se convierte en dato numerico x=fft(audio_procesado);%calcula la rapida transformada de fourier conjugado= x.*conj(x);%se multiplica la rapida trasnformada por el conjugado de la misma f=(100:3000);%rango de frecuencias axes(handles.grafica1);%selecciona el grafico 1 plot(audio_procesado);%grafica el amplitud vs tiempo title('Audio vs T');%titulo grafica xlabel('tiempo','fontsize',14);%asigna etiqueta al eje x ylabel('Amplitud','fontsize',14);%asigna etiqueta al eje y axes(handles.grafica2);%selecciona el grafico 2 plot(f,conjugado(1:2901));%grafica potencia vs frecuencia title('espectro de potencia');%asigna el titulo de la grafica xlabel('frecuencia(hz)','fontsize',14);%asigna etiqueta al eje x ylabel(' potencia(db)','fontsize',14);%asigna etiqueta al eje y

%function del boton reproducir function play_Callback(hObject, eventdata, handles) % hObject handle to play (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global audio_procesado;%variable globlal F=get(handles.frecuencia,'VALUE');%captura el valor de la frecuencia en la lista switch F%asigna el valor numerico de la frecuencia correspondiente al seleccionado en la lista case 1 Frec=8000; case 2 Frec=11025; case 3 Frec=22050; case 4 Frec=44100; end %f=str2double(Frec); wavplay(audio_procesado,Frec);%reproduce el audio procesado a una frecuencia frec

You might also like