Está en la página 1de 18

República Bolivariana de Venezuela

Universidad de Los Andes


Facultad de Ingeniería
Escuela de Sistemas
Departamento de Control

Autores:
Rafael Daboin
Arturo Briceño
Alexandra Meier
Ender Peña
Ricardo Bermudez
Miguel Baptista

Profesor:
Claudio Condor
Asignatura:
Señales y Sistemas

Mérida, Julio del 2019


RESUMEN

El Sistema de Reconocimiento de vocales permite que el usuario grabe una


palabra por medio de un micrófono y ésta sea reconocida en la base de datos
existente en ese momento. El sistema posee un entorno gráfico en la computadora
realizado en Matlab, que proporciona las selecciones de grabación, donde la señal
de voz es ingresada a la computadora y es procesada por los algoritmos del
programa que modifican la señal mediante un script, obteniendo los parámetros
significativos de la señal de voz al decir la vocal, para luego ser almacenados en la
computadora. La selección de reconocimiento permite que la vocal sea comparada
con la base de datos almacenada en la computadora, dicha base de datos ya fue
procesada digitalmente por el programa. Esta selección reconoce la letra. El
entorno gráfico proporciona, por otra parte, un análisis gráfico de las vocales
grabadas y reconocidas. Como el Sistema de Reconocimiento es un sistema de
procesamiento digital de señales de voz, el análisis gráfico en el reconocimiento
es un análisis del espectro de frecuencias de la señal de voz. El presente trabajo
es una recopilación de los métodos de procesamiento digital y una explicación de
los algoritmos utilizados en el programa del Sistema de Reconocimiento de Voz.
Son explicados varios métodos de procesamiento digital de voz y los recursos
necesarios para la elaboración del sistema. Además, se incluye la explicación de
las características o parámetros relevantes en el procesamiento digital de voz, y el
porqué de la selección de los procedimientos utilizados en los algoritmos que
constituyen el programa. Terminando con una presentación del funcionamiento del
entorno gráfico del programa.
I.- OBJETIVOS

 General

Brindar un sistema que proporcione el reconocimiento de una vocal,


usando la herramienta MATLAB el cual permitirá la comunicación usuario -
computadora

 Específicos

1. Explorar algoritmos de procesamiento digital de voz, que permitan un


tratamiento sencillo de información relevante de las formantes del
habla.

2. Implementar una base de datos de los integrantes que contenga esta


información para usar como referencia en la comparación con la señal
de prueba del usuario.

3. Lograr la interacción automática humano/computadora por medio de un


sistema simple de utilizar.
II.- Introducción

El habla es el medio de comunicación más natural entre las personas; por lo


tanto, la presencia que tiene en el mundo digital (ya sea en transmisiones o en
interfaces hombre-máquina, en servicios de atención al cliente, en aplicaciones de
ocio, etc.). Ya que sin el habla el pensamiento mismo del hombre no sería posible.
No se trata simplemente de un sistema para transmitir información, aunque sea
claro una de sus funciones. Pero es por medio de los sonidos que se presenta la
esencia espiritual del hombre. Las características propias de la voz, diferentes de
las del audio en general o de la de la música, permiten el diseño de algoritmos
pensados específicamente para este dominio. Además, el habla no es solo audio,
sino que también incluye aspectos de fonética, sintaxis y semántica que amplían la
información que se puede utilizar en las tecnologías que están implicadas en ella.

El presente proyecto pretende usar estas tecnologías, y así crear una


interacción entre una de las expresiones esenciales del hombre con la
computadora, creando así un sistema que reconozca las diversas vocales. El
sistema consiste en obtener una señal de voz (una grabación) que permita
reconocer qué vocal se está pronunciando. Consta de una interfaz gráfica que
permite la interacción del usuario por medio de la computadora, la que procesa
automáticamente los datos adquiridos.

Cabe destacar que todo esto fue posible, gracias a la utilización del entorno
informático MatLab, que es una abreviatura de la frase Matrix Laboratory. Se
puede considerar, por otro lado, que es una calculadora totalmente equipada
aunque, en realidad, es mucho más versátil que cualquier calculadora para hacer
cálculos matemáticos. Se trata de una plataforma para el desarrollo de
aplicaciones y para la resolución de problemas en múltiples áreas de aplicación.
III.- Marco Teórico

El sonido son vibraciones que se propagan a través de un medio elástico,


tal medio puede ser un líquido, gas o un sólido, se propaga debido a que estas
vibraciones alteran la presión y la densidad del medio, y debido a la compresión y
a la expansión que generan las vibraciones es producida la transmisión del sonido
[1].

Los formantes son los picos de intensidad en el espectro de un sonido


donde hay concentración de energía, es la máxima altura que alcanza la amplitud
de onda que se da en una determinada frecuencia. Técnicamente los formantes
son bandas de frecuencia donde se concentra la mayor parte de la energía del
sonido, una banda de frecuencia es una zona del espectro caracterizada por dos
frecuencias límite (inferior y superior) y una frecuencia central [2].

Los formantes permiten distinguir los sonidos del habla humana, sobre todo
las vocales y otros sonidos. También sirven para los sistemas de reconocimiento
de voz y las transposiciones de altura del audio digital. Cada sonido del habla
humana tiene una marca característica de formantes, es decir, hace un reparto
diferente de la energía sonora entre los diferentes formantes, lo cual permite
clasificarlos o categorizarlos [2].

En muchas lenguas los dos formantes principales permiten distinguir la


mayoría de sonidos vocálicos del habla. El primer formante, el de frecuencia más
baja, está relacionado con la abertura de la vocal que en última instancia está
relacionada con la frecuencia de las ondas estacionarias que vibran verticalmente
en la cavidad. El segundo formante está relacionado con la vibración en la
dirección horizontal y con si la vocal es anterior, central o posterior [2].

La mayoría de los formantes de los sonidos del habla se producen por la


resonancia del tracto vocal. La vibración de las cuerdas vocales produce ondas
sonoras con un espectro de frecuencia distribuida, las mismas son filtradas por el
tracto vocal y algunas frecuencias son reforzadas y otras atenuadas [2].
Las frecuencias fuertemente reforzadas son precisamente los formantes
principales de la emisión sonora, la articulación de cada vocal requiere
determinadas posiciones de los órganos articuladores, que crean cavidades de
diferentes formas y volúmenes; en ellas, se originan distintas frecuencias de
resonancia que filtran la onda acústica periódica, de modo que se configura una
estructura diferente para cada vocal [2].

La relación entre el primer formante y la posición alta o baja de la lengua es


inversa, es decir, mientras más alta esté la lengua más bajo será el primer
formante, y a la inversa. En segundo formante se relaciona directamente con la
posición anterior-posterior de la lengua [2]

Vocal Formante 1 (Hz) Formante 2 (Hz)


A 700 1560
E 360 1970
I 248 2600
O 400 896
U 260 613
Tabla 1. Valores promedios de los formantes en Hz

Figura 1. Trayectoria del primer y segundo formante.

En la figura 1 y en la tabla 1 se observa cómo en la articulación de la vocal


central (lengua en posición baja) el formante 1 tiene la mayor altura en cambio en
las vocales cerradas (lengua en posición alta) el valor en Hz es el menor y para el
formante 2 baja la frecuencia en la medida en que la lengua retrocede.
Obsérvese que en la vocal anterior cerrada el formante tiene el valor más
alto en tanto que en la vocal velar cerrada el valor es el menor de la serie [2].

Para el estudio de los formantes de las señales existe el Análisis Armónico,


específicamente la Transformada de Fourier que nos da el espectro de
frecuencias que se involucran en la señal que está siendo analizada.

El método fue desarrollado por Jean-Baptiste Joseph Fourier, permitiendo


por este medio el desarrollo de una gran cantidad de aplicaciones en la física y la
ingeniería, una de las aplicaciones que tiene un campo de acción extenso, es la
del procesamiento digital de señales de audio, en él se hace uso de la
Transformada Discreta de Fourier (DFT).

La DFT requiere que la función de entrada sea una secuencia discreta y de


duración finita. Dichas secuencias se suelen generar a partir del muestreo de una
función continua, como puede ser la voz humana [3].

Utilizar la DFT implica que el segmento que se analiza es un único período


de una señal periódica que se extiende de forma infinita; si esto no se cumple, se
debe utilizar una ventana para reducir los espurios del espectro. Por la misma
razón, la DFT inversa no puede reproducir el dominio del tiempo completo, es por
eso que se dice que la DFT es una transformada de Fourier para análisis de
señales de tiempo discreto y dominio finito [3].

Otra herramienta importante que fue desarrollada, es el algoritmo conocido


como Transformada Rápida de Fourier (FFT), este es un algoritmo eficiente que
permite calcular la DFT y su inversa, que cuando se hace el tratamiento de
señales impone algunas limitaciones en la señal y en el espectro resultante, ya
que la señal muestreada y que se va a transformar debe consistir de un número
de muestras igual a una potencia de dos generalmente los analizadores FFT
permiten la transformación de 512, 1024, 2048 o 4096 muestras [4].

Para la identificación de los formantes presentes en una señal existe una de


las técnicas más potentes de análisis y que además es uno de los métodos más
útiles para codificar voz con buena calidad, La codificación predictiva lineal (LPC).
Su función es representar la envolvente espectral de una señal digital de voz en
una forma comprimida, utilizando la información de un modelo lineal, con lo cual
se proporcionan unas aproximaciones a los parámetros de la voz muy precisas.

Comienza con la suposición de que una señal de voz es producida por un


zumbador al final de un tubo (sonidos sonoros). Aunque aparentemente crudo,
este modelo es en realidad una aproximación cercana a la realidad de la
producción del habla. La glotis (el espacio entre las cuerdas vocales) produce el
zumbido, que se caracteriza por su intensidad (volumen) y frecuencia (tono). El
tracto vocal (la garganta y la boca) forma el tubo, que se caracteriza por sus
resonancias, que dan lugar a formantes, o bandas de frecuencia mejoradas en el
sonido producido. Los silbidos y los estallidos son generados por la acción de la
lengua, los labios y la garganta durante sibilantes y plosivos.

LPC analiza la señal de voz estimando los formantes, eliminando sus


efectos de la señal de voz y estimando la intensidad y la frecuencia del zumbido
restante. El proceso de eliminación de los formantes se denomina filtrado inverso,
y la señal restante después de la resta de la señal modelada filtrada se denomina
residuo.

Los números que describen la intensidad y la frecuencia del zumbido, los


formantes y la señal de residuo, pueden almacenarse o transmitirse a otra parte.
LPC sintetiza la señal de voz invirtiendo el proceso: use los parámetros de
zumbido y el residuo para crear una señal de fuente, use los formantes para crear
un filtro (que representa el tubo), y ejecute la fuente a través del filtro, dando como
resultado la voz. [18]

Una característica fundamental de los sistemas de reconocimiento es la


forma en que los vectores característicos son combinados y comparados con los
patrones de referencia. Para poder realizar estas operaciones es necesario definir
una medida de distancia entre los vectores característicos. Algunas de las
medidas de distancia más utilizadas son las distancias o métricas inducidas por
las normas en espacios Lp. En MATLAB se utiliza una distancia Euclídea, definida
del siguiente modo: por ejemplo si fi y fi’, con i=0, 1, 2,…, D son las componentes
de dos vectores característicos f y f’, puede definirse la siguiente métrica inducida
por la norma Lp:
IV.- Desarrollo

Base de Datos y algoritmos

El desarrollo de este proyecto consiste en la construcción de un programa


en Matlab que sea capaz de recibir un audio en el que se diga una vocal y
reconocer la vocal que se dijo, mediante el uso del análisis de Fourier y de los
formantes de las vocales en el idioma español.

Para estandarizar los formantes de las vocales, 6 personas realizamos la


grabación de cada vocal, estas grabaciones se realizaron bajo las mismas
condiciones, es decir, a una frecuencia de 44100 Hz, a 16bits, usando 2 canales y
con una longitud de 3s, esta parte es la “Base de Datos”, hallamos el
espectrograma de cada grabación, colocamos los formantes de cada vocal en
vectores y promediamos para tener una aproximación mucho mejor a la hora de
comparar, luego realizamos una normalización de cada grabación por separado y
promediando obtenemos la FFT promedio de cada vocal.

Una vez obtenido el promedio, el programa principal tiene una sección para
grabar un archivo de audio con las especificaciones antes pautadas, este archivo
es recibido del usuario y debe contener una vocal para su análisis, se calcula el
formante y su FFT, luego de esto es normalizada para acotar los datos y se
compara con el espectro de amplitud de la base de datos para conseguir el primer
vector de errores, este vector es enviado a una función conocida como
“que_vocal” donde se van a determinar 2 vectores de errores más, usando
distintos métodos para saber con mayor precisión cuál fue la vocal que se dijo en
la grabación emitida por el usuario.

En el primer método se calcula el error usando la base de datos, se toma el


error absoluto de los formantes de cada vocal en la base de datos con los
formantes de la señal ingresada por el usuario, cada valor resultante es
almacenado en un vector llamado “error” y este es pasado a la función que_vocal,
allí usamos 2 métodos para determinar el error, uno de ellos es la distancia
Euclidiana, esta nos permite ver cual formante de la base de datos tienen menor
distancia con respecto a la muestra dada por el usuario, es decir se realiza una
comparación entre las distancias del vector formante del usuario con los de
referencia, y la distancia menor será entonces, la correspondiente con el vector del
formante con el cual tuvo más cercanía, y que se asume, el de la vocal dicha por
el usuario.

Por último el error “dif” calcula el error absoluto entre los formantes
almacenados en la base de datos con los calculados de la prueba del usuario,
finalmente se normalizan los errores para poder posteriormente sumarlos y
promediarlos, esto nos da un match más preciso, así pues, el formante (posición
del vector) que tenga un error menor será la vocal que se dijo por medio de la
grabación del usuario.

Interfaz gráfica

Para elaborar nuestro programa se utilizó una herramienta de Matlab llamada GUI
(Interfaz Gráfica de Usuario). Donde esta GUI debía ser consistente y fácilmente
entendida por el usuario final, ya que al crearla así esto proporcionaba al usuario
con la habilidad de usar un programa sin tener que preocuparse sobre los
comandos para ejecutar un programa en Matlab. Lo componentes habituales de
estas GUI son, los pushbuttons, sliders, list boxes, menús, axes,..etc.

Y en nuestro caso se usaron los pushbuttons, labels, axes, para así poder diseñar
la interfaz lo más entendible posible para su uso. Para poder crear dichos
compontes en conjunto, se utilizó la utilidad de Matlab para el desarrollo interactivo
de interfaces de usuario llamado GUIDE. Para ello se procedió a escribir el
comando guide, donde nos aparece una ventana para seleccionar plantillas o abrir
GUIs existentes
Figura 2: Ventana de inicio del GUI de Matlab

En nuestro caso usamos un GUI en blanco para empezar a colocarle los


componentes que cumplían con nuestro propósito

Figura 3: Menú de edición del GUI


Ya realizado lo anterior nuestra interfaz quedó de la siguiente manera

Figura 4: Interfaz Resultante

Donde nuestra interfaz consta con tres botones, dos axes y un apartado, resultado
de la vocal. Y se definió sus funciones quedando de la forma:

 El botón grabar recibe la señal de entrada en nuestro caso, la vocal que se


va a identificar, y aparece un mensaje diciendo que se está grabando, y al
finalizar la grabación muestra otro mensaje donde se puede leer que ya h
finalizado la grabación.
 El botón reproducir, muestra la grabación anteriormente realizada
 Y el botón reconocer vocal, simplemente lo que hace es comparar la vocal
de entrada, con los formantes ya antes guardados en nuestra base de
datos mediante los métodos antes mencionados, y así poder identificar que
vocal es la que está diciendo el usuario.
 En los axis muestra las diferentes señales, tanto para la entrada de la voz
del usuario, como la ya previamente guardada en nuestra base de datos.
 Y por último pero no menos importante el apartado resultado de la vocal,
donde nos brinda los resultados del sistema, con un cuadro de mensaje
indicando cuál vocal ha sido reconocida

El programa en uso se observa en la siguiente imagen:

Figura 5: Interfaz final del programa en uso


V.- Resultados y Análisis

 En un principio se consideró usar como Base de Datos la grabación de una


persona para cada vocal, no obstante esto no produjo resultados óptimos,
se obtenían aciertos aproximadamente el 40% de las veces, por lo que se
tomó la decisión de tomar la FFT promedio de todos los integrantes,
mejorando notablemente los resultados.

 Fue considerada una primera base de datos de los formantes la


correspondiente al centro formántico de cada vocal, pero no obtuvo buenos
resultados, principalmente por diferencias en el segundo formante
resultante de las grabaciones calculado por LPC, por lo que para este
método también se tomaron la media de los formantes generados por LPC
de cada integrante.

 Las predicciones con menor error asociado a los formantes se logran


cuando el orden del modelo LPC está entre 30 y 40 y se utilizan sólo los 2
primeros formantes.

 El utilizar 3 errores permitió mayor precisión en el reconocimiento de la


vocal, ya que se consideran 2 vías, la FFT y el LPC. En algunos casos para
las vocales abiertas (a,e,o) el LPC fallaba, pero la FFT acertaba, y para las
vocales cerradas (i,u) se daba lo contrario; sin embargo el promedio total
nos arrojaba un resultado correcto.

 Es importante la correcta gesticulación de la boca al realizar la prueba para


que se produzcan de manera lo suficientemente buena las resonancias de
la vocal.

 Las múltiples pruebas realizadas determinan que el programa tiene una


tasa de acierto de aproximadamente 80%.
VI.- Conclusiones

El reconocimiento de voz es una de las aplicaciones del procesamiento


digital de señales que permite interacción entre seres humanos y computadoras.
En el análisis de estas señales resultan muy útil las técnicas de estudio en el
dominio de la frecuencia como lo es la transformada de Fourier, donde podemos
observar información que en el dominio del tiempo no es posible.

Esta información radica en el hecho de que, siempre y cuando se trate del


mismo idioma, las vocales van a presentar los llamados formantes a frecuencias
determinadas, puede variar ligeramente de persona en persona, sin embargo
estos picos o concentraciones de energía en la señal van a estar
aproximadamente en las mismas frecuencias para cada vocal.

Esto es entonces una especie de identificador muy importante, del cual


podemos hacer uso con la transformada de Fourier, donde, sabiendo el contenido
de frecuencias de la señal y dónde estas tienen mayor magnitud, podemos
identificar la vocal en cuestión.

Fue la comparación de espectros de magnitud resultantes de la aplicación


de la transformada de Fourier la que nos permitió reconocer la vocal de la señal.
Por supuesto hay muchas otras herramientas de análisis de señales de voz para
identificar el mensaje contenido en ellas, una de las usadas junto con la
transformada de Fourier, el LPC, permitió hallar los formantes de las señales
estudiadas, esta fue una vía alterna para obtener directamente los formantes de la
señal y cotejarlos posteriormente.

Gracias a la herramienta MATLAB se reduce la complejidad del


procesamiento digital de señales, y para nuestro caso el reconocimiento de los
formantes de las vocales, brindando funciones útiles como la transformada rápida
de Fourier y el algoritmo de implementación LPC hallado en la web de
documentación del software.

Es recomendable filtrar las señales de voz para enfatizar las características


acústicas, como lo son los formantes ya que esto ayuda al procesamiento de la
señal grabada y así poder acercarnos lo más posible a la identificación de la vocal
que se está pronunciando. Esto se tomó en cuenta en el algoritmo del LPC.

Finalmente, se pudo observar ligeras diferencias entre los espectros de magnitud


tomados de cada integrante, al igual que los formantes calculados. Sin embargo
estas no eran muy grandes, pero se corrobora entonces que, a pesar de que de
persona en persona varían un poco los formantes, estos en general son los
mismos para distintas personas que hablen el mismo idioma.
VII.- Bibliografía

1. https://mariajesusmusica.files.wordpress.com/2008/09/apuntes-sonido.pdf
2. http://musiki.org.ar/Formantes
3. https://es.wikipedia.org/wiki/Transformada_de_Fourier_discreta
4. https://es.wikipedia.org/wiki/Transformada_r%C3%A1pida_de_Fourier
5. https://en.wikipedia.org/wiki/Linear_predictive_coding
6. https://es.wikipedia.org/wiki/Formante
7. https://www.mathworks.com/help/signal/ug/formant-estimation-with-lpc-
coefficients.html
8. https://www.mathworks.com/help/matlab/ref/audioread.html

También podría gustarte