Você está na página 1de 19

Matemticas Avanzadas

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

El Sistema deReconocimientoesmuyimportantedebidoaqueelhabla esunade


laspartesmsimportantesdelaexpresinhumana,esalgoquenosdiferenciadel
resto de seres vivos en planeta, ya que sin el habla el pensamiento mismo del
hombre no sera posible. No se trata simplemente de un sistema para transmitir
informacin, aunque sea claro, una de sus funciones. Dada la importancia del
habla, el presente trabajo de final de la materia de Matemticas Avanzadas del
curso agostodiciembredel 2015 pretende crear una interaccin entre unadelas
expresiones esenciales del hombre con la computadora,creando asunSistema
de Reconocimiento de Voz. Elprocesamiento digital de seales de voz tieneuna
gran variedad de aplicaciones, existe una base para el tratamiento digital de
seales, que puede ser implementada para lograr obtener lo que nos interese
segn la aplicacin. El Sistema de Reconocimiento de Voz es una de las
aplicaciones del procesamiento digital de seales de voz. El sistemaconsiste en
obtener una seal de voz que permita reconocer qu vocal o nmero se est
hablando. Consta deunainterfazgrficaquepermitelainteraccindelusuariopor
medio de un micrfono con lacomputadora, la queprocesaautomticamente los
datosadquiridos.Basadoenlosresultadosdeestesistema,sepuedevercomose
plantea la base del procesamiento digital de seales de voz y queda a la libre
imaginacin como puede ser utilizado para otras aplicaciones, adems del de
reconocimientodevoz.

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.

Para la elaboracin de este proyecto final fue necesario tener conocimientos o


adquirir conocimiento de un software especial, conocido como MATLAB,
es el
lenguaje dealtonivelyunentornointeractivoutilizadopormillones deingenierosy
cientficos de todo el mundo . Se le permite explorar y visualizar las ideas y
colaborar en todas las disciplinas , incluyendo la seal y el procesamiento de
imgenes,comunicaciones,sistemasdecontrol,ylasfinanzascomputacional
.

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.

Es una de las herramientas principales de anlisiscon que se cuenta hoyenlos


medios de ciencia y tecnologa. Su poder radica en la posibilidad establecer
relaciones entre puntos de vista muy diferentes relativos a un mismo problema.
As,al visualizarun fenmenotanto en trminos de lafuncin asociada,comode
sutransformada de Fourier, se tienefrecuentementeunprocedimientodeanlisis
tilpararesolverunproblemadeterminado.
La FFT es un algoritmo que permite calcular la
transformada discreta de fourier
(DFT)ysuinversa.

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

con respecto a sus manifestaciones


fsicas
. Sus principales ramas son: fontica

experimental, fontica articulatoria, fonemtica, fontica acstica y fontica


auditiva.constituyeuno delosmbitosdelalingsticaquemssehabeneficiado
de los avancesinformticos dadosucarcter experimental. Disponer de potentes
herramientas de anlisishafavorecidoeldesarrollodeteorascuyofinprincipales
explicarlacomunicacinmedianteelhablaentrelossereshumanos.
3

El estudioexperimental delhabladesde las diferentes perspectivas dela fontica


(articulatorio, acstico, perceptivo) condiciona y determina la eleccin de las
tcnicas de anlisis adecuadas. Tcnicas que determinarn los parmetros que
caracterizanalossonidos,ascomolospatronesentonativosyrtmicos.
Desde el punto de vista acstico el estudio del habla requiere de un profundo
anlisis enlosdominiosdela
frecuencia,amplitudytiempo queconfiguranlaonda
sonoraportadoradelhabla.

En la determinacin de los formantes tambin es posible utilizar el anlisis


espectralmedianteel queobtenemos unarepresentacinde laondasonoraenel
dominio de la frecuencia y amplitud. El espectro de un sonido es la funcin
resultante de aplicar el algoritmo denominado Transformada rpida de Fourier
(FFT,
FastFourierTransform
)quedescomponelaondasonoraensusarmnicos.

Este procedimiento no proporcionainformacin acercade laevolucinfrecuencial


en el tiempo y por tanto no permite analizar transiciones . Sin embargo permite
obtenerinformacinsobreladistribucindeenergaenlaescaladefrecuencias.

En el espectro, los formantes aparecen como agrupacin de armnicos.La


frecuenciadel formante se tomaenel punto mediodelaagrupacinmientrasque
laintensidadcorrespondealarmnicoconmayoramplitud.
El armnico defrecuenciamsbaja queseobservaenelespectrocorrespondea
la frecuencia fundamental (Fo), quetiene comocorrelatoarticulatoriolafrecuencia
devibracindelascuerdasvocales.

Formantes
Laprincipal categora acsticaparacaracterizar lasvocalessonlosformantes,en
especiallosdosprimeros.

Losdosformantesserelacionanconlasdimensionesdelmovimientolingual.

El primer formante con la dimensin altobajo y el segundo con la dimensin


anteriorposterior.


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

que pueden estar integrados por medio de redes interiores y exteriores de


comunicacin, cableadas o inalmbricas, y cuyo control gozadeciertaubicuidad,
desde dentro y fuera del hogar. Se podra definir como la integracin de la
tecnologaeneldiseointeligentedeunrecintocerrado.

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:

1. Axes1 :parte enla cualnos mostrarcmosecomporta lagrficadevozquese


hayaguardadoenesemomento.
2. Panel en esta parte nosmuestralos dos botonesquetiene nuestromengrfico,
lacualessedivideen:
1. Botn Grabar: este botn llamar ala funcindegrabar, lacual tambin crear un
archivo llamado voz donde contenera la voz grabadapor el usuario enla carpeta
voces.
2. Botn reconocer: este botn tiene lafuncin de normalizarla voz y de compararla
voz grabada con la base de datos previamente cargada, adems se analizaran y
compararanelarchivodelavozgrabadaconlosdelabasesdedatos
3. Text : es donde nos mostrar la vocal o nmero correspondiente obtenida de
compararlavozgrabadaconlabasededatosestablecida.

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