Professional Documents
Culture Documents
En general:
TRANSFORMADA DISCRETA DE
FOURIER
La matriz de Fourier FN y FN-1 produce la transformada discreta de
Fourier y su inversa. Una función de serie infinita se convierte en un
vector con sumas finitas.
TRANSFORMADA RAPIDA DE
FOURIER
a=audiorecorder(Fs,8,1);
disp('comenzar e');
recordblocking(a,5);
disp('terminó e');
y=getaudiodata(a);
audiowrite('e.wav',y,Fs);
a=audiorecorder(Fs,8,1);
disp('comenzar i');
recordblocking(a,5);
disp('terminó i');
y=getaudiodata(a);
audiowrite('i.wav',y,Fs);
a=audiorecorder(Fs,8,1);
disp('comenzar o');
recordblocking(a,5);
disp('terminó o');
y=getaudiodata(a);
audiowrite('o.wav',y,Fs);
a=audiorecorder(Fs,8,1);
disp('comenzar u');
recordblocking(a,5);
disp('terminó u');
y=getaudiodata(a);
audiowrite('u.wav',y,Fs);
Código para el reconocimiento de vocales:
% --- Outputs from this function are returned to the command line.
function varargout = interfaz_OutputFcn(hObject, eventdata, handles)
global transfvocala;
global transfvocale;
global transfvocali;
global transfvocalo;
global transfvocalu;
global filtrovoz;
global ya;
global ye;
global yi;
global yo;
global yu;
v1=audioread('a.wav');
v2=audioread('e.wav');
v3=audioread('i.wav');
v4=audioread('o.wav');
v5=audioread('u.wav');
ya=filter(filtrovoz,v1);
ye=filter(filtrovoz,v2);
yi=filter(filtrovoz,v3);
yo=filter(filtrovoz,v4);
yu=filter(filtrovoz,v5);
vocala=norm(ya);
vocale=norm(ye);
vocali=norm(yi);
vocalo=norm(yo);
vocalu=norm(yu);
transfvocala=abs(fft(vocala));
transfvocale=abs(fft(vocale));
transfvocali=abs(fft(vocali));
transfvocalo=abs(fft(vocalo));
transfvocalu=abs(fft(vocalu));
% --- Executes on button press in GRABAR.
function GRABAR_Callback(hObject , eventdata, handles)
% hObject handle to GRABAR (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global transfvocala;
global transfvocale;
global transfvocali;
global transfvocalo;
global transfvocalu;
global filtrovoz;
global ya;
global ye;
global yi;
global yo;
global yu;
Fs=44100;
a=audiorecorder(Fs,8,1);
disp('comenzar1');
recordblocking(a,5);
disp('terminó1');
y=getaudiodata(a);
audiowrite('voz.wav',y,Fs);
voz_usuario=audioread('voz.wav');
yuser=filter(filtrovoz,voz_usuario);
usuario=norm(voz_usuario);
global yu;
Fs=44100;
a=audiorecorder(Fs,8,1);
disp('comenzar1');
recordblocking(a,5);
disp('terminó1');
y=getaudiodata(a);
audiowrite('voz.wav',y,Fs);
voz_usuario=audioread('voz.wav');
yuser=filter(filtrovoz,voz_usuario);
usuario=norm(voz_usuario);
transfusuario=abs(fft(usuario));
axes(handles.axes4);
plot(abs(fft(yuser(1:floor(end/2)))));
ylim([0 600]);
error(1)=mean(abs(minus(transfvocala,transfusuario)));
error(2)=mean(abs(minus(transfvocale,transfusuario)));
error(3)=mean(abs(minus(transfvocali,transfusuario)));
error(4)=mean(abs(minus(transfvocalo,transfusuario)));
error(5)=mean(abs(minus(transfvocalu,transfusuario)));
min_error=min(error);
disp(min_error);
disp(error);
if(min_error==error(1))
vocal='A';
end
axes(handles.axes2);
plot(abs(fft(ya(1:floor(end/2)))));
hold on;
if(min_error==error(2))
vocal='E';
axes(handles.axes2);
subplot(2,1,1);
plot(abs(fft(ye(1:floor(end/2)))));
hold on;
end
if(min_error==error(3))
vocal='I';
axes(handles.axes2);
subplot(2,1,1);
plot(abs(fft(yi(1:floor(end/2)))));
hold on;
end
if(min_error==error(4))
vocal='O';
axes(handles.axes2);
subplot(2,1,1);
plot(abs(fft(yo(1:floor(end/2)))));
hold on;
end
if(min_error==error(5))
vocal='U';
axes(handles.axes2);
subplot(2,1,1);
plot(abs(fft(yu(1:floor(end/2)))));
end
disp(vocal);