Practica 4 Reconocimiento de Voz Matlab
Short Description
Download Practica 4 Reconocimiento de Voz Matlab...
Description
Instituto Tecnológico de Ciudad Guzmán.
Materia: Procesamiento de Señales Digitales Trabajo: Practica 4 Integrantes del Equipo: Jorge Radilla López Miguel Ángel López González Manuel Ochoa Alcaraz
Objetivo El objetivo de esta practica es usando el matlab desarrollar una aplicación de reconocimiento de voz, para poder así hacer manipular a largo plazo la computadora con el uso de la voz humana
Desarrollo %Primera parte practica 4 fs=11025; Grab=1;
%Esta es la Frecuencia de muestreo %En esta variable donde se indica el tiempo de gravacion
%wavrecord es una instruccion la cual grava lo que se introduce mediante el %microfono y=wavrecord(Grab*fs,fs,'double'); wavplay(y,fs); %funcion usada para reproducir algun sonido wav wavwrite(y,fs,'a'); %Grava en un archivo wav en este caso lo que se gravo mediante el microfono %en el ultimo parametro se indica el nombre del archivo %que se creara ts=1/fs; %es el Tiempo de muestreo t=0:ts:Grab-ts; %genera el tiempo con el cual se graficara la señal en este caso %la gravacion %se grafica la el sonido subplot(2,1,1) %sirve para que en este caso en la misma ventana aparescan %dos graficas una debajo de la otra o lo ocntrario plot(t,y); grid; N=length(y); x=fft(y,N);
%'N' Es el numero de muestras de la señal capturada %Se aplica la formula de la Transformada de Fourier
%Para pasarla de coordenadas polar a coordenadas cartesianas %se multiplica con su conjugado x=x.*conj(x)/N; f=(0:N-1)*fs/N;
%Se grafica la funcion compuesta pero ya despues de aplicarle la %transformada de Fourier, la grafica se encuentra en el dominio de la %frecuencia subplot(2,1,2) plot(f(1:N/2),x(1:N/2)) grid %Se lee el archivo wav para despues graficarlo s=wavread('a',fs); %Grafica el archivo leido se grafica el cual esta en el dominio del tiempo figure(2); plot(s);
%Se aplica la tranformada de fourier al archivo leido (la vocal)la cual se %de estar en dominio del tiempo pasa a dominio de la frecuencia N=length(s); x=fft(s,N); %convierte de coordenadas polares a coordenadas cartesianas x=x.*conj(x)/N; f=(0:N-1)*fs/N; %se grafica la tercera señal que es el archivo leido en dominio de la %frecuencia figure(3); plot(f(1:N/2),x(1:N/2))
%parte 2 practica 4 %una vez que se an almacenado las 5 vocales %esta parte se lee cada vocal y se almacena en una variable a=wavread('a.wav'); e=wavread('e.wav'); i=wavread('i.wav'); o=wavread('o.wav'); u=wavread('u.wav'); %se agrupan las vocales en patrones datos=[a e i o u];
save data datos;%se crea un archivo con el nombre data
% PRACTICA 4 PARTE 3
load data; Fs=11025; grab=1; ts=1/Fs;
%se lee el archivo data donde se almacenoron los patrones %es la Frecuencia de muestreo %Tiempo de grabacion %es el Tiempo de muestreo
t=0:ts:1-ts;
%se generan los datos del tiempo en cual se graficara
% graficacion en el dominio del tiempo for cont=1:5 subplot (5,2,2*cont-1) plot(t,datos (:,cont)) grid end [Reng,Column]=size (datos); fou=zeros (Reng,Column); % graficacion en el dominio de la frecuencia %con este ciclo el proceso se realizara 5 veces la cantidad de vocales for cont=1:5 y=datos (:,cont); %Se aplica la tranformada de fourier al archivo leido (la vocal)la cual se %de estar en dominio del tiempo pasa a dominio de la frecuencia N=length(y); x=fft(y,N); %convierte de coordenadas polares a coordenadas cartesianas x=x.*conj(x)/N; f=(0:N-1)*Fs/N; fou(:,cont)=x; %se grafica en dominio de la frecuencia subplot (5,2,2*cont) plot(f,fou (:,cont)) grid end % Lectura de una nuva grabacion
detectar=wavrecord (Fs*Grab,Fs,'double'); wavplay(detectar,Fs); %obtencion de frecuencias de la grabacion %s repite lo de la practica 3 para obtener la señal en dominio de la %frecuencia y se grafica N=length (detectar); x=fft(detectar,N); x=x.*conj(x)/N; f=(0:N-1)*Fs/N; % comparacion de la lectura nueva con los patrones d=zeros (1,5);
%vector donde se almacena la distancia
for cont=1:5 %d(1,cont)=sqrt(sum((fou(:,cont)-x).^2)) %distancia euclides d(1,cont)=sqrt(sum((datos(:,cont)-x).^2));%distancia euclides end
[dmin,index]=min(d); mensajes=['a','e','i','o','u']; sprintf ('la letra que pronunciaste :') mensajes(index)
Conclusión El uso de la voz para el uso de una computadora es muy importante para aquellas personas que carecen de sus facultades visuales o alguna extremidad que les impida el uso de las computadoras y usando la voz en vez de las manos seria más fácil el desempeño de la computadora
View more...
Comments