Professional Documents
Culture Documents
gui_Singleton =1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn',
@Reconocimiento_voz_1_OpeningFcn, ...
'gui_OutputFcn',
@Reconocimiento_voz_1_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State,
varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
function sonidoN=normalizar(sonido)
maximo=max(abs(sonido));
n=length(sonido); %calcula el tamao del vector
sonidoN=zeros(1,n);
for i=1:1:n
sonidoN(i)=sonido(i)/maximo;
end
voz_usuario=audioread('voz.wav');
norm_usuario=normalizar(voz_usuario);
transf_usuario=abs((fft(norm_usuario))); %transformada rapida
de Fourier
%Esto nos permitira manejar los errores cuando la voz no se
encuentre en
%nuestra BD
min_error=100000;
transff_bd=1;
nombre=' ';
%
lee_audios = dir([pwd '\*.wav']); %el formato de audio puede
ser modificado.
for k = 1:length(lee_audios)%recorre nmero de audios
guardados en el directorio
audio_nom = lee_audios(k).name; %Obtiene el nombre de los
audios
if ~strcmp(audio_nom,'voz.wav')
voz_bd = audioread([pwd '\' audio_nom]);
norm_voz_bd=normalizar(voz_bd);
transf_voz_bd=abs((fft(norm_voz_bd)));
actual_error=mean(abs(transf_voz_bd -
transf_usuario));
if actual_error < min_error
min_error=actual_error;
nombre=audio_nom;
transff_bd=transf_voz_bd;
end
end
end