Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Para Ingeniera
Sistema de reconocimiento de voz
2/12/2015
CETI (Colomos)
5B
Luis Enrique Prez Murillo 13310279
Marco Antonio Lopez Madera 13310194
Jorge Ivn Becerra Npoles 13310035
INTRODUCCIN
Lavozhumana seproducepormediodelaparatofonatorio.Esteestformadopor
los pulmones como fuente de energa, en forma de flujo de aire, la laringe que
contiene las cuerdasvocales,la faringe, lascavidadesoralynasalyuna seriede
elementos articulatorios: los labios, los dientes, el alveolo, el paladar, el velodel
paladar y lalengua, alcerrarse la glotis,las cuerdas vocalescomienzanavibrar
demodoaudible,producindoseunsonidotonal,esdecir peridico.Lafrecuencia
de este sonido depende de varios factores, entre otros deltamao y lamasade
las cuerdas vocales, delatensindelascuerdasvocales,delatensinqueseles
apliqueydelavelocidaddelflujodelaireprovenientedelospulmones.
TRANSFORMADARAPIDADEFOURIER
Las Transformadas Rpidas de Fourier son algoritmos especializados que
permiten a un procesador digitalhacerel clculo dela TransformadaDiscretade
Fourierde una forma eficiente,enloquerespectaacargacomputacional y tiempo
deprocesamiento. Sebusca realizarlarepresentacindeunasealoriginalmente
adquiridaenel dominio del tiempo (serie de tiempo),comofuncindeldominiode
la frecuencia. Dado que el proceso inverso tambin se puede implementar
mediante este algoritmo, se concluye que la FFT permite saltar de un dominio
cualquiera al otro. Por tratarse de un algoritmo desarrollado para un procesador
digital, se debe pensar en el carcterdiscretodelas dosrepresentaciones, pues
unsistemadeclculoartificialtienerecursoslimitadosdememoriaycapacidadde
cmputo y desdeestaperspectivanosepuedepensarenprocesarlassecuencias
infinitasdatospropiasdeltiempoodelafrecuenciacontinuas.
Laformulaestadadapor:
EXPLICACINDELREADECONOCIMIENTO
ProcesamientodeSealesDigitales
El procesamiento digital deseales(DSP) es lamanipulacin matemticadeuna
seal de informacin para modificarla o mejorarla en algn sentido. Este est
caracterizado por la representacin en el dominio del tiempo
discreto, en el
dominio
frecuenciadiscreta, u otrodominiodiscretodesealespormedio de una
secuenciadenmerososmbolosyelprocesadodeesasseales.
Esto se puede conseguir mediante un sistema basado en un procesador o
microprocesador queposee un juego de instrucciones, un
hardware y un
software
optimizados para aplicaciones que requieran operaciones numricas a muy alta
velocidad.
Se puede procesar una seal para obtener una disminucin del nivel de ruido,
para mejorar lapresencia dedeterminadosmatices,comolosgravesolosagudos
y serealiza combinando losvalores de la sealparagenerarotrosnuevos. As,el
DSP se utiliza en el procesamiento de
msica (por ejemplo
MP3), de voz (por
ejemplo,
reconocimiento de voz) en
telfonos celulares, de imgenes (en la
transmisindeimgenes
satelitales)yvdeo(DVD).
Fontica
Lafontica
e
selestudiodelossonidosfsicosdeldiscursohumano.Eslaramade
la lingsticaque estudiala produccinypercepcindelossonidosdeuna
lengua
Formantes
Laprincipal categora acsticaparacaracterizar lasvocalessonlosformantes,en
especiallosdosprimeros.
Losdosformantesserelacionanconlasdimensionesdelmovimientolingual.
los siguientes valores promedio para los formantes 1 y 2 en informantes
femeninos:
Vocal
Hombres
F1
F2
Mujeres
F1
F2
265Hz
2318Hz
241Hz
2835Hz
454Hz
1995Hz
492Hz
2252Hz
657Hz
1215Hz
664Hz
1168Hz
475Hz
888Hz
511Hz
981Hz
294Hz
669Hz
243Hz
629Hz
EsquemadelatrayectoriadeF1yF2enlascincovocalesdelespaol.
Asipues,losformantesnosayudanpoderrealizarlaidentificacindelasvocaleso
losnmerosdeunamaneramssencilla.
Domtica
Se llamadomticaal conjuntode
sistemascapaces de
automatizaruna
vivienda,
aportando servicios de gestinenergtica,seguridad,bienestar ycomunicacin,y
5
Desarrollo:
Bsicamente esteesel funcionamientodenuestroreconocedorde voz,pormedio
de un diagrama a bloques el cual primeramente, toma una muestra de voz por
medio de un micrfono para despus establecer ciertas caractersticas de
comparacinparamandarlasalasiguienteetapaypodercompararlacon nuestras
diferentes patrones anteriormente pregrabados,despus una vezque se calcula
el errorentrelasdoscomparacionestomaunadecisin.Paratomaresadecisiny
mostrarla fue necesario comparar la muestra de voz con todo nuestra base de
datosdeespectrospregrabados.
Eneldesarrollodeesteproyectosepresentalasiguienteinterfaz,lacualconstade
trespartesprincipalesysedescribenacontinuacin:
Espectrodelasvocales
vocalavocale
vocalivocalo
vocalu
Espectrodenmeros
nmero1nmero2
nmero3nmero4
nmero5
nmero6nmero7
nmero8nmero9
nmero10
10
Elprogramasedivideen4Scripsprincipales
1. Guardar.m://enesteapartadocaptalasealdeentradapormediodel
micrfonoelcualestconectadoalaentradadelacomputadorapara
posteriormenteguardareldatodeentradaenunarchivollamado
voz.wav
%1Grabar
%2Guardar
Fs=44100%frecuenciadelavoz
y=audiorecorder(Fs,16,1)
disp('Grabando')
recordblocking(y,2)
disp('FinGrabacin')
myRecording=getaudiodata(y)
play(y)
plot(myRecording)
audiowrite('voces\voz.wav',myRecording,Fs)
2. Normalizar.m//ennormalizarelsonidodeentradabsicamente
calculaseltamaodeladescomposicinvectorialpara
posteriormentecomparardatopordatodeesamatrizdelvector
%Normalizar
functionsonidoN=normalizar(sonido)
maximo=max(abs(sonido))
n=length(sonido)%calculaeltamaodelvector
sonidoN=zeros(1,n)
fori=1:1:n
sonidoN(i)=sonido(i)/maximo
end
end
3. Reconocer.m//enesteapartadosetienenlosarchivosyagrabadosde
cadaunodelosnmerosyvocales,loscualessemandana
normalizarparahacerladescomposicinvectorialdecadasonido,
unavezobtenidoestoselesacalatransformadarapidadefouriery
losvaloresabsolutosdecadadato.
%reconocer
v1=audioread('voces\a.wav')
v2=audioread('voces\e.wav')
11
v3=audioread('voces\i.wav')
v4=audioread('voces\o.wav')
v5=audioread('voces\u.wav')
v6=audioread('voces\1.wav')
v7=audioread('voces\2.wav')
v8=audioread('voces\3.wav')
v9=audioread('voces\4.wav')
v10=audioread('voces\5.wav')
v11=audioread('voces\6.wav')
v12=audioread('voces\7.wav')
v13=audioread('voces\8.wav')
v14=audioread('voces\9.wav')
v15=audioread('voces\10.wav')
%normalizar
vocala=normalizar(v1)
vocale=normalizar(v2)
vocali=normalizar(v3)
vocalo=normalizar(v4)
vocalu=normalizar(v5)
num1=normalizar(v6)
num2=normalizar(v7)
num3=normalizar(v8)
num4=normalizar(v9)
num5=normalizar(v10)
num6=normalizar(v11)
num7=normalizar(v12)
num8=normalizar(v13)
num9=normalizar(v14)
num10=normalizar(v15)
%transformadarapidadefuorierylesacamoselvalorabsoluto
transfvocala=abs(fft(vocala))
transfvocale=abs(fft(vocale))
transfvocali=abs(fft(vocali))
transfvocalo=abs(fft(vocalo))
transfvocalu=abs(fft(vocalu))
transfnum1=abs(fft(num1))
transfnum2=abs(fft(num2))
12
transfnum3=abs(fft(num3))
transfnum4=abs(fft(num4))
transfnum5=abs(fft(num5))
transfnum6=abs(fft(num6))
transfnum7=abs(fft(num7))
transfnum8=abs(fft(num8))
transfnum9=abs(fft(num9))
transfnum10=abs(fft(num10))
4. Menu_grafico.m//seencuentralainterfazgrficaquesevisualizaenel
programamostradoenlapresentacinelcualcadabotnoetiqueta
tieneunafuncinenespecfico(explicadosenlaprimerapartede
desarrollo)yenestapartedelcodigosehacelacomparacindatopor
datodelamatrizdelvectorparapoderarrojarunacomparacinconel
numerooletraselecccionado
functionvarargout=menu_grafico(varargin)
%MENU_GRAFICOMATLABcodeformenu_grafico.fig
%MENU_GRAFICO,byitself,createsanewMENU_GRAFICOorraises
theexisting
%singleton*.
%
%H=MENU_GRAFICOreturnsthehandletoanewMENU_GRAFICO
orthehandleto
%theexistingsingleton*.
%
%MENU_GRAFICO('CALLBACK',hObject,eventData,handles,...)calls
thelocal
%functionnamedCALLBACKinMENU_GRAFICO.Mwiththegiven
inputarguments.
%
%MENU_GRAFICO('Property','Value',...)createsanew
MENU_GRAFICOorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforemenu_grafico_OpeningFcngetscalled.An
%unrecognizedpropertynameorinvalidvaluemakesproperty
application
%stop.Allinputsarepassedtomenu_grafico_OpeningFcnviavarargin.
%
13
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonly
one
%instancetorun(singleton)".
%
%Seealso:GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelpmenu_grafico
%LastModifiedbyGUIDEv2.523Nov201510:10:14
%BegininitializationcodeDONOTEDIT
gui_Singleton=1
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@menu_grafico_OpeningFcn,...
'gui_OutputFcn',@menu_grafico_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[])
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1})
end
ifnargout
[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:})
else
gui_mainfcn(gui_State,varargin{:})
end
%EndinitializationcodeDONOTEDIT
%Executesjustbeforemenu_graficoismadevisible.
functionmenu_grafico_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareservedtobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstomenu_grafico(seeVARARGIN)
%Choosedefaultcommandlineoutputformenu_grafico
handles.output=hObject
%Updatehandlesstructure
14
guidata(hObject,handles)
%UIWAITmakesmenu_graficowaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure1)
%Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=menu_grafico_OutputFcn(hObject,eventdata,handles)
%varargoutcellarrayforreturningoutputargs(seeVARARGOUT)
%hObjecthandletofigure
%eventdatareservedtobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Getdefaultcommandlineoutputfromhandlesstructure
varargout{1}=handles.output
%Executesonbuttonpressinpushbutton1.
functionpushbutton1_Callback(hObject,eventdata,handles)
clearall
guardar
%Executesonbuttonpressinpushbutton2.
functionpushbutton2_Callback(hObject,eventdata,handles)
play(y)
%Executesonbuttonpressinpushbutton3.
functionpushbutton3_Callback(hObject,eventdata,handles)
reconocer
voz_usuario=audioread('voces\voz.wav')
usuario=normalizar(voz_usuario)
transfusuario=abs(fft(usuario))
nu=length(transfusuario)
error(1)=mean(abs(transfvocalatransfusuario))
error(2)=mean(abs(transfvocaletransfusuario))
error(3)=mean(abs(transfvocalitransfusuario))
15
error(4)=mean(abs(transfvocalotransfusuario))
error(5)=mean(abs(transfvocalutransfusuario))
error(6)=mean(abs(transfnum1transfusuario))
error(7)=mean(abs(transfnum2transfusuario))
error(8)=mean(abs(transfnum3transfusuario))
error(9)=mean(abs(transfnum4transfusuario))
error(10)=mean(abs(transfnum5transfusuario))
error(11)=mean(abs(transfnum6transfusuario))
error(12)=mean(abs(transfnum7transfusuario))
error(13)=mean(abs(transfnum8transfusuario))
error(14)=mean(abs(transfnum9transfusuario))
error(15)=mean(abs(transfnum10transfusuario))
min_error=min(error)
disp(min_error)
disp(error)
%compararymostrardependeidnodelerror
if(min_error==error(1))
set(handles.text2,'String','A')
end
if(min_error==error(2))
set(handles.text2,'String','E')
end
if(min_error==error(3))
set(handles.text2,'String','I')
end
if(min_error==error(4))
set(handles.text2,'String','O')
end
if(min_error==error(5))
set(handles.text2,'String','U')
end
if(min_error==error(6))
set(handles.text2,'String','1')
end
if(min_error==error(7))
set(handles.text2,'String','2')
end
16
if(min_error==error(8))
set(handles.text2,'String','3')
end
if(min_error==error(9))
set(handles.text2,'String','4')
end
if(min_error==error(10))
set(handles.text2,'String','5')
end
if(min_error==error(11))
set(handles.text2,'String','6')
end
if(min_error==error(12))
set(handles.text2,'String','7')
end
if(min_error==error(13))
set(handles.text2,'String','8')
end
if(min_error==error(14))
set(handles.text2,'String','9')
end
if(min_error==error(15))
set(handles.text2,'String','10')
end
%Executesduringobjectcreation,aftersettingallproperties.
functiontext2_CreateFcn(hObject,eventdata,handles)
%hObjecthandletotext2(seeGCBO)
%eventdatareservedtobedefinedinafutureversionofMATLAB
%handlesemptyhandlesnotcreateduntilafterallCreateFcnscalled
17
Conclusion.
En la elaboracin de este proyecto se aprendieron varias cosas, entre ellas fue
darnos idea de algunas posibles aplicaciones de las transformadas de fourier,
adems se adquirieron conocimientos en el software de MATLAB ya que no
poseamos conocimientos de como programar ni usar este software, que adems
result una herramienta de gran ayuda en la elaboracin y creacin de proyectos
relacionadosconlas cienciasexactas. Nuestroproyectoademspuedeserescalable
o adaptable, en este caso solodemostramosconlas vocales y numeros del1al 10,
pero puede reconocerpalabras o expresiones,hacindolo mscomplejo, entreotras
cosas nos dimos cuenta de lagranimportancia que tienenlos temasvistos en clase
para solucionar algn problema de la vida diaria, en este caso, la aplicacin de las
Transformadas de Fourier, que nos permite, realizar un procesamiento de seales
digitalesparapoderhacerunreconocimientodevoz.
Con esto, concluimos quelos conocimientos obtenidosdela materiadematemticas
avanzadas no quedan solamente en eso, en conocimientos, si no en herramientas
que nos ayudaran a resolver o ver el comportamiento de algn fenmeno en
especfico.
Referencias
.
http://www.mathworks.com/index.html?s_tid=gn_logo
http://www.mathworks.com/videos/creatingaguiwithguide68979.html
Proakis,J.G.yD.G.Manolakis.
DigitalSignalProcessing:Principles,
algorithmsandapplications
.PrenticeHall,Inc.1996
ftp.udistrital.edu.co/Documentacion/Electronica/Dsp/capitulo6.PDF
http://www.cedom.es/sobredomotica/queesdomotica
http://www.domingoroman.net/vocales_esp_caract_acustica.html
18