Vous êtes sur la page 1sur 29

TRABAJO DE INVESTIGACION DE METODOS

NUMERICOS
CUARTA ENTREGA

1. TITULO DEL PROYECTO DE INVESTIGACION

Reconocimiento de voz, usando mtodos


numricos en MATLAB.
2. DEFINICION DEL PROBLEMA
En muchos casos a nivel mundial se ha visto la dificultad que
tienen las personas con ciertas limitaciones especiales a realizar su vida
cotidiana con normalidad.
Aunque este proyecto sea solo un prototipo es lo elemental para poder
ayudar en cierta manera a mejorar el ritmo de vida de estas personas,
en realidad todas las pueden realizar pero lo primordial es que lo usen
las personas con limitaciones motoras y en que consiste en emplear un
programa de voz que interacte voz humana y ordenador para que esta
(ordenador) realice ciertas acciones con comandos de voz, pero para
reconocerlas, es necesario un programa que reconozca y analice la voz
humana. Nuestro problema va radicar en hacer un programa que reciba
como entrada la voz humana que realice ciertas operaciones necesarias
y de cmo salida una respuesta y verificacin lgica de la entrada.
Este programa tambin puede ser de gran ayuda en sistemas de
seguridad por ejemplo para evitar robos de cualquier ndole se puede
activar alarmas con solo hablar el comando indicado y activndose
desde el programa, otro seria que para entrar a tu casa o abrir una caja
fuerte o tu mvil solo lo puedas hacer reconociendo tu voz mediante el
programa previo instalado en un hardware o software en cada uno de
estos casos posibles.
Como se puede apreciar este proyecto prototipo tiene una amplia gama
de aplicaciones yo tan solo realizare el prototipo de reconocimiento de
voz en Matlab, los otros complementos del programa como Arduino o
java que complementarios.
3. DESCRIPCION BREVE DE LA TEORIA INVOLUCRADA EN LA SOLUCION DEL
PROBLEMA

FUNDAMENTOS DE LA VOZ
La seal de voz es una onda de presin acstica que se genera
voluntariamente a partir de movimientos de la estructura anatmica del

sistema fonador humano. La produccin de la voz comienza en el


cerebro con la conceptualizacin de la idea que se desea transmitir, la
cual se asocia a una estructura lingstica, seleccionando las palabras
adecuadas y ordenndolas de acuerdo con unas reglas gramaticales. A
continuacin el cerebro produce los comandos nerviosos que mueven los
rganos vocales para producir los sonidos. La unidad mnima de una
cadena hablada es el fonema, el cual posee un carcter distintivo en la
estructura de la lengua. La combinacin de los fonemas da origen a las
silabas, las cuales conforman las palabras, y estas a su vez, las
oraciones. El tracto vocal empieza a la salida de la laringe y termina a la
entrada de los labios. El tracto nasal empieza en el paladar y termina en
los orificios nasales. Los parmetros principales del sistema articulatorio
son: las cuerdas vocales, el paladar, la lengua, los dientes, los labios y
las mandbulas. Los distintos sonidos se producen al pasar el aire emitido
por los pulmones, a travs de todo el sistema de produccin, en una
determinada posicin del aparato articulatorio. Desde el punto de vista
de la ingeniera es lgico pensar que este sistema fsico puede
representarse como un filtro, cuya funcin de transferencia depende del
sonido articulado y, por tanto, de la posicin de los distintos rganos
involucrados en la generacin de la voz.
La frecuencia de este sonido depende de varios factores, entre otros del
tamao y la masa de las cuerdas vocales, de la tensin de las cuerdas
vocales, de la tensin que se les aplique y de la velocidad del flujo del
aire proveniente de los pulmones. A mayor tamao, menor frecuencia de
vibracin, A mayor tensin la frecuencia aumenta, siendo los sonidos
ms agudos. Tambin aumenta la frecuencia al crecer la velocidad del
flujo de aire.
En resumen, en el habla los formantes se determinan por el proceso de
filtrado que se produce en el tracto vocal por la configuracin de los
articuladores.

SEAL ACSTICA
Un reconocedor no puede analizar los movimientos en la boca. En
su lugar, la fuente de informacin es la seal de voz misma.
El habla es una seal analgica, es decir, un flujo continuo de ondas
sonoras y silencios.
El conocimiento de las ciencias de la acstica se utiliza para identificar y
describir los atributos del habla que son necesarios para un
reconocimiento de voz efectivo.
Algunas caractersticas importantes del anlisis acstico son:
Frecuencia y amplitud
Todos los sonidos causan movimientos entre las molculas del
aire. Algunos sonidos, tales como los que produce una cuerda de
guitarra, producen patrones regulares y prolongados de
movimiento del aire. Los patrones de sonidos ms simples son los

sonidos puros, y se pueden representar grficamente por una


onda sinusoidal.
Frecuencia: nmero de vibraciones del tono por segundo 1000 por
segundo = 100 ciclos/segundo=100Hz
Tonos altos= mayor frecuencia
Tonos bajos= menor frecuencia
Resonancia
La resonancia se define comnmente como la habilidad que tiene
una fuente vibrante de sonido de causar que otro objeto vibre
gracias a ella.
La mayora de los sonidos incluyendo del habla tiene una
frecuencia dominante llamada frecuencia fundamental tambin
conocida como pitch (tono) que se combina con frecuencias
secundarias en el habla, la frecuencia fundamental es la velocidad
a la que vibran las cuerdas vocales al producir un fonema sonoro.

PROGRAMA DE RECONOCIMIENTO DE VOZ


Diagrama de bloques del sistema
El sistema de reconocimiento de voz se puede resumir en el
siguiente diagrama esquemtico

Diagrama esquemtico del Sistema de Reconocimiento de Voz

4. MODELO MATEMATICO A SER EMPLEADOS

Muestreo y cuantificacin

Muestreo consiste en el proceso de conversin de seales


continuas a seales discretas en el tiempo, es un paso para
digitalizar una seal analgica.
Este proceso se realiza midiendo la seal en momentos peridicos
del tiempo.
Teorema de nyquist:
Si x[n] es una secuencia de muestras obtenida a partir de una
seal continua en el tiempo x(t), por medio de la relacin

Ecuacin

Entonces el teorema de muestreo de nyquist esta definido como:


sea x(t)
una seal limitada en banda por:
Entonces x(t) esta nicamente determinada por sus muestras x[n]
= x(nT), n

La frecuencia N es comnmente referida como la frecuencia de


Nyquist, y la frecuencia 2N que tiene que ser excedida por la
frecuencia de muestreo es llamada la razn de Nyquist.
Cuantificacin:
En la cuantificacin el valor de cada muestra de la seal
se representa como un valor elegido de entre un conjunto finito de
posibles valores. Se conoce como error de cuantificacin (o ruido),
a la diferencia entre la seal de entrada (sin cuantificar) y la seal
de salida (ya cuantificada), interesa que el ruido sea lo ms bajo
posible. Para conseguir esto y segn sea la aplicacin a
desarrollar, se pueden usar distintas tcnicas de cuantificacin:

Cuantificacin uniforme
Cuantificacin logartmica
Cuantificacin no uniforme
Cuantificacin vectorial

Eliminacin del ruido


La seal digitalizada es escaneada y las zonas de silencio
son removidas por medio del clculo de energa en corto tiempo.
Segmentos de 10ms se escogieron para este propsito. En un

segmento la energa promedio es menor que un valor umbral


proporcional a la energa promedio de la seal entera es
descartado. Las siguientes frmulas se utilizaron:

Ecuacin

Donde En es la energa promedio de cada segmento y Eavg es la


energa
promedio de la seal entera. El valor umbral escogido THRES=0.2.

Filtro de Pre-nfasis
Se aplica un filtro digital pasa altas de primer orden a la
seal, para enfatizar las frecuencias altas de los formantes por
dos razones, primero para que no se pierda informacin durante la
segmentacin, ya que la mayora de la informacin est contenida
en las frecuencias bajas, en segundo remueve la componente DC
de la seal, aplanando espectralmente la seal. Uno de los filtros
de pre-nfasis ms utilizados tiene la ecuacin:

Ecuacin

Segmentacin
La segmentacin consiste en cortar la seal en segmentos
de anlisis. La seal de voz es asumida como estacionaria en
estos segmentos.
Durante la segmentacin los segmentos son guardados cada uno
como la columna de una matriz, para el posterior procesamiento
de la seal de voz.
Para el proceso una ventana de Hamming de 30ms es aplicada a
la seal de voz, enfatizada previamente con el filtro de prenfasis. Con un desplazamiento tpico 10ms entre cada ventaneo.
Se realiza el algoritmo en base a las siguientes frmulas:

Ecuacin

Qn es cada nth cuadro de segmentacin.

Ecuacin

En la ecuacin de la ventana de Hamming, N es el largo de cada


cuadro o segmento de anlisis.

Extraccin de caractersticas

En el reconocimiento del habla, la seal de voz pre-procesada se


ingresa a un nuevo procesamiento para producir una
representacin de la voz en forma de secuencia de vectores o
agrupaciones de valores que se denominan parmetros, que
deben representar la informacin contenida en la envolvente del
espectro.
Hay que tener en cuenta que el nmero de parmetros debe ser
reducido, para no saturar la base de datos, ya que mientras ms
parmetros tenga la representacin menos fiables son los
resultados y ms costosa la implementacin.
Existen distintos mtodos de anlisis para la extraccin de
caractersticas, y se concentran en diferentes aspectos
representativos. En este caso analizaremos los dos de mayor
importancia para el anlisis de la voz:
- Anlisis de prediccin lineal (LPC)
- Anlisis cepstral

Prediccin Lineal
Se trata de una de las tcnicas ms potentes de anlisis
de voz, y uno de los mtodos ms tiles para codificar voz con
buena calidad.
Su funcin es representar la envolvente espectral de una seal
digital de voz en una forma comprimida, utilizando la informacin
de un modelo lineal, con lo cual se proporciona unas
aproximaciones a los parmetros de la voz muy precisas.
Se fundamenta en establecer un modelo de filtro de tipo todo
polo , para la fuente de sonido, el filtro todo polo justifica su
uso ya que permite describir la funcin de transferencia de un
tubo, que sin perdidas est formado por diferentes secciones.

El modelo recibe este nombre porque pretende extrapolar el valor


de la siguiente muestra de voz(n) como la suma ponderada de
nuestras pasadas:

Estimacin de los LPC


Una estima o prediccin de s(n) basada en p muestras anteriores,
puede calcularse como lo muestra la siguiente formula:
Y el error de prediccin se obtiene de:
Los LPC se obtienen minimizando un criterio cuadrtico en lo
errores de prediccin, para cada cuadro en que es dividido el
segmento de voz.
El numero de coeficientes LPC que se obtienen dependen la
frecuencia de muestreo como indica en la siguiente formula:

Cepstrum
Como se sabe los sonidos de la voz se pueden
representar mediante un espectrograma, que indica las
componentes frecuenciales de la seal de voz.
Es as entonces como el espectro nos proporciona informacin
acerca de los parmetros del modelo de produccin de voz, tanto
de la excitacin como del filtro que representa el tracto vocal.
Desde el principio de la dcada de los 70 los sistemas homo
mrficos han tenido una gran importancia en los sistemas de
reconocimiento de voz. Estos sistemas homo mrficos son una
clase de sistemas no lineales que obedecen a un principio de
superposicin. De estos los sistemas lineales son un caso especial.

Modelo Coeficientes Cesptrales

En la salida de este sistema tenemos entonces:

Ecuacin

En cual caso, el valor c(n) se conoce como coeficientes cepstrales


derivados de la transformada de Fourier. Ns es el nmero de puntos con
que se calcula la transformada. Esta ecuacin puede ser
convenientemente simplificada teniendo en cuenta que el espectro
logartmico es una funcin real simtrica.

Ecuacin

En los clculos lo habitual es usar solamente los primeros trminos.


Por otro lado, I(k) representa una funcin que traduce la posicin de un
valor en frecuencia al intervalo donde este contenido.
Por qu es ms conveniente usar Anlisis Cepstral en vez de
Anlisis de prediccin lineal (LPC), bsicamente por que las
aproximaciones del anlisis espectral de Cepstral son ms
exactas que en las LPC y adems el LPC se usa ms para una base
de datos extensa por te garantiza un anlisis ms extenso por lo
que su operacin demora ms que usando coeficientes Cepstrales
para nuestro caso.

Medida de distancia
Una caracterstica fundamental de los sistemas de
reconocimiento es la forma en que los vectores caractersticos son
combinados y comparados con los patrones de referencia.
Para poder realizar estas operaciones es necesario definir una medida de
distancia entre los vectores caractersticos. Algunas de las medidas de
distancia ms utilizadas son las distancias o mtricas inducidas por las
normas en espacios Lp.
En el algoritmo de reconocimiento en MATLAB se utiliza una distancia
Euclidea, definida del siguiente modo: por ejemplo si fi y fi, con i=0, 1,
2,, D son las componentes de dos vectores caractersticos f y f, puede
definirse la siguiente mtrica inducida por la norma Lp:

Ecuacin

En el algoritmo primero se define el tamao del mayor vector, y se


calcula con la formula anterior la distancia entre el vector de la palabra a
reconocer y cada uno de los vectores de referencia en la base de datos,
luego se hacen las condiciones para obtener la menor distancia, con lo
cual se encuentra la palabra identificada en la base de datos.
5. POSIBLES METODOS NUMERICOS PARA UTILIZAR EN LA SOLUCION
MATEMATICA DEL PROBLEMA

TRANSFORMADA RPIDA DE FOURIER


Las series de Fourier son tiles para representar cualquier onda
como una sumatoria de senos y cosenos. En este caso se tratar
nicamente con el manejo de datos experimentales por medio de la
transformada rpida de Fourier.

DESARROLLO DEL PROGRAMA


Primero la funcin grabar:

Primero partimos la
Esta funcin nos permitir digitalizar la voz mecnica en un formato wav
con amplitudes que toman valores menores a 1, Fs es la frecuencia
de muestreo a utilizar, para este caso la frecuencia de la voz humana
circula por los 44100 Hz.
El y cumple la funcin de empezar a grabar en un intervalo de tiempo
de 1 segundo y de tipo mono audio, si queremos podemos visualizar la
seal con plot pero no es necesario; con la funcin sound se reproducir
lo que haya grabado el micrfono en un segundo despus de correr y
por lo que recomendamos hablar rpido pero entendible.
Y por ultimo wavwrite guardara el mensaje reproducido por sound y lo
almacenara en 16 bits.
Lo guardamos en un sript con el nombre grabar.m y pasamos a la
siguiente funcin a utilizar es la funcin normalizar

Lo
que hace la funcin normalizar es devolver un vector estandarizado con valores
de o a 1 dependiendo del rango sabiendo que lenght calcula el tamao del
vector. Si no se normalizara el vector sonido constara de amplitudes muy altas
en la onda que hara imposible la comparacin con otra onda por eso es
preferible normalizar.
Ahora pasemos a grabar nuestra base de datos con la funcin grabar: solo
modificaremos en la funcin grabar el nombre con que se guardar el archivo
wav, estos archivos de ben estar en una carpeta, en mi caso los tengo en:

En esta carpeta deben estar todos las funciones .m que se va a utilizar,


tambin guarde algunas imgenes que despus las utilizaremos, no se olviden
de colocar todo lo relacionado al programa en esta carpeta ya que si uno est a
fuera no compilara bien por la ausencia de declaraciones o funciones
indefinidas.
Luego de tener nuestra base de datos que por ejemplo guarde la vocales pero
Ud. puede escoger cualquier palabra que se pueda decir en 1 segundo, si
quiere frases solo tendrs que configurar en la funcin grabar el tiempo de 1
segundo, pero recuerde que el anlisis demorara mas, al anlisis me refiere
cuando empecemos a comparar las ondas.
Bueno lo que sigue ahora es normalizar nuestra base de datos con una funcin
reconocer:

Luego a estas ultimas variables se le saca la transformada discreta de Fourier


que nos dar un vector x con valores de correspondientes a los y que
representan los valores de la normalizacin,
Es decir la normalizacin me da valores y de 0 a 1 que pueden ser negativos
tambin luego al pasar por la transformada de Fourier lo que hace es
reconstruir la funcin originaria a partir de la entrada y produciendo sus
respectivos x que vendra a ser el vector de salida con valores positivos o
negativos a este vector le aplicamos luego el valor absoluto y lo guardamos en
una variable transfvocala por ejemplo.

Y se guarda por ultimo con el nombre reconocer.m ahora que ya tenemos todas
las funciones y nuestra base de datos empezaremos por crear nuestra interfaz
grfica con GUIDE de Matlab.
Interfaz grafica
Nos dirigimos a la opcin guide de la barra de herramientas de Matlab.

Nos saldr otra ventana como esta y tenemos que seleccionar la opcin abrir
nuevo por default:

Entonces nos devuelve una ventana como esta:

Aqu podemos crear nuestro interfaz grfica en este caso use estos botones:
Principalmente los push botom, static text y axes que lo veremos en la
siguiente imagen:

Luego de crear los botones y paneles la acomodo tal que se vea en esttica
agradable a la vista y fcil de interactuar, ahora el siguiente paso es ponerle
nombres a los botones necesarios. De la siguiente figura:

En string se pone el nombre que aparecer en el botn en este caso le puse


grabar no solo en string sino tambien en el tag.

En el static text 1 el que le pusimos de nombre x tenemos que configurara


algo antes:

Le cambie el color de letra a rojo y el tamao de letra a 70 en los tem de


fontsize y foregroundcolor.
Ahora empecemos a programar en guide los botones, primero seleccionamos el
botn grabar con anticlick y darle a callbackcomo en la figura:

Al seleccionar callback nos pedir que primero lo guardemos nosotros lo


guardaremos con el nombre de ReconocedorGuide este archivo de guardar en
formato .fig:

No
se
olviden que deben guardarlo en la carpeta que mencionamos antes; la carpeta

reconocedor de voz que debe contener todas las funciones, las base de datos y
ahora ReconocedorGuide; luego de guarddarlo exitosamente entraremos a la
ventana de programacin del .fig:

Ahora nos dirigimos al botn callback grabar:

colocamos clear all para limpiar todo despus de probar o ejecutar el


programa, esto se dar cada vez que pulsa el botn grabar. Seguido llamamos

a la funcin grabar este nombre a paraecera por que cambiamos el nomre en


el tag de el push botn 1.
Ahora nos dirigimos al tercer push botn que le cambiamos su nombre tag por
reconocer, en te push llamaremos a la funcin reconocer,

Luego de llamar a la funcin reconocer lee la voz grabada en el proceso de


pulsar el botn grabar y la guarda en una variable la normaliza y le halla la
transformada de Fourier
Luego se crea el vector error en el cual se aplica el mtodo de las diferencias
de Fourier restando la transformada de la base de datos con la transformada
de la voz a reconocer luego se le aplica valor absoluto y asi creamos el vector
error.
En ese mismo callback llamado reconocer hallamos el minimo error con el
comando min del vector error y lo comparamos con los elementos del vector
error:

Todo esto va estar condicionado por un if tal que si cumple en una esta deber
responder en el statict text (el text1 con la x) y enviar una imagen en el
axes1 (axes de tamao reducido).
Al sacar el mnimo error estoy identificando en donde las diferencias de Fourier
del patrn base se asemeja al patrn a reconocer, esta diferencia mnima me
dice que son muy parecidas por lo que se compara despus con las posiciones
del vector error para saber qu posicin es esa cada posicin ya se sabe a qu
pertenece de acuerdo al patrn base lo que no sabemos es a que posicin
pertenece la voz a reconocer por lo que se usa la funcin if.
Como esto es un ejemplo al usar sonidos de las vocales como base se ha
creado otros botones que nos daran la posibilidad de cambiar nuestra base de
datos de cinco ranuras para luego volver a compararlas con nuestra nueva voz
a reconocer, as demuestro la versatilidad del programa sencillez y rapidez al
efectuarse, podramos complicarnos ms haciendo una base de datos extensa
se puede hacer configurando el programa un ejemplo a gran escala seria los
traductores digitales en red o la identificacin de todo el personal de una
compaa.
Bueno veamos las ranuras para crear nueva base de datos:

Aqu
mostramos los
push botn
pequeos en que se a puesto la funcin grabar por separado a cada uno para
grabar cosas distinta como nombres, apellidos, cdigos, etc.

Por ultimo en la imagen de arriba tenemos los comandos de cmo llamar


imgenes en los axes, en este caso hemos usado 2 uno de fondo y el otro
como imagen de inicio del programa que luego ira variando conforme se
reconozcan la letras.
Terminando el programa lo que queda es compilar siempre revisando alguna
falla en la gramtica de Matlab

Ahora veamos esta comparacin:

Espero le agrade, es un proyecto sencillo pero de aplicaciones muy grandes


mas en el mbito de seguridad y automatizacin tan solo imagnate en hacer
las cosas solo mandando con la voz, por ejemplo prender las luces con la voz o
estar ms seguro cuando entramos en nuestra casa y no piden ingresar
reconocimiento de voz es decir solo abrirla con nuestra voz solo nuestra no de
otros.

AGRADECIMIENTOS a mis padres por apoyarme con


Todo lo que pueden, a la laptop que me
obsequiaron
Sin ella no podra haber realizado este trabajo, al
Ingeniero Hernn Villafuerte por su clases de curso
de
Mtodos numricos

Vous aimerez peut-être aussi