Post on 16-Oct-2021
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD ZACATENCO
Ingeniería en Comunicaciones y Electrónica
Academia de Acústica
“RECONOCEDOR AUTOMÁTICO DE COMANDOS POR
MEDIO DEL HABLA PARA LAS FUNCIONES DE UN
AUTOMÓVIL”
TESIS
QUE PARA OBTENER EL TÍTULO DE
INGENIERO EN COMUNICACIONES Y ELECTRÓNICA
PRESENTAN
ALFONSO JORGE BONNET FUENTES
JOSÉ ALFONSO GUTIÉRREZ OSORIO
HÉCTOR ALONSO HERNÁNDEZ BENÍTEZ
DIRECTOR DE TESIS: M. EN C. MARIO JIMÉNEZ HERNÁNDEZ. CODIRECTOR DE TESIS: ING. PATRICIA LORENA RAMÍREZ RANGEL.
Resumen
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil II
Resumen
La presente tesis muestra el diseño y desarrollo de un programa de reconocimiento
de voz orientado a la implementación de un sistema de control de funciones
dentro de un automóvil. Cabe destacar que el alcance de esta tesis abarcara sólo el
desarrollo del software y no su implementación, por lo que este trabajo puede ser
consultado para futuras referencias.
El método utilizado para la obtención de datos de las señales de voz se le conoce
como Codificación por Predicción Lineal (LPC – por las siglas en inglés Linear
Prediction Coding), el cual junto con la implementación de ventanas obtiene
información característica de una señal de voz haciendo más sencilla y rápida la
comparación entre la señal ingresada y la base de datos. Dicha base está
conformada por seis comandos ( “A”, “Afuera”, “Usuario”, “Llamada”, “Cajuela “
y “Luces”), cada uno grabado veinte veces, formando así un total de ciento veinte
archivos en formato “.wav”, audio monofónico, una tasa de 16 bits y una
frecuencia de muestreo de 22050 Hz. Todos los archivos fueron normalizados y
segmentados.
Se utilizó la plataforma de MATLAB (Matrix Laboratory) y la herramienta “GUIDE”
(Graphical User Interface Development Enviroment – incluida dentro de MATLAB),
para crear una interfaz gráfica capaz de reconocer los diferentes comandos dichos
por el usuario, y a su vez, este pueda visualizar la forma de onda, los LPC y la
transformada rápida de Fourier (FFT por sus siglas en inglés Fast Fourier
Transform), además de darle la oportunidad de trabajar con la señal de voz.
El software obtiene los LPC de la señal del usuario y los compara con los de la
base de datos por medio del error cuadrático medio, y así, se determina qué
comando se expresó.
Agradecimientos
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil III
Agradecimientos
Quiero dedicar y agradecer esta tesis a mis padres Crispina y Alfonso por
brindarme todo su apoyo y cariño para lograr esta meta que sin su ayuda hubiera
sido muy difícil cumplirla, ustedes me dieron las herramientas necesarias para
enfrentarme a la vida, los amo, a mi hermana Adriana por su ayuda y por ser un
modelo a seguir, la amo, a todos mis amigos por animarme en los tiempos más
difíciles y estresantes, a mis profesores de toda la carrera por sus conocimientos y
dedicación, a mis asesores porque sin su orientación este trabajo no hubiera sido
posible y finalmente a mis amigos y compañeros Héctor y José Alfonso por
compartir este trabajo y llevarlo hasta el final, ¡sí se pudo!, les deseo éxito en todo
lo que hagan.
Bonnet Fuentes Alfonso Jorge
Agradezco el apoyo y asesoría que nos brindaron los profesores Mario de la
academia de física, Patricia de la academia de acústica, para el desarrollo de este
proyecto, así como la dedicación y esfuerzo de mis compañeros y amigos Héctor
Alonso y Alfonso Jorge en la realización de tal, por las desmañadas y desveladas,
por nunca rendirse y les agradezco por todas las cosas que aprendí y que por
ustedes seguiré aprendiendo. A los compañeros de clases por la motivación que
nos brindaron. Finalmente a mi familia, por el apoyo incondicional para cualquier
cosa a lo largo no solo del desarrollo de este proyecto, si no a lo largo de toda la
carrera.
Gutiérrez Osorio José Alfonso
Agradecimientos
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil IV
A mi hermosa familia, que en todo momento estuvo ahí para apoyarme y
sustentarme cuando más lo necesitaba, en especial a mis padres, que fueron el pilar
y el motor de todo lo que he realizado como estudiante. A mis compañeros, a los
que siempre supieron hacerme sonreír aún cuando las adversidades estuvieron
presentes, a los que con humildad me brindaron de su conocimiento, a los que tuve
que confrontarme pues de ellos aprendí a escuchar nuevas ideas, a ser más
tolerante y a crecer como persona, y a todos aquellos que en gran o pequeña
medida dejaron una huella en mi vida. A mis profesores, que me ofrecieron la
herramienta del conocimiento para con ellas construir mi futuro, pero sobre todo, a
aquellos que más que conocimiento me compartieron de sus experiencias y
vivencias.
Hernández Benítez Héctor Alonso
Índices
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil V
Índice de contenido Introducción XII Objetivo XIII
Hipótesis XIII
Justificación XIV
Capítulo 1: Antecedentes históricos 1
Capítulo 2: Marco teórico 5
2.1.- Teoría de la producción del habla 5
2.1.1.- Producción anatómica del habla 5 2.1.2.- La fonética 7 2.1.2.1.- Clasificación por su modo de excitación 7 2.1.3.- Fonemas 7
2.2.- Modelo acústico del habla 9
2.2.1.- La producción del habla 9 2.2.2.- Filtrado del tracto vocal 10 2.2.3.- Radiación en los labios 12
2.3.- Modelo digital de la producción del habla 13
2.3.1.- Excitación 13 2.3.2.- Filtrado 15 2.3.3.- Radiación 16 2.3.4.- Modelo completo 17
2.4.- Análisis en el dominio del tiempo 17 2.4.1.- Transducción, muestreo y cuantización del habla 18 2.4.2.- Análisis en tiempo corto 19 2.4.2.1.- Energía 21 2.4.2.2.- Función de autocorrelación 22
2.5.- Análisis de Fourier en tiempo corto 24
2.5.1.- Transformada rápida de Fourier 25
Índices
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil VI
2.6.- Análisis predictivo lineal 26 2.6.1.- Análisis de la señal del habla 27 2.6.2.- Método de autocorrelación 28 2.6.3.- Algoritmo de Levinson-Durbin 29
2.7.- Sistema de verificación de usuario 30
Capítulo 3: Desarrollo del proyecto 32
3.1.- Interfaz grafica de usuario (GUI) 33 3.1.1.- Partes de la GUI 36 3.1.1.1.- Texto estático (static text) 37 3.1.1.2.- Botón (push button) 38 3.1.1.3.- Texto editable (edit text) 39 3.1.1.4.- Ejes (axes) 40 3.1.1.5.- Panel (panel) 41 3.1.2.- Funcionamiento de una GUI 42 3.1.3.- Interfaz del reconocedor de voz 42 3.2.- Base de datos 43 3.2.1.- Grabación 43 3.2.2.- Normalización 45 3.2.3.- Segmentación 47 3.3.- Programación del reconocedor de comandos 49 3.3.1.- Caracterizar 49 3.3.2.- Reconocer 55 3.3.2.1.- Petición y grabación del comando 56 3.3.2.2.- Cálculo de la energía 58 3.3.2.3.- Normalización y cálculo de los LPC 63 3.3.2.4.- Cálculo del error cuadrático medio 67 3.3.2.5.- Determinación del comando 68
Capítulo 4: Pruebas y resultados 78
4.1.- Prueba con automóvil apagado en un ambiente silencioso 79 4.2.- Prueba con el motor encendido en diferentes vehículos 84 4.3.- Prueba con el motor encendido y en un ambiente de tráfico 91
Índices
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil VII
Conclusiones 94
Bibliografía y referencias 96
Anexo A 97
Anexo B 107
Anexo C 109
Índices
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil VIII
Índice de imágenes
Capítulo 2: Marco teórico
Fig. 2.1.- Corte sagital del tracto vocal. 6 Fig. 2.2.- Velocidad – volumen glotal: a) forma de onda (tren de impulsos 9
– línea segmentada), b) magnitud de espectro. Fig. 2.3.- Tubo uniforme sin perdidas de longitud “l” y una abertura con
área “A”. 10 Fig. 2.4.- Respuesta en frecuencia de un tubo uniforme sin perdidas. 11 Fig. 2.5.- Modelo de tubos concatenados (seis secciones). 12 Fig. 2.6.- Radiación de los labios: a) Bafle plano infinito, b) Respuesta en
frecuencia del bafle plano infinito. 13 Fig. 2.7.- Modelo de excitación para sonidos vocálicos. 14 Fig. 2.8.- Modelo de excitación para sonidos sordos. 14 Fig. 2.9.- Modelo completo de la excitación. 15 Fig. 2.10.- Modelo digital de la producción del habla completo. 17 Fig. 2.11.- Implementación de ventana rectangular. 20
Fig. 2.12.- Cálculo de la energía (gráfica azul) de la grabación de la palabra” hipotenusa” (gráfica negra). 21
Fig. 2.13.- Cálculo de la función de autocorrelación (abajo) para una señal periódica (arriba). 23
Fig. 2.14.- Cálculo de la función de autocorrelación (abajo) para una señal no periódica (arriba). 23
Fig.2.15.- Transformada de Fourier de segmentos de señales de voz de diferentes longitudes. (A) Segmento de señal de 5ms. (B) Transformada de Fourier de (A). (C) Segmento de señal de voz de 37.5ms. (D) Transformada de Fourier de (C). 24
Fig.2.16.- Espectro digital utilizando FFT. 25
Capítulo 3: Desarrollo del proyecto
Fig. 3.1.- Primer modo de acceso a la herramienta GUIDE de MATLAB. 34 Fig. 3.2.- Segundo modo de acceso a la herramienta GUIDE de MATLAB. 34 Fig. 3.3.- Ventana de inicio rápido de GUIDE. 35 Fig. 3.4.- Espacio de trabajo para crear una interfaz 35 Fig. 3.5.- Desglose de la paleta de componentes. 36 Fig. 3.6.- Inserción de un texto estático; a) Ícono de texto estático,
b) Texto estático en la interfaz gráfica. 37 Fig. 3.7.- Edición del texto estático en el inspector de propiedades. 38 Fig. 3.8.- Inserción de un botón; a) Ícono de botón, b) Ejemplo de botones en la
interfaz gráfica. 38 Fig. 3.9.- Inserción de un texto editable; a) Ícono de texto editable,
b) Ejemplo de texto editable en la interfaz gráfica. 40 Fig. 3.10.- Inserción de un eje; a) Ícono de ejes, b) Ejemplo de un eje en la interfaz
gráfica. 41
Índices
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil IX
Fig. 3.11.- Inserción de un panel; a) Ícono del panel, b) Ejemplo de panel en la interfaz gráfica. 42
Fig. 3.12- Interfaz del reconocedor de comandos. 43 Fig. 3.13.- Diagrama de flujo para programa de grabación. 44 Fig. 3.14.- Diagrama de flujo para programa de normalización. 45 Fig. 3.15.- Modo de abrir un archivo en Audacity. 47 Fig. 3.16.- Forma de onda dentro de la interfaz de Audacity. 47 Fig. 3.17.- Selección de una parte de la señal de onda. 48 Fig. 3.18.- Forma de onda después de ser segmentada. 48 Fig. 3.19.- a) Diagrama de flujo sección caracterizar. 54 Fig. 3.19.- b) Complemento del diagrama de flujo sección caracterizar. 55 Fig. 3.20.- Menú de opciones en forma de árbol. 56 Fig. 3.21.- Estructura general del proceso de reconocimiento. 56 Fig. 3.22.- Diagrama de flujo para la sección de petición y grabación
del comando. 57 Fig. 3.23.- Diagrama de flujo para el cálculo de la energía. 60 Fig. 3.24.- Ventana con el mensaje “No se ha dicho ningún comando”. 62 Fig. 3.25.- Despliegue de información y señal en la sección de GUI
denominada “Dominio en el Tiempo”. 63 Fig. 3.26.- Gráfica de los LPC de la señal y despliegue de los valores de
error en la sección de la GUI denominada “Procesamiento de la señal”. 63
Fig. 3.27.- Diagrama de flujo para la normalización y cálculo de los LPC. 66 Fig. 3.28.- Diagrama de flujo para el cálculo del error cuadrático medio. 67 Fig. 3.29.- a) Diagrama general de la sección determinación de comando. 70 Fig. 3.29.- b) Parte 1 del diagrama general de la sección determinación de
comando; c) Parte 2 del diagrama general de la sección determinación de comando; d) Parte 3 del diagrama general de la sección determinación de comando. 71
Fig. 3.30.- Mensaje de reconocimiento del comando “A”. 73 Fig. 3.31.- Mensaje de reconocimiento del comando “Afuera”. 74 Fig. 3.32.- Mensaje de reconocimiento del comando “Usuario”. 74 Fig. 3.33.- Mensaje de reconocimiento del comando “Llamada”. 75 Fig. 3.34.- Mensaje de reconocimiento del comando “Luces”. 75 Fig. 3.35.- Mensaje de reconocimiento del comando “Cajuela”. 76 Fig. 3.36.- Ventana para la opción de reinicio. 76
Índices
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil X
Capítulo 4: Pruebas y resultados
Fig. 4.1.- Posicionamiento del individuo y la computadora para pruebas dentro del automóvil. 78
Fig. 4.2.-Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 1 en la prueba 1. 81
Fig. 4.3.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 2 en la prueba 1. 82 Fig. 4.4.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 3 en la prueba 1. 83 Fig. 4.5.- Comparación de la respuesta del programa de reconocimiento de voz en porcentaje de cada uno de los sujetos. 84 Fig. 4.6.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 1 en el vehículo 2 de la prueba2. 86 Fig. 4.7.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 1 en el vehículo 1 de la prueba 2. 88 Fig. 4.8.- Señales obtenidas en el vehículo 2 de a) voz y b) su respectivo
espectros de frecuencia. 88 Fig. 4.8.- Señales obtenidas en el vehículo 2 de c) ruido de auto, e) ruido más voz y su respectivo espectros de frecuencia: d) ruido de auto,
f) ruido más voz. 89 Fig. 4.9.- Señal obtenida en el vehículo 1 de a) voz, c) ruido de auto y e) ruido más voz y los espectros de frecuencia b) voz, d) ruido auto, f) ruido más voz. 91 Fig. 4.10.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 1 en la prueba 3. 93
Anexo B Fig. B.1.- Descripción física del sonómetro. 108 Fig. B.2.- Curvas de ponderación del sonómetro. 108
Índices
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil XI
Índice de tablas
Capítulo 2: Marco teórico Tabla 2.1.- Fonemas del español. 8 Capítulo 4: Pruebas y resultados Tabla 4.1.- Mediciones del nivel de ruido en la prueba 1. 79
Tabla 4.2.- Resultados del sujeto 1 en la prueba 1. 80
Tabla 4.3.- Resultados del sujeto 2 en la prueba 1. 81
Tabla 4.4.- Resultados del sujeto 3 en la prueba 1. 82
Tabla 4.5.- Mediciones del nivel de ruido en vehículo 2 de la prueba2. 84
Tabla 4.6.- Resultados del sujeto 1 en el vehículo 2 en la prueba 2. 85
Tabla 4.7.- Mediciones del nivel de ruido en el vehículo 1 de la prueba 2. 86
Tabla 4.8.- Resultados del sujeto 1 con el motor encendido en el vehículo 1
en la prueba 2. 87
Tabla 4.9.- Mediciones del nivel de ruido en la prueba 3. 92
Tabla 4.10.- Resultados del sujeto 1 en el tránsito de la prueba 3. 92
Anexo B Tabla B.1.- Especificaciones del instrumento de medición. 107
Anexo C
Tabla C.1.- Especificaciones del sonómetro Phonic PAA3. 109
Introducción
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil XII
Introducción
La presente tesis está dividida en cuatro capítulos que tienen como finalidad
explicar de manera detallada e ingenieril, las bases teóricas y el proceso que se
llevó a cabo para el diseño de un programa que se podría implementar en el
desarrollo de un sistema con el cual el usuario de un automóvil tenga control de
funciones básicas de este.
El capítulo uno se enfoca en los precedentes históricos y tecnológicos, de los
reconocedores de voz, su importancia y la forma en la que desde su concepción
han ido evolucionando.
El segundo capítulo desarrolla y explica las bases teóricas implementadas en el
diseño del reconocedor de voz que aquí se expone. La primera sección de este
capítulo se enfoca en la producción anatómica de la voz y el estudio del habla. La
segunda sección expone el desarrollo de modelos acústicos que simulen la
producción del habla, su estudio y los modelos matemáticos. Partiendo de lo
anterior, en la sección tres se elabora un modelo digital del habla que servirá como
base para la implementación de los LPC. La sección cuatro expone los procesos en
el tiempo que sufre la señal de voz, desde su conversión a energía eléctrica hasta la
obtención de algunos parámetros de ella, como la energía. La quinta sección
expone el tratamiento de la señal en el dominio de la frecuencia, proceso necesario
para la realización de cálculos expresados en la última sección del capítulo.
Finalmente se presentan las ecuaciones que son relevantes en el método
implementado en el reconocimiento de comandos, así como la manera en que se
procesan las señales dentro de estos desarrollos matemáticos.
Introducción
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil XIII
El tercer capítulo comprende el desarrollo del proyecto, en el que se explica a
detalle los pasos realizados para construir el software del reconocedor de voz. El
capítulo está dividido en tres secciones, la primera expone los elementos y
características necesarios para la creación de la interfaz gráfica con la que
interactuará el usuario. La segunda sección se enfoca en la grabación y edición de
la base de datos necesaria para el sistema de reconocimiento de voz. Por último la
tercera sección desarrolla los elementos principales del reconocedor de comandos
que son caracterizar y reconocer, los cuales se enfocan en la obtención y
comparación de los LPC de la base de datos y la señal de entrada.
En el cuarto capítulo se presentan las diferentes pruebas realizadas para cuantificar
la eficiencia del software de reconocimiento así como los resultados de estas.
Objetivo
Diseñar un programa de reconocimiento de voz orientado a la implementación en
un sistema de control de funciones básicas en un automóvil.
Hipótesis
A través del método de reconocimiento de voz LPC y las herramientas que
MATLAB proporciona para el tratamiento de señales, se busca crear un programa
de reconocimiento de voz que sea de calidad, eficaz y de excelente respuesta.
Introducción
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil XIV
Justificación
Hoy en día la industria automovilística, al igual que muchas otras, está invirtiendo
en tecnología que haga de sus automóviles espacios más cómodos, seguros y
acordes a la tecnología que sus clientes estén usando. Ahora los automóviles
cuentan con interfaces de pantallas táctiles para el control del radio o la
calefacción, servicio de GPS (por sus siglas en inglés Global Positioning System) y
control por voz de algunos de los dispositivos del automóvil. Sin embargo son
sólo los autos de alto valor, los que cuentan con la mayoría de estos servicios, por
lo que un grupo muy limitado de personas tiene acceso a este tipo de beneficios
dentro de sus vehículos. La creación de un programa de reconocimiento de voz,
como el que se propone en esta tesis, puede dar pie al desarrollo de un sistema de
control de funciones económico y eficaz.
Capítulo 1: Antecedentes históricos
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 1
Capítulo 1: Antecedentes históricos
El habla y el lenguaje son las herramientas que los seres humanos usan para
comunicar o intercambiar pensamientos, ideas y emociones. Las condiciones
básicas de la vida social son comprender y expresar. La primera es apropiarse de la
realidad, clasificándola ordenadamente según las palabras comunicadas. La
segunda es hacer eficaz la voluntad del ser humano, actuando sobre los demás
para dejar constancia de su presencia. En sí el habla es la conversación, una de las
formas de expresar el idioma a lo que se denomina fonación.
Los seres humanos han demostrado un gran interés no sólo por comunicarse entre
sí mismos, sino por crear dispositivos que analicen e incluso que compartan
ciertas similitudes con los humanos. En la actualidad es un tema de investigación y
desarrollo que aún sigue vigente, sin embargo se han tenido muchos avances
dentro de todo este ámbito.
En el año 1930, el científico húngaro, Tihamér Nemes quiso patentar el desarrollo
de una máquina de transcripción automática de voz, lamentablemente su iniciativa
fue considerada como poco realista y no progresó. En el año 1936, Bell Laboratories
creó el primer analizador y el primer sintetizador de voz a los que llamaron
Vocoder y Voder respectivamente. Homer Dudley, su creador, reconoció la
naturaleza de la portadora de la voz, observó que la señal de voz se forma
modulando el espectro del sonido producido por la fuente vocal. Estas fuentes
pueden ser periódicas, producto de las vibraciones de las cuerdas vocales, o
aperiódicas, producto de turbulencias del flujo de aire en una constricción. Las
modulaciones en la forma del espectro de voz pudieron ser medidas en términos
de energía en sucesivos filtros de bandas; y las fuentes periódicas y aperiódicas
representarse por un medidor de frecuencia. Voder realiza el proceso inverso,
Capítulo 1: Antecedentes históricos
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 2
toma los datos del análisis, los entrega a una serie de filtros excitados por una señal
de pulsos periódicos o una fuente de ruido y crea finalmente una señal audible.
Este sistema era operado por sólo una persona, un operador entrenado podía hacer
que el sistema “hable” con una pronunciación razonablemente entendible. El
sistema tenía la habilidad de asombrar y entretener mientras se demostraban sus
principios científicos.
En 1952, los investigadores de Bell Laboratories: K. H. Davis, R. Biddulph y S.
Balashek, construyeron un sistema dependiente del locutor y capaz de reconocer
dígitos del 0 al 9 basándose en las características del espectro de cada número. En
1953, Walter Lawrence creó el primer sintetizador de voz basado en frecuencias
formantes, al que denominó PAT (Por sus siglas en inglés Parametric Artificial
Talker). En 1956, en los laboratorios RCA, los investigadores Harry Olson y Herbert
Belar intentaron reconocer 10 sílabas distintas con un método dependiente del
locutor. El sistema se basó nuevamente en el análisis espectral.
George Rosen, creó en 1958 el primer sintetizador articulatorio: DAVO (Por sus
siglas en inglés Dynamic Analog Vocal tract). Este modelo era controlado por una
grabación de señales de control hechas manualmente.
En 1959, la University College London con sus investigadores Dennis B. Fry y
Peter Denes, crearon un sistema capaz de reconocer cuatro vocales y nueve
consonantes. Emplearon el análisis espectral y comparación de patrones, aunque
en realidad el aspecto innovador fue el uso de información estadística, con ello
determinaron secuencias posibles de fonemas en inglés.
Durante la década de 1960 las técnicas de reconocimiento de voz dieron un nuevo
paso evolutivo. Los investigadores abordaron el problema empleando
Capítulo 1: Antecedentes históricos
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 3
vocabularios pequeños, dependientes del locutor y con un flujo discreto. La
tecnología digital irrumpió en esta década.
En 1962, el físico Lawrence Kersta de los Bell Laboratories, realizó el primer gran
paso en la identificación de locutores al introducir el término “voiceprint” para un
espectrograma generado por un complejo dispositivo electromecánico.
Paralelamente, IBM y Carnegie Mellon University, investigaban en reconocimiento
de voz continua.
Los años 70 fueron testigos de esfuerzos por mejorar los sistemas dependientes del
locutor con entrada de voz discreta y vocabularios reducidos. ARPA (Por sus siglas
en inglés Advanced Research Projects Agency) de la sección americana de defensa,
comienza a interesarse en el reconocimiento de voz e inicia sus propias
investigaciones. Nacieron técnicas como “time warping”, “modelado
probabilístico” que son aplicaciones de los modelos ocultos de Markov, y el
“algoritmo de retropropagación”.
En 1980, los costos reducidos de las aplicaciones, el fuerte comienzo de desarrollo
de los PC y el apoyo de ARPA beneficiaron el desarrollo del reconocimiento de
habla. Se trabajó en el tamaño del vocabulario, algunos casos llegaron hasta 20,000
palabras y se cambió el enfoque trasladándose desde las técnicas de
reconocimiento según patrones a técnicas probabilísticas como son las cadenas de
Markov. Durante los años 90 se siguió trabajando con vocabularios amplios. Los
costos siguieron disminuyendo y se hicieron más comunes las aplicaciones
independientes del locutor y flujo continuo.
Los primeros modelos neuronales (como por ejemplo el perceptrón), inicialmente
propuesto en los años 50, volvieron a aparecer a finales de esta década gracias al
desarrollo de algoritmos de aprendizaje mucho más eficaces, un ejemplo de su
desarrollo es en el lenguaje de programación MATLAB cuyo nombre deriva de
Capítulo 1: Antecedentes históricos
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 4
matrix laboratory (en español laboratorio de matrices), creado en 1970 para
proporcionar un sencillo acceso al software de matrices LINPACK y EISPACK sin
tener que usar FORTRAN (por su abreviatura en inglés The IBM Mathematical
Formula Translating System) con el que trabajó inicialmente. Desde la primera
versión muchas otras personas han contribuido al desarrollo de MATLAB. Este
lenguaje de alto nivel fue implementado para realizar cálculos técnicos. Por su
capacidad es un sistema interactivo ideal para aplicaciones de ingeniería. En la
actualidad dispone de una amplia cantidad de programas de apoyo especializados,
denominados “toolboxes”, estos extienden significativamente el número de
funciones incorporadas en el programa principal. Estos cubren prácticamente casi
todas las áreas principales en el mundo de la ingeniería y la simulación, por
ejemplo existen para el proceso de imágenes, procesamiento digital de señales,
control robusto, estadística, análisis financiero, matemáticas simbólicas, redes
neuronales, lógica difusa, entre otros. Integra todos los requisitos claves de un
sistema de computación técnico: cálculo numérico, gráficos, herramientas para
aplicaciones específicas y capacidad de ejecución en múltiples plataformas como
Windows 95/98/XP/NT, Macintosh, Unix y Linux. Todas estas herramientas
proporcionadas por MATLAB permitieron analizar, simular y crear sistemas de
reconocimientos de voz de una manera más sencilla, referente a los gráficos de
señales utilizadas en el proceso y operaciones automáticas de matrices, sin
embargo se sigue trabajando para poder hacer más eficaz las aplicaciones que se le
dan a estos sistemas de programación, debido a que tienden a trabajar con lentitud
a medida que se realizan base de datos más extensos y completos en los
reconocedores. Los sistemas del presente y presumiblemente los que puedan venir
en el futuro se basarán al menos en parte, en modelos y técnicas que aparecieron
relativamente pronto en la historia del reconocimiento automático del habla.
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 5
Capítulo 2: Marco teórico
El objetivo del habla siempre ha sido el de la comunicación. Este siempre se ha
utilizado para comunicarse acústicamente entre un humano y otro. A lo largo del
último siglo se han logrado desarrollar tecnologías que permiten transformar esas
señales acústicas en señales eléctricas lo que se ha logrado, entre otras cosas, que el
hombre pueda interactuar con las máquinas por medio de la voz.
A partir de esta conversión de las señales de la voz (analógicas) al formato digital,
ha sido posible analizar y procesar las señales a través de medios digitales, dando
pie a lo que se conoce como procesamiento digital de señales, herramienta con la
cual se desarrollaron los métodos (LPC y la transformada rápida de Fourier) para
el reconocimiento de voz que se usará en el prototipo reconocedor de comandos
que expone esta tesis. Con estas dos bases, el habla y el tratamiento de señales
digitales, se establecerá el marco teórico que comprenderá esta tesis.
Se dividirá el capitulo en dos secciones. La primera sección está comprendida por
tres temas que se enfocan en: la producción del habla, el modelo acústico y el
digital del mismo. La siguiente sección comprende las herramientas matemáticas
que se utilizan para el desarrollo del reconocedor de comandos.
2.1.- Teoría de la producción del habla
2.1.1.- Producción anatómica del habla
El sistema encargado de producir el habla en el hombre es sumamente complicado,
cuenta con un gran número de elementos y cada uno tiene una función específica
dentro de este complejo sistema, es por esta razón que se presentará solamente
una síntesis del proceso.
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 6
Los mecanismos utilizados en la producción del habla son: las componentes
subglotales, la laringe, el tracto vocal y los articuladores (ver Fig. 2.1). Los
componentes subglotales son los pulmones y la tráquea. Los primeros son los
encargados de suministrar la energía, en forma de aire, necesaria para producir el
sonido. El segundo canaliza este aire y lo dirige hacia la laringe. Estos dos órganos
juntos son los que ajustan el tono, el volumen y la calidad de la voz. Dentro de la
laringe se encuentran las cuerdas vocales, que son tejidos conformados por
músculos y membranas mucosas, que se extienden a lo ancho de toda la cavidad.
Estas cuerdas sirven como moduladores del aire que pasa a través de la laringe
para así, formar los sonidos. El tracto vocal, compuesto por la faringe y la cavidad
oral, actúa como un tubo resonador que filtra los sonidos. Para producir los
sonidos nasales (consonantes), el velo del paladar baja y el tracto vocal se acopla
acústicamente con la cavidad nasal. Los articuladores, que incluyen al velo del
paladar, lengua, quijada y labios, configuran al tracto vocal para determinar que
frecuencias de sonidos son las que pasan para así, producir los diferentes sonidos,
que serán radiados por los labios o por la ventana de la nariz.
Fig. 2.1.- Corte sagital del tracto vocal
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 7
2.1.2.- La fonética
La fonética es el estudio acerca de los sonidos de uno o varios idiomas, sea en su
fisiología y acústica. Estos sonidos pueden ser clasificados por su modo de
excitación o por características especificas como los fonemas.
2.1.2.1.- Clasificación por su modo de excitación
Para el análisis de señales esta clasificación es de mucha ayuda debido a que
separa las características de la fuente del sonido de las que produce el tracto vocal.
Existen tres clases de sonidos dentro de esta clasificación:
Sonidos sonoros: son creados por vibraciones en las cuerdas vocales que
producen pulsos de aire cuasi-periódicos (vocales) a través de la laringe.
Sonidos sordos: son producidos por una excitación turbulenta en el tracto
vocal. Por ejemplo la “s” y la “f”.
Sonidos explosivos: son producidos por una explosión de energía acústica
originada por el escape de la acumulación de presión de aire en el tracto
vocal. Por ejemplo la “t” y la “p”.
2.1.3.- Fonemas
Un fonema está definido como la unidad más pequeña del sonido, que al ser
sustituido puede alterar el contenido lingüístico del mensaje. El español tiene 24
fonemas que incluyen vocales, diptongos, semivocales y consonantes. A
continuación se muestra una tabla con dichos fonemas (Tabla 2.1)
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 8
Tabla 2.1 Fonemas del español
fonema grafía ejemplos
/a/ a
/b/ b, v vaso, bote, cava
/ / c, z cena, caza
/k/ c, qu, k casa, queso, kilo
/t∫/ ch chico, muchacho
/d/ d dado
/e/ e
/f/ f fama, café
/g/ g, gu gama, guiso
/i/ i
/x/ j, g paja, gitano
/l/ l ala, mal
/λ/ ll llave, calle
/m/ m mamá
/n/ n nana
/η/ ñ caña
/o/ o
/p/ p piedra, capa
/r/ r para
/ / rr, r perro, remo
/s/ s soy, dos
/t/ t tapa, atar
/u/ u
/ / y, hi mayo, hierba
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 9
2.2.- Modelo acústico del habla
Teniendo conocimiento del sistema que se ocupa de producir el habla, es posible
producir un modelo acústico que realice las mismas funciones. Este sistema está
dividido en tres partes: la fuente, el filtrado y la radiación del sonido.
2.2.1.- La producción del habla
La fuente del sonido es lo que genera la energía acústica necesaria para la
producción del habla y es visto como la excitación aplicada al sistema. Esta
excitación puede ser vocálica o fricativa.
Los sonidos vocálicos son producidos por la vibración de las cuerdas vocales (que
se encuentran en la laringe). Esta oscilación, que se produce por la liberación de
presión de aire en la glotis, se repite a una frecuencia fundamental que depende de
la presión de aire detrás de las cuerdas, la masa de las cuerdas y la tensión aplicada
a ellas. El resultado es que la corriente de aire que es modulada por la glotis (junto
con las cuerdas vocales), es liberada como una serie de pulsos (ver Fig. 2.2a). La
frecuencia fundamental a la que oscilan estos pulsos es conocido como el “tono de
voz” de la persona. En la figura 2.2b, se grafica el espectro de una señal donde
pueden verse la frecuencia fundamental y sus armónicos (conocidos también como
“armónicos del tono de voz”).
a)
b)
Fig. 2.2.- Velocidad – volumen glotal: a)forma de onda (tren de impulsos – línea segmentada), b)
magnitud de espectro
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 10
2.2.2.- Filtrado del tracto vocal
El tracto vocal filtra acústicamente los pulsos generados y permite que algunas
frecuencias pasen, mientas que a otras las atenúa. La manera más sencilla de
explicar el modelo del tracto vocal es con el “tubo sin perdidas uniforme” (ver fig.
2.3).
Fig. 2.3.- Tubo uniforme sin perdidas de longitud “l” y una abertura con area “A”.
Este es un cilindro de paredes duras, con un área transversal A constante y una
longitud l, y que en uno de sus extremos tiene un pistón que genera un flujo ideal
de presión de aire. Si se asume que en él no hay pérdidas por viscosidad o por la
conducción térmica y que sólo se producen ondas planas, el sonido dentro del
tubo cumple con el siguiente par de ecuaciones de diferenciales parciales (Ec. 2.1).
(Ec. 2.1)
Donde p es la presión y u es el volumen-velocidad, ambos valores en función de la
distancia x y el tiempo t, es la densidad del aire, y c es la velocidad del sonido.
Una característica del tubo acústico es que al resolver la Ec. 2.1 en el dominio de la
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 11
frecuencia, se obtiene la relación de volumen-velocidad que hay en la
abertura del tubo y la que se produce en la fuente de excitación . Ver Ec. 2.2.
(Ec. 2.2)
Esta respuesta en frecuencia está ilustrada en la Fig 2.4, para l = 17.5 cm y c = 35000
cm/seg. Estos polos de (en los que el denominador vale cero) son las
frecuencias de resonancia del tubo acústico. En el habla a estas frecuencias de
resonancia del tracto vocal se llaman formantes.
Fig. 2.4.- Respuesta en frecuencia de un tubo uniforme sin perdidas.
Un modelo más realista puede obtenerse al concatenar varios tubos acústicos de
diferentes áreas transversales como se muestra en la Fig. 2.5. Hay que asumir en
este diseño, que las longitudes de los tubos deben de ser las mismas, y tener en
cuenta que la señal es parcialmente propagada y reflejada en cada conjunción. Para
calcular el coeficiente de reflexión de la n-ésima conjunción se utiliza la Ec. 2.3.
(Ec. 2.3)
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 12
Donde representa la cantidad de la onda que se reflejó en esa unión. De esta
manera la respuesta en frecuencia del tracto vocal queda determinada por los
coeficientes de reflexión, el área de empalme de los tubos y los polos de la función
de transferencia.
Fig. 2.5.- Modelo de tubos concatenados (seis secciones).
2.2.3.- Radiación en los labios
La relación entre el volumen-velocidad y la presión en los labios
puede ser modelado por un bafle plano con una abertura de área A (Fig. 2.6.a), está
dado por la Ec 2.4.
(Ec. 2.4)
Donde la impedancia de radiación está dada por la Ec. 2.5.
(Ec. 2.5)
En la Fig 2.6.b., se observa la radiación que se obtendría al tener una resistencia
y una inducción de radiación .
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 13
a)
b)
Fig. 2.6.- Radiación de los labios: a) Bafle plano infinito, b) Respuesta en frecuencia del bafle plano infinito.
2.3.- Modelo digital de la producción del habla
En la sección anterior, se vio con detalle la producción del habla desde el punto de
vista fisiológico, para así desarrollar un modelo acústico que facilite la
comprensión del fenómeno físico. A partir de dicho modelo se procederá a crear
una representación digital, con el propósito de hacer un análisis de las señales del
habla, las cuales se manejan en tiempo discreto y limitadas a una frecuencia de
Nyquist, cabe destacar que el modelo digital se considerará como un sistema lineal.
A continuación se analizará por separado cada sección del modelo acústico para
crear su versión digital. Éste se divide básicamente en tres secciones: excitación,
filtrado y radiación, en donde al final del capítulo se unirán para así obtener por
completo el modelo digital de la producción del habla.
2.3.1.- Excitación
Como se vio en la sección 2.2.1, los sonidos vocálicos son de tipo cuasi periódicos
por lo que la representación digital de estos se modela de la siguiente manera:
primero un tren de impulsos separados por el periodo de la fundamental es
generado, donde posteriormente son filtrados por un modelo de la glotis llamado
, con el cual se obtiene una forma de onda muy similar a la producida en el
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 14
modelo biológico o acústico (ver Fig. 2.2). Por último, el resultado es multiplicado
por un controlador de amplitud denominado A. La Fig. 2.7, ilustra de una manera
sencilla lo descrito anteriormente. El modelo de la glotis , es un filtro que tiene
una respuesta al impulso infinito con dos polos (es decir un filtro IIR – por sus
siglas en inglés Infinite Impulse Response), el cual es descrito por la Ec. 2.6, en donde
y son reales o complejos conjugados.
Fig. 2.7.- Modelo de excitación para sonidos vocálicos.
(Ec. 2.6)
Para el caso de los sonidos sordos, el modelo de excitación se basa en la
implementación de un generador de ruido Gaussiano. Fonemas como /f/ o /s/ al
ser producidos por el sistema biológico tienen una forma de onda similar a este
tipo de ruido. Al igual que en el modelo de sonidos vocálicos, después del
generador de ruido existe un controlador de ganancia denominado A. La Fig. 2.8,
muestra el modelo de excitación para los sonidos sordos.
Fig. 2.8.- Modelo de excitación para sonidos sordos.
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 15
La producción del habla es una combinación de ambos tipos de sonidos, por lo que
el modelo completo de excitación se ilustra en la Fig. 2.9. Si se desea producir un
sonido de tipo vocálico uno sordo, un switch elegirá el modelo correspondiente.
Fig. 2.9.- Modelo completo de la excitación.
2.3.2.- Filtrado
Esta sección del modelo digital comprende lo que es el tracto vocal, en donde se
producen sonidos nasales y no nasales; y también donde se generan las formantes
para cada fonema.
De acuerdo al sistema acústico de tubos concatenados, en lo que respecta a los
sonidos no nasales, la función de transferencia está determinada por los
coeficientes de reflexión y contiene sólo polos. Por lo tanto, el modelo digital se
representa por la Ec. 2.7, donde es el número de polos y estos últimos son las
raíces de la función .
(Ec. 2.7)
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 16
Debido a que la forma de onda que ha sido filtrada es real, los polos complejos
aparecerán en pares simétricos los cuales corresponden a las formantes de la
señal. Así que, la función puede ser encontrada por el conjunto de coeficientes
de reflexión de la siguiente manera:
Para el caso de la producción de sonidos nasales, es necesario agregar ceros a la Ec.
2.7, pero se sabe que esto puede ser sustituido agregando un número infinito de
polos a . Evidentemente, esta solución no es factible, ya que se requieren de
más parámetros para caracterizar el filtro, por lo que sólo es suficiente
implementar la Ec. 2.7.
2.3.3.- Radiación
En esta sección se incluye el efecto de presión de los labios que se ejerce a la hora
de producir un sonido. Como se vio anteriormente, la respuesta en frecuencia de la
radiación en los labios (Fig. 2.6.b) se comporta como un filtro pasa altas. La Ec. 2.8
representa dicho modelo de radiación, el cual es un diferenciador digital con un
cero en corriente directa.
(Ec. 2.8)
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 17
2.3.4.- Modelo completo
Una vez analizadas las secciones 2.3.1, 2.3.2 y 2.3.3 se procede a formar el sistema
digital de la producción del habla, el cual se ilustra en la Fig. 2.10. En este un switch
es el encargado de elegir el modo de excitación deseado, para así pasar por el filtro
el cual se describe en la Ec. 2.9, para al final producir una señal . Este
modelo digital es la base para el diseño de los sintetizadores de voz comerciales.
Fig. 2. 10.- Modelo digital de la producción del habla completo.
(Ec. 2.9)
2.4.- Análisis en el dominio del tiempo
En los apartados 2.2 y 2.3 se expusieron dos modelos de producción del habla
(acústico y digital), sin embargo no se ha contemplado como sería posible que un
sistema electrónico o computacional pudiese entender lo que se le dice. Para lograr
esto, es necesario convertir las señales acústicas en digitales y realizar un análisis
en tiempo corto sobre ellas, con el fin de poder cuantificar parámetros como la
energía o la autocorrelación, elementos clave en el procedimiento de
reconocimiento de voz.
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 18
La sección se divide en dos partes: digitalización de la señal (transducción,
muestreo y cuantización del habla) y análisis en tiempo corto.
2.4.1.- Transducción, muestreo y cuantización del habla
Todos los sonidos, incluyendo los producidos por el habla, se deben a los cambios
de presión en el aire. El oído humano es sensible a estos cambios, debido a que la
membrana timpánica responde a ellos, convirtiendo dicha energía acústica en
energía mecánica, que después es convertida en energía eléctrica por las células
ciliadas que se encuentran en el oído interno. Una vez convertido el sonido en
señales eléctricas, el cerebro las procesa.
Algo similar se requiere para que un sistema electrónico o computacional entienda
y procese una señal sonora. Para ello se requiere utilizar un micrófono, el cual es
un transductor acústico-mecánico-eléctrico, que simularía el funcionamiento del
oído humano. Este dispositivo convierte el sonido en señales eléctricas, las cuales
son continuas en amplitud y tiempo, siendo esto un impedimento para los sistemas
digitales ya que sólo pueden procesar señales discretas en amplitud y tiempo. Por
ello, las señales continuas deben pasar por dos procesos: muestreo y cuantización.
La primera tarea que se debe de realizar para digitalizar una señal es discretizarla
en tiempo. A esto se le conoce como muestreo, y consiste en tomar valores de la
señal continua en tiempos discretos. El teorema de Nyquist establece que para
poder representar una señal de manera discreta en el tiempo y poderla reconstruir
a su forma original (continua), es necesario realizar el muestreo a una velocidad
del doble o más respecto a la frecuencia más alta (frecuencia de Nyquist) que se
encuentre en dicha señal. De esta manera se tiene la información más
representativa de la señal continua en el tiempo.
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 19
Algunos estándares importantes en la industria son: La telefonía digital utiliza una
frecuencia de muestreo de 8KHz por lo que la frecuencia de Nyquist es 4KHz,
siendo esto lo suficiente para poder transmitir voz. Los discos compactos utilizan
una frecuencia de muestreo aproximada de 44KHz, teniendo una frecuencia
Nyquist o máxima de 22KHz, así garantizando que se reproducirá todo el ancho de
banda audible del ser humano.
Una vez discretizada la señal en el tiempo, es necesario hacerlo en amplitud. Para
ello existe el proceso de cuantización que funciona de la siguiente manera: se
toman los valores continuos de amplitud de la señal muestreada y se representan
por una serie de valores finitos de amplitud de un formato digital de bits, en
otras palabras, los valores de amplitud de la señal muestreada son redondeados o
aproximados a unos valores finitos ya establecidos de acuerdo al número de bits
que se utilicen en el formato digital. Entre mayor número de bits se utilicen, menor
error o ruido de cuantización existirá, esto se puede apreciar en la Ec. 2.10, que
muestra la relación señal a ruido expresada en dB.
(Ec. 2.10)
2.4.2.- Análisis en tiempo corto
Para estudiar las propiedades principales de una señal de audio digital es
necesario introducir el concepto de análisis en tiempo corto. Si se deseara, por
ejemplo, encontrar la frecuencia fundamental de una conversación de un minuto,
sería muy difícil, ya que la señal de audio es variante en el tiempo y dentro de la
conversación se emiten varios fonemas. Pero a escalas de tiempo muy pequeñas,
se puede notar que las propiedades de la señal de audio cambian lentamente
conforme pasa el tiempo, otorgándole la característica de ser invariante. Para
analizar dicho audio, se procede a segmentarlo en marcos o ventanas para así tener
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 20
la suficiente información y caracterizar las propiedades a estudiar (energía y
función de autocorrelación). A esto se le conoce como ventaneo y se representa con
la función . Se recomienda que en cada ventana se encuentren al menos dos
periodos de la frecuencia fundamental. Por lo regular se utiliza un ancho de
ventana de 30ms y un desplazamiento cada 10ms. Dentro de las ventanas más
utilizadas se encuentran las rectangulares, las de Hamming, las de Hanning y las
de Blackman, pero en el desarrollo de esta tesis sólo se implementará la
rectangular (Ec. 2.11), la cual vale 1 en todo el ancho de ventana y 0 para el resto.
La Fig. 2.11 muestra como se utiliza .
(Ec. 2.11)
Fig. 2.11.- Implementación de ventana rectangular.
Dos mediciones o funciones que comúnmente se estudian en las señales del habla
haciendo uso del análisis en tiempo reducido son: la energía y la función de
autocorrelación. A continuación se describe a detalle en qué consiste cada una de
ellas.
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 21
2.4.2.1.- Energía
La energía se obtiene de la suma de los cuadrados de los valores de la señal
ponderados por la ventana elegida, donde lo anterior se describe en la Ec. 2.12.
(Ec. 2.12)
Si el tamaño de la ventana es muy grande no se apreciarán los cambios en las
propiedades energéticas de la señal, mientras que al elegir un tamaño muy
pequeño existirán demasiados cambios en tales propiedades.
Esta medición permite identificar si en una grabación existe silencio, siempre y
cuando los niveles de ruido sean muy bajos, es decir, la SNR sea alta. En la Fig. 2.12
se ilustra el cálculo de la energía de la palabra “hipotenusa”. En ella se observa
cómo los máximos existen en los segmentos vocálicos, mientras que para los
segmentos sordos o silenciosos, la energía decae.
Fig. 2.12.- Cálculo de la energía (gráfica azul) de la grabación de la palabra” hipotenusa” (gráfica negra).
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 22
2.4.2.2.- Función de autocorrelación
Dicha medición permite saber que tan parecida es una muestra de otra, he de ahí
su nombre. La función de autocorrelación se define en la Ec. 2.13, donde es el
retraso de la señal.
(Ec. 2.13)
Cuando una muestra pasada es similar a la presente, el valor que se obtiene en la
función es máximo, por lo tanto es evidente que las periodicidades que se
encuentran en la señal cumplen con lo anterior, por ejemplo si la señal tiene
un periodo , entonces en la función de autocorrelación se puede decir que
Como se mencionó en la introducción de este tema, es necesario implementar el
concepto de ventaneo, por lo que la función de autocorrelación finalmente se
expresa en la Ec. 2.14.
(Ec. 2.14)
Independientemente de que la señal sea periódica o no lo sea, cuando la
función de autocorrelación es máxima y corresponde al cálculo de la energía, esto
es .
Para ilustrar de una mejor manera lo descrito anteriormente, se exponen a
continuación dos cálculos de autocorrelación, uno es para una señal periódica, y el
otro para una no periódica. En la Fig. 2.13 la señal tiene un periodo , por lo que
la función de autocorrelación obtiene valores máximos aproximadamente iguales
cada veces, por ende se puede decir que hay una correlación en los valores de .
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 23
Fig. 2.13.- Cálculo de la función de autocorrelación (abajo) para una señal periódica (arriba).
De manera contraria, si la señal no es periódica, en la función de autocorrelación
se puede observar que no existe ninguna similitud en todos los valores de , por
lo que se dice que no hay una correlación en la señal, tal como puede ser apreciado
en la Fig. 2.14.
Fig. 2.14.- Cálculo de la función de autocorrelación (abajo) para una señal no periódica (arriba).
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 24
2.5.- Análisis de Fourier en tiempo corto
La transformada de Fourier es una técnica implementada para pasar una señal del
dominio del tiempo al dominio de la frecuencia o viceversa. De igual manera esto
permite identificar las frecuencias en las cuales una señal produce energía. La
transformada de Fourier está dada por la Ec. 2.15:
(Ec. 2.15)
La Fig. 2.15 (A) y Fig. 2.15(C) son segmentos de señales de voz de diferentes
longitudes, la Fig. 2.15 (B) y Fig. 2.15 (D) son sus respectivas transformadas de
Fourier, notando que la estructura armónica en la transformada de la señal de
35.5ms es más notoria que en la de 5 ms, al igual que la estructura de formantes.
Fig.2.15.- Transformada de Fourier de segmentos de señales de voz de diferentes longitudes
(A) Segmento de señal de 5ms. (B) Transformada de Fourier de (A). (C) Segmento de señal de voz de 37.5ms. (D) Transformada de Fourier de (C).
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 25
2.5.1.- Transformada rápida de Fourier
Es un eficiente algoritmo matemático que permite calcular la transformada de
Fourier discreta (DFT – por sus siglas en inglés Discrete Fourier Transform) y su
inversa. La DFT es el proceso matemático con el cual se obtiene la transformada de
Fourier para señales discretas. Las siglas FFT son la abreviatura usual del inglés
para Fast Fourier Transform. Este algoritmo es de gran importancia en una amplia
variedad de aplicaciones, desde el procesamiento digital de señales hasta en
diseños de filtros digitales. En general su función es la de resolver ecuaciones
diferenciales, ecuaciones diferenciales parciales o algoritmos de multiplicación
rápida de grandes enteros.
La Fig. 2.16 ilustra el espectro digital en tres dimensiones (x para la frecuencia, y
para la magnitud y z para el tiempo). La transformada de Fourier en tiempo corto
se utiliza también para las técnicas de codificación de la voz (como el canal de
codificación de voz), donde los parámetros de dominio de frecuencia se codifican y
se transmiten, y para la mejora del habla y la modificación de la señal.
Fig.2.16.- Espectro digital utilizando FFT
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 26
2.6.- Análisis predictivo lineal
Comúnmente llamada coeficientes de predicción lineal LPC (por sus siglas en
inglés Linear Predictive Coding), es considerada una de las mejores herramientas
para las señales de voz debido a que se adapta al modelo de producción del habla
digital que se presentó en la sección 2.3, y es muy conocida por su velocidad de
cálculo.
La idea básica de predicción lineal es que una muestra se predice a partir de
la suma de muestras anteriores, ponderadas linealmente, como se muestra en la
Ec. 2.16.
(Ec. 2.16)
El conjunto son los coeficientes de predicción lineal, este está
determinado por minimizar la diferencia media cuadrática entre las muestras de
habla y las predichas. La ecuación anterior puede ser escrita de manera alternativa
como se muestra en la Ec. 2.17.
(Ec. 2.17)
El modelo de la agrupación del habla se muestra en la Fig. 2.10 donde la función de
transferencia produce una salida de voz mediante una excitación en la
entrada (tren de pulsos o ruido aleatorio) y una ganancia aplicada al filtro.
Este es el modelo de todos los polos de la producción del habla, donde las raíces
del polinomio del denominador son al cual se le denomina filtro inverso
(Ec.2.7). La Ec. 2.18 muestra el modelo de producción del habla.
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 27
(Ec. 2.18)
Si se pasa la Ec. 2.18 al dominio del tiempo, se obtiene la ecuación del modelo de
producción del habla en su forma diferencial (Ec. 2.19).
(Ec. 2.19)
Como se puede apreciar la Ec. 2.19 es similar a la Ec. 2.17. Por esta razón es que se
considera el método de LPC como apto para la implementación en el
reconocimiento de voz ya que con este se obtienen los coeficientes del filtro inverso
.
2.6.1.- Análisis de la señal del habla
El error que se estima entre las señales predichas y las reales viene dado por la Ec.
2.20. Donde los parámetros son las estimaciones de los coeficientes del filtro
LPC.
(Ec. 2.20)
Es posible determinar esas estimaciones de los coeficientes del filtro, minimizando
el error cuadrático medio sobre una sección de la señal (Ec. 2.21).
(Ec. 2.21)
Para minimizar el error cuadrático medio se calcula la derivada parcial
con lo que se obtiene un conjunto de ecuaciones.
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 28
(Ec. 2.22)
Dos diferentes formulaciones son posibles, dependiendo del intervalo de y de la
minimización que se produzca, los cuales son: el método de autocorrelación y de
covarianza. De estos dos métodos, sólo se usará el de autocorrelación para la
solución de la matriz expuesta en la Ec. 2.22.
2.6.2.- Método de autocorrelación
En este método se asume que y la forma de onda se ventanea, de
modo que todo lo que está fuera de esta ventana toma el valor de cero, esto
es: , donde es una ventana de longitud finita (de N
puntos) que cubre el intervalo deseado.
Debido a que este método intenta predecir las primeras muestras de la señal que
se encuentran fuera de la ventana, puede que el error resultante sea muy grande,
para evitar esto es preferible usar la ventana de Hamming debido a que esta
reduce suavemente los extremos de la señal a cero. Por lo que la ecuaciones
normales (Ec. 2.22) se rescriben:
(Ec. 2.13)
Donde
La matriz que se traduce en el lado izquierdo de Ec. 2.13 es simétrica, positiva y
Toeplitz (los elementos a lo largo de cualquier diagonal son iguales). Un método
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 29
muy eficiente llamado la recursión de Levinson puede utilizarse para resolver este
sistema de ecuaciones.
2.6.3.- Algoritmo de Levinson-Durbin
La matriz de la Ec. 2.13 puede ser resuelta por un método muy eficiente, el cual fue
inventado por Levinson y reformulado por Durbin, de ahí su nombre.
El algoritmo de Levinson-Durbin se muestra en el conjunto de ecuaciones Ec. 2.14.
Dicho proceso de resolución de la matriz es de forma cíclica, donde i es el número
de iteración y es indicado en los índices entre paréntesis, k es el orden del filtro
predictor, R(i) el valor de autocorrelación, ai(i) son los elementos de pivotaje, aj(i) son
los coeficientes LPC; y E es el error de predicción. La ecuación Ec. 2.14a sólo es la
inicialización del ciclo, por lo que las iteraciones serían desde Ec. 2.14b hasta Ec.
2.14d. Para una iteración, una vez inicializado el error de predicción, se calculan
los coeficientes de pivotaje y con ellos se obtienen los coeficientes LPC. Al final de
la iteración se calcula el error de predicción con los elementos de pivotaje.
a)
(Ec. 2.14)
b)
c)
d)
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 30
Este método comparado con otros es más eficiente en los procesos
computacionales debido a que el número de las operaciones que realiza es
proporcional a k2 mientras que para otros es de k3, también es que el orden del
predictor puede ser de cualquier valor y si se desea, es posible colocar un umbral
para el error predictivo para que así al momento de llegar a este el cálculo cese.
2.7.- Sistema de verificación de usuario
Una aplicación que ha implementado toda la teoría expuesta anteriormente y
también hace uso de más técnicas de reconocimiento de voz, fue desarrollada por
Rosenberg y compañía. A esta aplicación se le conoce como sistema de verificación
de usuario, y consiste en una computadora que hace una petición para que la
persona por reconocer diga una expresión, la cual habilitará alguna función
específica (como si fuera una contraseña).
El sistema funciona realizando tres procesos. El primero es el del tratamiento de la
señal, es decir, eliminar las partes de la grabación donde no se grabó el mensaje
para sólo quedarse con la señal de voz. El segundo es para que se obtengan los
parámetros necesarios (para esta aplicación son detector de pitch, energía, LPC y
analisis de formantes) los cuales serán ocupados en el tercer proceso, el cual trata
sobre una comparación de una referencia, almacenada previamente, con la
expresión. De acuerdo al resultado de esta comparación, el sistema tomará la
decisión si la persona ha sido reconocida o no.
Dentro del proceso de comparación, no es necesario hacer uso del pitch, la energía
o análisis de formantes, debido a que el orador no dice la expresión de manera
constante en cada repetición. Para solucionar esto, se vio en la necesidad de
deformar no linealmente la escala del tiempo para obtener los mejores registros de
los patrones a usar, y esto con el fin de alinear el contorno de la expresión con el de
Capítulo 2: Marco teórico
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 31
la referencia. Esta distorsión es muy importante y ha sido aplicada en varios
procesos que involucran el procesamiento del habla.
Lo único que hace falta para concluir el tercer proceso es el de obtener la medición
de la distancia entre la referencia y la expresión, la cual puede ser obtenida por la
Ec. 2.15, donde ajs(i) es el valor de la j-ésima medición del contorno en el tiempo i,
ajr(i) es el valor de la j-ésima medición del contorno de referencia en el tiempo i,
aj(i) es la desviación estándar de la j-ésima medición en el tiempo i.
(Ec. 2.15)
Este sistema previamente descrito ha sido muchas veces un caso de estudio y
puesto en práctica debido a su eficiencia. Para el desarrollo de esta tesis, parte de
esta se ha basado en este procedimiento, sólo que la distancia que se usará se
expresa en la Ec. 2.16. la cual es el error cuadrático medio.
(Ec. 2.16)
Donde es la muestra k de la señal de entrada, es la muestra k de la señal de
referencia y N es la cantidad de muestras analizadas.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 32
Capítulo 3: Desarrollo del proyecto
El objetivo de este capítulo es explicar de manera detallada el proceso de
elaboración del programa que se encargará del reconocimiento de voz, desde la
presentación (interfaz gráfica) hasta las entrañas del mismo (programación y base
de datos). Esta sección está comprendida por tres partes. La primera se refiere al
aspecto visual del proyecto, en este caso, la creación de una interfaz grafica en
MATLAB con la que el usuario interactuará. En esta primera parte se explicará a
detalle el proceso para la creación de la interfaz, los componentes que la integran y
la implementación de estos. La segunda parte de este capítulo comprende lo
relacionado con la grabación y edición de la base datos, parte fundamental del
programa de reconocimiento de voz utilizando dos programas auxiliares
desarrollados de igual manera en MATLAB (“Grabadora” y “Normalizador”) y el
software Audacity. En esta se desarrolla cómo fueron grabados los comandos “A”,
“Afuera”, “Llamada”, “Usuario”, “Cajuela” y “Luces”, las características de estas
grabaciones y la edición que se aplicó a las mismas para evitar problemas a la hora
de implementar la base de datos. Se utilizaron estos comandos con la intención de
cumplir con las siguientes tareas que normalmente se llevan a cabo al utilizar un
automóvil.
Comando “A”: Habilita las funciones que se realizarán dentro del vehículo.
Comando “Afuera”: Habilita las funciones que se realizan al exterior del
vehículo.
Comando “Llamada”: Permite contestar una llamada telefónica entrante.
Comando “Usuario”: Enciende el automóvil.
Comando “Cajuela”: Abre la cajuela del auto.
Comando “Luces”: Enciende los faros delanteros del carro.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 33
En la última parte se explican las secciones centrales del programa que son:
caracterizar y reconocer. La primera obtiene los promedios de los LPC de cada
comando y la segunda hace una comparación entre dichos promedios y la señal
producida por el usuario. Estas secciones son la esencia del programa pero no lo
conforman del todo, por ello en el anexo A se ha agregado el programa completo
para un análisis a mayor detalle.
3.1.- Interfaz gráfica de usuario (GUI)
El ambiente de desarrollo de interfaz gráfica de usuario (GUIDE, por sus siglas en
inglés Graphical User Interfase Development Environment) es una serie de
herramientas que se extienden por completo en el software de MATLAB,
diseñadas para crear interfaces graficas de usuario (GUI´s, por sus siglas en inglés
Graphical User Interfaces) de manera fácil, pues no existe la necesidad de que el
programador tenga que agregar código para el desarrollo de la misma, debido a
que MATLAB automáticamente realiza esta acción, y rápida, ya que presta ayuda
en el diseño y presentación de los elementos de la interfaz, reduciendo la labor al
grado de seleccionar, tirar, arrastrar y personalizar propiedades. Los elementos
que se usan son: botones (push buttons), ejes (axes), texto estático (static text), panel
(panel) texto editable (edit text), que serán explicados más adelante.
Una vez que los elementos están en posición se editan las funciones de llamada
“callback” de cada uno de ellos, escribiendo el código de MATLAB que se ejecutará
cuando el elemento sea utilizado. Cabe destacar que el orden del programa con el
que trabaja la GUI, está determinado por el usuario, pues no existe un flujo
establecido como en el caso de un programa común de MATLAB, dándole al
usuario la opción de elegir qué elementos y en qué momento usarlos, sin ser esto
motivo para que la GUI termine su funcionamiento, a menos de que el usuario así
lo desee.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 34
El desarrollo de la GUI se realiza en dos etapas:
Diseño de los componentes (botones, textos, paneles y ejes) que la
formarán.
Programación de cada uno de los componentes ante la interacción del
usuario.
A la herramienta GUIDE se accede de varias maneras, la primera de ellas es
tecleando “guide” en la ventana de comando, como se muestra en la Fig. 3.1.
Fig. 3.1.- Primer modo de acceso a la herramienta GUIDE de MATLAB.
Otra manera de acceder, es a través del menú “File” “New” “GUI”, como se
muestra en la Fig. 3.2.
Fig. 3.2.- Segundo modo de acceso a la herramienta GUIDE de MATLAB.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 35
Una vez que es llamada la función GUIDE, aparecerá la ventana de inicio rápido
de GUIDE (GUIDE Quick start), como se muestra en la Fig. 3.3.
Fig. 3.3.- Ventana de inicio rápido de GUIDE.
Donde se presentan diferentes modalidades para la creación de una GUI. En este
caso se utilizará la opción “Blank GUI (Default)”, la cual creará una interfaz en
blanco predeterminada, en la que se diseñará la interfaz conforme a las
necesidades. Al seleccionar esta opción se generará el siguiente espacio de trabajo
donde se crea esta. Tal y como se muestra en la Fig. 3.4.
Fig. 3.4.- Espacio de trabajo para crear una interfaz.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 36
Los componentes principales de la GUIDE son:
Barra de menús: Aquí se encuentran las funciones elementales de edición de
las GUI.
Paleta de componentes (component palette): Aquí se encuentran los
componentes que formarán parte de la interfaz gráfica (botones, textos
editables, etc.).
La Barra de Herramientas: En ella se encuentran botones que ayudan a la
edición de una GUI. En el desarrollo de esta tesis sólo se utilizaron los
siguientes botones.
o Botón de ejecución (run button): Al presionarse ejecuta el código referido
a la GUI y crea la figura de la interfaz diseñada en el espacio de trabajo
(layout area).
o Alineación de Componentes (alignment tool): Esta opción permite alinear
los componentes que se encuentra en el área de trabajo (layout area) de
manera personalizada.
3.1.1.- Partes de la GUI
Las partes que pueden componer una GUI son las siguientes (Fig. 3.5):
Fig. 3.5.- Desglose de la paleta de componentes.
De esta lista de componentes, los utilizados en esta tesis se explican a continuación.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 37
3.1.1.1.- Texto estático (static text)
Un texto estático puede exhibir símbolos, mensajes o incluso valores numéricos de
una GUI, y colocarse en un lugar deseado. Como su nombre lo indica, estos
elementos no se modificarán durante la ejecución del programa.
Dentro de la interfaz gráfica de esta tesis se utilizaron once textos estáticos para
exponerle al usuario que tipo de información está visualizando como la duración,
frecuencia de muestreo, cuantización y el número de muestras de la grabación o el
segmento graficado, así como para etiquetar los errores de cada comando. Por
último se utilizó uno de estos textos estáticos para colocarle un encabezado al
programa.
Para colocar un texto estático, se selecciona de la paleta de componentes el ícono
de “static text” y se arrastra hacia el espacio de trabajo, como se muestra en la Fig.
3.6.
a)
b)
Fig. 3.6.- Inserción de un texto estático; a) Ícono de texto estático, b) Ejemplo de texto estático en la interfaz
gráfica.
Para editar el texto estático se accede al inspector de propiedades (property
inspector), haciendo doble clic sobre el elemento. Desde esta ventana (Fig. 3.7) se
modifica el texto que se muestra (string) y el nombre de la función (tag), con el que
se identificará dentro del código del programa como se muestra a continuación:
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 38
Fig. 3.7.- Edición del texto estático en el inspector de propiedades.
3.1.1.2.- Botón (push button)
Los botones son elementos que ejecutan una sección del código específica cuando
se hace clic con el puntero del ratón sobre ellos.
Dentro de la interfaz gráfica que se desarrolló se incluyeron diez botones los cuales
al ser presionados realizarán alguna función en específico. Los botones incluidos
fueron “Reproducir”, “Reiniciar”, “Segmentar”, “Normalizar”, “FFT”, “LPC”,
“Reconocer”, “Abrir”, “Guardar” y “Salir”.
Para insertar un botón, se selecciona de la paleta de componentes el ícono de “push
button” y se coloca en el espacio de trabajo, como se muestra en la Fig. 3.8.
a)
b)
Fig. 3.8.- Inserción de un botón; a) Ícono de botón, b) Ejemplo de botones en la interfaz gráfica.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 39
Si se desea editar las características del botón, se recurre al inspector de
propiedades haciendo doble clic sobre él. Al igual que en con el texto estático,
pueden modificarse el texto del botón y el nombre de la función. Este último es de
vital importancia ya que de esta manera se identificará la rutina que se realizará al
ser oprimido.
El código que se genera al colocar un botón en la GUI es el siguiente:
A partir de esta línea de código se escribe la rutina específica para el botón, que en
este caso tiene el tag “pushbutton1”, la cual se ejecutará al momento de ser
oprimido. La rutina debe de terminar con la siguiente instrucción:
3.1.1.3.- Texto editable (edit text)
El elemento texto editable permite al usuario teclear una cadena de entrada o al
software desplegar datos.
En el desarrollo de esta tesis se requirió de agregar diez textos editables para que el
programa desarrollado arrojara información que será útil al usuario. Se leerán los
valores de la cuantización, la frecuencia de muestreo, el número de muestras y la
duración de la señal o segmento mostrado. De igual manera se imprimen en
pantalla los valores de los errores.
Para introducir un texto editable, se selecciona de la paleta de componentes el
ícono de “edit text” y se arrastra hacia el espacio de trabajo, como se ilustra en la
Fig. 3.9.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 40
a)
b)
Fig. 3.9.- Inserción de un texto editable; a) Ícono de texto editable, b) Ejemplos de textos editables en la
interfaz gráfica.
Para modificar el texto editable, se utiliza el inspector de propiedades haciendo
doble clic sobre él, pudiendo modificar el texto del botón y el nombre de la
función. Este último es de vital importancia pues de esta manera se identificará la
caja de texto que podrá ser utilizada para ingresar o mostrar el valor de una
variable.
El código que se genera al colocar un texto editable es el siguiente:
3.1.1.4.- Ejes (axes)
El elemento ejes permite a un GUI desplegar gráficos e imágenes. Como todo
objeto gráfico, este tiene propiedades que pueden controlar muchos aspectos de su
comportamiento y apariencia.
Dentro de esta tesis se utilizaron dos ejes, uno de ellos para mostrar la señal en el
dominio del tiempo y una más para graficar los procesos que se le hayan realizado
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 41
a la señal original como la transformada rápida de Fourier y los coeficientes de
predicción lineal.
Para colocar un eje se selecciona de la paleta de componentes el botón “axes” y se
arrastra al espacio de trabajo, como se muestra en la Fig.3.10.
a)
b)
Fig. 3.10.- Inserción de un eje; a) Ícono de ejes, b) Ejemplo de eje en la interfaz gráfica.
Para modificar el tag de un eje se utiliza el inspector de propiedades haciendo
doble clic sobre él. Es importante conocer el tag para recurrir a él cuando sea
necesario imprimir en pantalla una imagen o grafica sobre este eje.
El código que se genera al colocar un texto editable es el siguiente:
3.1.1.5.- Panel (panel)
El componente panel permite colocar dentro de él, un conjunto de elementos
(textos estáticos, textos editables, botones, etc.) su uso es para dar presentación a la
GUI.
En esta ocasión se utilizaron dos paneles para dividir la interfaz gráfica en dos
secciones, la primera denominada ”Dominio en el Tiempo”, en la que se trabaja
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 42
con la señal en tal dominio, y una segunda sección “Procesamiento de la Señal”, en
la que se aplicaran modelos matemáticos a la señal como la FFT o el cálculo de los
coeficientes de LPC.
Para colocar un panel se selecciona de la tabla de componentes el ícono “panel” y se
arrastra hacia el espacio de trabajo, como se ilustra en la Fig. 3.11.
a)
b)
Fig. 3.11.- Inserción de un panel; a) Ícono del panel, b) Ejemplo de un panel en la interfaz gráfica.
El código que se genera al colocar un texto editable es el siguiente:
3.1.2.- Funcionamiento de una GUI
Una GUI consta de dos archivos, el .m y el .fig. El archivo .m es el que contiene el
código de programación, y el .fig la parte gráfica. Para ejecutar una GUI, si se ha
etiquetado con el nombre uno.fig, simplemente ejecutamos en la ventana de
comandos
3.1.3.- Interfaz del reconocedor de voz
Utilizando todos los elementos descritos anteriormente, se realizo una GUI que
contará con las partes necesarias para el funcionamiento adecuado del proyecto. A
continuación se muestra en la Fig. 3.12., la interfaz a utilizar para el reconocer de
comandos.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 43
Fig. 3.12- Interfaz del reconocedor de comandos.
3.2.- Base de datos
3.2.1.- Grabación
El software de reconocimiento de voz desarrollado en esta tesis, requiere de una base de
datos, debido a que sin la existencia de esta no podría contar con la información necesaria
para realizar las comparaciones pertinentes y tomar una decisión.
Los comandos que van a ser reconocidos son “A”, “Afuera”, “Usuario”, “Llamada”,
“Luces” y “Cajuela”. Cada uno de ellos fue grabado veinte veces, con lo que se obtuvo un
total de ciento veinte archivos. A estas grabaciones se les calculó sus coeficientes de
predicción lineal, para así obtener un promedio de LPC por cada comando.
El procedimiento de grabación fue el siguiente, se seleccionó un aula común como recinto
de grabación. Utilizando la tarjeta de audio de la Laptop Compaq, modelo CQ43-405LA y
el micrófono de esta, se hicieron las ciento veinte grabaciones con una frecuencia de
muestreo de 22050 Hz con lo cual se abarca todo el ancho de banda de la voz humana, una
tasa de cuantización de 16 bits para no tener un error de redondeo significativo, formato
monofónico debido a que no es de interés realizar una vista panorámica de la fuente de
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 44
sonido, y finalmente guardado con el formato de archivo “.wav”, para así, obtener una
mayor cantidad de información de la señal de voz y este no utiliza compresión.
Para realizar el procedimiento de grabación anteriormente mencionado, se desarrolló un
programa auxiliar en MATLAB llamado “grabadora”. En la Fig. 3.13 se aprecia el
algoritmo de este mediante un diagrama de flujo.
Fig. 3.13.- Diagrama de flujo para programa de grabación.
A continuación se muestra el código utilizado, basado en el diagrama de flujo de la Fig.
3.13, para realizar las ciento veinte grabaciones.
En dicho código, se asigna a la variable Fs, el valor de 22050, el cual es la frecuencia de
muestreo a la que se pretende grabar. La variable y recibe las muestras grabadas durante
tres segundos wavrecord(3*Fs,”,”), en formato monofónico wavrecord(“,”,1). Finalmente se
guarda la grabación con la función wavwrite donde se especifica, la variable que contiene
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 45
las muestras a guardar wavwrite(y,”,”,”), la frecuencia de muestreo a la que se grabó
wavwrite(“,Fs,”,”), la tasa de bits a la que se desea guardar wavwrite(“,”,16,”), y el nombre
del archivo wavwrite(“,”,”,’nombre_del_archivo.wav’).
3.2.2.- Normalización
Una vez grabados todos los archivos es necesario normalizarlos, debido a que algunos
tienen amplitudes muy pequeñas con respecto a otros, pues durante la grabación,
variables como la distancia respecto al micrófono y la amplitud de voz no son constantes,
de esta manera se asegura que todas las grabaciones tengan la amplitud máxima igual a 1.
Para llevar a cabo el proceso de normalización se utilizó otro programa auxiliar
igualmente desarrollado en MATLAB llamado “normalizador”. El programa lee los veinte
archivos de cada comando, y encuentra para cada uno de ellos el valor absoluto mayor, el
cual se asigna a la variable d. Las muestras del archivo son divididas entre esta variable
para llevar la amplitud máxima a 1. Esta modificación se guarda en un archivo “.wav” con
el mismo nombre (se sobrescribe). En la Fig. 3.14 se muestra el algoritmo de dicho proceso
mediante un diagrama de flujo.
Fig. 3.14.- Diagrama de flujo para programa de normalización.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 46
El código implementado para lograr normalizar los archivos es el siguiente.
Si bien, los programas “grabadora” y normalizador”, no son parte del reconocedor de
comandos como tal, sirven para desarrollar con mayor facilidad la base de datos.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 47
3.2.3.- Segmentación
Debido a que el archivo que se guarda no utiliza en su totalidad los tres segundos de
grabación, se decidió segmentarlos. Para eliminar estos espacios de silencio y el poco
ruido que pueda existir en ellos, se utilizó un software especializado en la edición de audio
digital llamado Audacity.
Para segmentar los archivos es necesario abrirlos dentro del programa, para esto se accede
al menú “Archivo” “Abrir…”, tal cual como se puede observar en la Fig. 3.15.
Fig. 3.15.- Modo de abrir un archivo en Audacity.
Una vez abierto el archivo, aparece la forma de onda dentro de la interfaz de trabajo de
Audacity, como se muestra en la Fig. 3.16.
Fig. 3.16.- Forma de onda dentro de la interfaz de Audacity.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 48
Para segmentar se selecciona con el mouse la parte de la señal que se desea eliminar y se
presiona la tecla supr o delete (ver Fig. 3.17).
Fig. 3.17.- Selección de una parte de la señal de onda.
Después de este proceso se obtiene una señal como la mostrada a continuación en la Fig.
3.18.
Fig. 3.18.- Forma de onda después de ser segmentada.
Al final se guarda el archivo con las características de formato anteriormente expuestas.
Para realizar esto se accede al menú “Archivo” “Exportar…”.
Este proceso se realiza en las ciento veinte grabaciones, para tener en la base de datos las
señales de la manera más limpia y representativa posible. Con este paso, se comprendería
en su totalidad el proceso de grabación y edición de la base de datos.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 49
3.3.- Programación del reconocedor de comandos
En esta sección del desarrollo se explican a detalle las dos secciones del programa
que son medulares para el funcionamiento de este: caracterizar y reconocer.
Caracterizar se dedica a obtener los promedios de los LPC de cada comando de la
base de datos, mientras que reconocer realiza la comparación de estos promedios
con la señal de entrada producida por el usuario. A pesar de que el programa
contiene otras funciones secundarias, estas no serán explicadas en esta sección, sin
embargo pueden encontrarse en el anexo A de esta tesis en el que se presenta el
programa completo.
3.3.1.- Caracterizar
La sección caracterizar comienza inicializando dos variables, una que contiene la
extensión de los archivos (.wav) y una segunda que corresponderá a la matriz que
contenga los promedios de los LPC de la base de datos. Después entra en un ciclo
para elegir uno de los seis comandos grabados, en el que por cada ronda que se
realice cambiará el comando del que se obtendrá el promedio. Cada ronda el
programa preguntará si ya se han obtenido los coeficientes de cada comando. Por
ejemplo, suponiendo que fuese la segunda ronda, el programa preguntará si el
primer comando obtuvo el promedio de sus LPC, como se han obtenido lo saltará
y preguntará lo mismo para el segundo comando, como este no ha pasado por
dicho proceso, el programa entrará en una nueva etapa, en la que a la variable
“nom” se le asignará la cadena correspondiente al nombre con el que se guardaron
los archivos de audio para dicho comando. Después ingresará en un nuevo bucle
del que no saldrá hasta que no se hayan leído los veinte audios de dicho comando.
Para que esto suceda el programa debe de convertir el número de la grabación en
una cadena de caracteres para posteriormente concatenarla con las cadenas que
contienen la extensión y el nombre del comando. Por dar un ejemplo, en la primera
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 50
ronda del primer comando, el número de la grabación es “1”, este se convierte en
cadena y se concatena con las de “ha” y “.wav”, dando como resultado la cadena
“ha1.wav”. Una vez realizada esta concatenación se lee el archivo con dicho
nombre e inmediatamente se obtienen los LPC de dicha señal. Una vez que se han
terminado de obtener los LPC de los veinte archivos y se han sumado estos valores
en un vector, se le divide a este entre veinte para así obtener el promedio de los
LPC del comando. Todo este proceso puede visualizarse en el diagrama de flujo de
la Fig. 3.19 a y 3.20 b.
La programación de la función caracterizar está dividida en dos diferentes
apartados, cada uno enfocado en una función específica. El primer apartado está
dedicado a la inicialización de variables.
La primera línea de este apartado es una asignación directa a una variable,
ex=’.wav’, con la que se trabajará después para acceder a todos los archivos de la
base de datos mediante un for que será explicado posteriormente.
Las siguientes cuatro líneas corresponden a la inicialización de la matriz que será
utilizada durante la obtención de los promedios de LPC de la base de datos. Dicha
matriz es handles.prom, con un tamaño de 6 líneas por 19 columnas, que
corresponden a los seis comandos y a los diecinueve LPC que se obtendrán de
cada archivo. Cabe destacar que se toma la decisión de obtener sólo diecinueve
LPC (se pueden obtener tantos como las muestras que se tengan en caso de no ser
especificado en el programa), debido a que son estos los de mayor relevancia y los
que muestran una mayor cantidad de información, con esto es posible visualizar
una mayor diferencia entre los LPC de cada comando lo que hace más sencilla la
comparación entre estos. De igual manera es importante agregar que las variables
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 51
(en este caso matrices) del tipo handles pueden utilizarse en todas las secciones del
programa y no sólo en la que se está declarando, en este caso se decide esto debido
a que la sección reconocer necesita de los datos que se produzcan en caracterizar
para realizar las comparaciones pertinentes.
El segundo apartado de caracterizar corresponde a la obtención del promedio de
los LPC por comando. Para realizar esto se construyó un for que comprendiera los
seis comandos existentes dentro de la base de datos. Donde la variable i
representará cada uno de los comandos.
Y una serie de if’s que seleccionan la parte de la base de datos correspondiente a un
comando en especifico. Con estos if’s por cada ciclo que se cumpla en el for la
cadena de caracteres asignada a la variable nom cambiará y así se asegurará que
sólo se le de lectura a los archivos correspondientes a dicho comando.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 52
Para obtener los LPC de los veinte archivos de cada comando, se creó un for
anidado.
Las primeras líneas dentro de este, dan lectura del archivo correspondiente al ciclo.
La línea un=num2str (x) convierte a la variable x (que corresponde al número de
ciclo), en una cadena de caracteres, para después concatenarla con las variables
nom y ex y así poder leer el archivo correspondiente y asignarlo a la variable ar.
Inmediatamente después de darle lectura al archivo, se obtienen sus LPC con la
función lpc (ar,18), en donde se especifica que se calcularán sólo dieciocho
coeficientes después del primero, que corresponde a la energía (y su valor siempre
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 53
es uno), con lo que se obtienen los diecinueve propuestos desde un principio. Al
mismo tiempo estos coeficientes son asignados a la variable coef, como se expresa
en la siguiente línea.
La función lpc() trabaja con el método de autocorrelación para obtener la matriz de
los coeficientes de un filtro lineal de orden p y esta se resuelve con la recursión de
Levinson-Durbin. En la sintaxis, el primer argumento especifica la variable (que
contiene las muestras de la señal) a la que se le calculará los LPC, y el segundo
especifica el orden del filtro p.
Por último, los LPC del archivo son sumados a la matriz handles.prom (en el vector
correspondiente a su comando i).
Una vez que se han sumado los veinte archivos que corresponden al comando en
turno, se divide entre veinte el vector correspondiente de la matriz handles.prom,
para así, obtener los valores promedio de los LPC de dicho comando.
Con este proceso se obtienen los valores necesarios para poder realizar la
comparación entre los LPC de la base de datos, con los de la señal de entrada. Esto
se explicará a en la siguiente sección, que corresponde a la función reconocer, en la
que se realiza la obtención de los LPC de entrada y la comparación de estos.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 54
Fig. 3.19.- a) Diagrama de flujo sección caracterizar.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 55
Fig. 3.19.- b) Complemento del diagrama de flujo sección caracterizar.
3.3.2.- Reconocer
Esta sección del programa es la encargada de realizar el procedimiento de
reconocimiento de voz, este se estructura de la siguiente manera. Primero se hace
la petición al usuario de que diga el comando que desee activar, posteriormente
verifica si la grabación es un silencio o contiene información de voz. Si es el primer
caso el programa termina la función, sino se calculan los LPC de la grabación e
inmediatamente se hace una comparación de dichos coeficientes con los de la base
de datos aplicando el error cuadrático medio. Finalmente, el programa da como
resultado el reconocimiento del comando que presenta un menor error. Toda esta
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 56
estructura trabaja a la par con un menú de opciones en forma de árbol que son
habilitadas por cada comando. Este menú puede observarse en la Fig. 3.20.
Fig. 3.20.- Menú de opciones en forma de árbol.
Como puede apreciarse, se espera que el código de programación resultará muy
extenso. Por otro lado, esta sección es uno de los pilares del programa, así que la
explicación de su funcionamiento se realizará a partir de la estructura general (ver
Fig. 3.21) en cinco partes: petición y grabación del comando, cálculo de la energía,
normalización y cálculo de los LPC, cálculo del error cuadrático medio y la
determinación del comando, en donde esta última se incluye la explicación del
menú de opciones en forma de árbol.
Fig. 3.21.- Estructura general del proceso de reconocimiento.
3.3.2.1.- Petición y grabación del comando
En esta parte de la sección reconocer, al ser presionado el botón “Reconocer”, el
programa reproducirá un mensaje previamente grabado que dice “ingrese
comando después del tono”, siendo la petición del programa al usuario para que
este diga el comando deseado. Durante este proceso, el software graba durante
cinco segundos en formato .wav monofónico, con una frecuencia de muestreo de
22050 Hz y una tasa de 16 bits la voz del usuario. La razón por la que se graban
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 57
cinco segundos es porque cuando se ejecuta la instrucción sound(), MATLAB
continúa con las instrucciones que le siguen, sin esperar a que termine la
reproducción, por lo que hay que compensar la duración del mensaje con lo que se
desee grabar. En consecuencia, es necesario eliminar las muestras de la grabación
que comprenden las muestras del mensaje previamente grabado, para así obtener
solamente las muestras de la voz del usuario. Utilizando la función length() es
posible determinar el número de muestras del mensaje. Lo descrito anteriormente
se aprecia el diagrama de flujo de la Fig. 3.22.
Fig. 3.22.- Diagrama de flujo para la sección de petición y grabación del comando.
El código funciona de la siguiente manera. La primera línea utiliza la función
wavread() con el objetivo de asignar las muestras y la frecuencia de muestreo del
mensaje previamente grabado (con el nombre “ingrese.wav”) a las variables
mensaje y fmen respectivamente. Utilizando estas últimas, con la instrucción sound()
el mensaje es reproducido. Inmediatamente la función wavrecord() entra en acción
con lo que inicia la grabación del comando durante cinco segundos, a una
frecuencia de muestreo de 22050 Hz en formato monofónico (5*fmen, fmen,1) y las
muestras resultantes son asignadas a la variable mgra. Finalmente mgra es
segmentada desde la última muestra del mensaje previamente grabado hasta la
última muestra del comando mgra(length(mensaje):5*fmen), posteriormente esta
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 58
modificación es reasignada a mgra. El código que realiza lo anteriormente
mencionado es el que sigue:
3.3.2.2.- Cálculo de la energía
Para averiguar si el usuario no ha dicho algún comando y ha guardado silencio, se
hará uso de la teoría explicada en la sección 2.4.2.1, en las que se menciona el uso
de ventanas para calcular la energía de una señal de voz.
Para esta función, el programa realiza el siguiente proceso. Como en otras
secciones del programa, el primer paso es inicializar un grupo de variables para
realizar los cálculos pertinentes. En esta ocasión se utilizarán cinco variables:
inc.- Es el punto desde donde inicia la ventana.
delta.- Representa la distancia de traslapamiento que habrá entre cada
ventana.
nvent.- Muestra el número de la ventana en la que se está trabajando.
tvent.- Designa el tamaño de la ventana que se utilizará.
E.- Asignada como el vector que guardará los valores de energía de cada
una de las ventanas.
sum.- Variable a la que se le asignará la suma de los valores de cada
muestra.
Una vez inicializadas estas variables comienza el proceso de ventaneo y cálculo de
la energía. Durante este, el programa analiza doscientas cincuenta y seis muestras
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 59
de la grabación (ventaneo) y por medio de la Ec. 2.12 calcula la energía en dicha
ventana, la cual es de tipo rectangular. Este resultado se asigna al vector E que
contendrá los valores de energía de cada ventana. Una vez que se hayan analizado
todas las muestras de la señal por este método, el programa comparará el resultado
con un umbral de energía con valor de 0.01, que produce una señal de silencio o de
ruido bajo y basado en esta comparación se determinará si se ha dicho algo o se ha
guardado silencio durante el periodo de reconocimiento de comandos. El proceso
anterior se explica por medio del diagrama de flujo que se muestra en la Fig. 3.23.
La programación de esta sección se explica a detalle a continuación.
La inicialización de variables corresponde a las primeras cinco líneas del código
correspondiente al cálculo de la energía.
La variable inc se inicializa en cero para analizar la señal desde la primera muestra,
delta toma el valor de 150, que será la distancia de traslapamiento que existirá entre
cada ventana, a nvent se le asigna el valor de 185 pues sólo es necesaria esta
cantidad de ventanas para cubrir toda la señal a analizar. Para calcular este valor se
realizó la siguiente operación:
Donde:
El valor 27965 corresponde al total de muestras que comprenden la señal de entrada.
256, es el tamaño de la ventana a analizar.
150 es la distancia de traslpamiento entre dichas ventanas.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 60
Fig. 3.23.- Diagrama de flujo para el cálculo de la energía.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 61
La variable tvent vale 256, debido a que con este tamaño de ventana se puede
considerar a la señal “estacionaria”. Y por último se inicializa el vector E
asignándole ceros.
Para el ventaneo y el cálculo de la energía se inicia un for en el que se analizarán las
185 ventanas que cubrirán las 27965 muestras de la señal de entrada. Dentro de
este for se inicializa la variable sum asignándole un cero.
Después se inicia un for anidado en el que se realiza el cálculo de la energía de las
256 muestras que corresponden al tamaño de la ventana. Antes de realizar la
operación para calcular esto, se aplica un condicional if para finalizar el for
principal en caso de que la muestra a analizar salga del intervalo de las 27965
muestras que comprenden la señal.
Una vez establecida esta condición puede realizarse la operación correspondiente a
la Ec. 2.12. El resultado se asigna a uno de los 185 valores del vector E.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 62
Para finalizar el for principal se incrementa la variable inc sumándole delta con lo
que se asegura que se analizan otras 256 muestras a partir de dicho
desplazamiento.
Una vez que se ha realizado el análisis de toda la señal se comparan las
componentes del vector E y el valor de 0.01 (que se asignó como representativo de
una señal de silencio o de bajo ruido). En el caso de que E sea menor a este valor, se
abrirá un ventana con el mensaje “No se ha dicho ningún comando” (ver Fig 3.24),
y el programa se mantendrá inactivo hasta que se presione de nuevo el botón
“Reconocer” u otro botón. En caso contrario el programa continuará con las
funciones que le siguen.
Fig. 3.24.- Ventana con el mensaje “No se ha dicho ningún comando”.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 63
3.3.2.3.- Normalización y cálculo de los LPC
La normalización consiste en llevar la amplitud máxima de una señal de audio al
valor de 1. Una vez que se introduce la señal del habla, el programa analizará todo
el archivo hasta encontrar el nivel más alto, para establecerlo como referencia y
dividir toda la señal con este valor. La finalidad es que se maneje la misma relación
de amplitudes entre la base de datos y el comando grabado. Posteriormente se
hace un respaldo del comando y se adquieren las características de este, como la
tasa de bits, frecuencia de muestreo, longitud del comando y su duración, para ser
desplegadas en la interfaz gráfica en la sección llamada “Dominio en el Tiempo”
(ver Fig. 3.25).
Fig. 3.25.- Despliegue de información y señal en la sección de GUI denominada “Dominio en el Tiempo”.
Después de haber realizado lo anterior se calculan los coeficientes de predicción
lineal (LPC) y se grafican en la interfaz gráfica llamada “Procesamiento de la
Señal” (ver Fig. 3.26).
Fig. 3.26.- Gráfica de los LPC de la señal y despliegue de los valores de error en la sección de la GUI
denominada “Procesamiento de la Señal”.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 64
Lo anterior se ve desarrollado en el diagrama de flujo de la Fig. 3.27.
La programación desarrollada para esta sección es la siguiente. Una vez que se
introduce el mensaje , el programa recorre la longitud de las muestras del
archivo con y busca a través de un la amplitud más
grande del absoluto de dichas muestras, guardándola en la variable previamente
inicializada con 0. Posteriormente mgra será divida entre el valor de d,
, estableciendo una amplitud máxima de 1. Hasta este punto queda
concluida la normalización. La estructura del código del procedimiento anterior se
muestra a continuación.
Ya normalizado el mensaje, se crea un archivo .wav de respaldo utilizando la
función con la cual se guardan las muestras mgra del comando a la
frecuencia de muestreo fmen.
A continuación, se leen las propiedades (muestras, frecuencia de muestreo y tasa
de bits) del archivo de respaldo (“graba.wav”). A la variable handles.mr se le
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 65
asignan las muestras por si la señal es modificada por el botón “Segmentar”. Esta
variable es utilizada por el botón “Reiniciar” para regresar a la forma original de la
señal.
Una vez adquiridos estos datos, se obtiene la longitud del mensaje y con esto se
calcula su duración. De igual manera se grafica la forma de onda del comando
Toda esta información es desplegada en la interfaz gráfica en la sección “Dominio
en el Tiempo” por medio de las siguientes líneas.
Después, la función lpc(handles.m,18) retorna 19 coeficientes LPC de las muestras
de la señal handles.m, y se asignan a la variable coef. Una vez que se obtienen estos
se despliegan gráficamente en el axes2 que corresponde a la sección de la interfaz
gráfica “Procesamiento de la Señal”.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 66
Fig. 3.27.- Diagrama de flujo para la normalización y cálculo de los LPC.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 67
3.3.2.4.- Cálculo del error cuadrático medio
La cuarta sección del programa sólo se enfoca en una actividad, que es la obtención
del error cuadrático medio. Con este dato se tiene una referencia respecto a qué tan
parecidos o no son los coeficientes LPC de la señal de entrada a uno de los seis
comandos de la base de datos.
El procedimiento para realizar este cálculo es el siguiente. Se genera un vector para
que contenga los valores de error de los seis comandos. Una vez inicializado este
vector se calcula el error que existe entre los coeficientes LPC de la señal de entrada
y el promedio de los coeficientes de la base de datos. Lo anterior se plasma en el
diagrama de flujo Fig. 3.28.
Fig. 3.28.- Diagrama de flujo para el cálculo del error cuadrático medio.
El código correspondiente a esta función comprende las siguientes líneas de
comandos. La primera es la creación del vector error, en el que se contendrán los
resultados de la operación del error cuadrático medio.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 68
Después se inicia un for, asignado para realizar el cálculo del error para los seis
comandos. Dentro de este se abre un nuevo for en el que se realiza la operación
correspondiente al error cuadrático medio (Ec. 2.16).
Donde es el coeficiente de la señal de entrada, es el coeficiente del
comando de la base de datos y es el total de coeficientes de la señal (en este caso
19).
3.3.2.4.- Determinación del comando
Una vez que el reconocedor de comandos tiene la capacidad de calcular la
aproximación (error cuadrático medio) que existe entre la señal de entrada y la
base de datos, es capaz de determinar qué comando se ha dicho. Para realizar esto,
el programa hace una serie de condicionales, en los que la elección del comando
depende de cuál tenga el menor error con respecto a la señal de entrada.
El reconocedor tiene una estructura en forma de árbol (Fig. 3.20), por lo que es
necesario ayudarse de algunas variables que sirvan de indicadores para que el
reconocedor identifique en que sección del árbol se encuentra. Para esto al inicio
del programa se declaran tres variables tipo handles: narbol, sel1 y sel2. La primera
variable dice en qué nivel del árbol se encuentra el usuario. Si handles.narbol es
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 69
igual a 0, se está comparando los comandos “A” y “Afuera”, cuando es igual a 1 el
programa compara a los comandos “Usuario” y “Llamada”, en caso de que sea 2 se
realiza la comparación entre “Luces” y “Cajuela”, y por último, para hanldes.narbol
igual con 3 se han recorrido lo dos niveles del árbol por lo que el programa ofrece
la opción de reiniciar y regresar al primer nivel de comparación, o de mantenerse
en el nivel en el que se encuentre.
Las otras dos variables (handles.sel1 y hanldes.sel2), le indican al programa que
comparaciones ya se han realizado. La primera es específica del primer nivel e
indica qué comando de entre “A” y “Afuera” obtuvo el menor error al momento
de compararse con la base de datos, sí fuese “A”, la variable sel1 tomaría el valor
de 1, en caso contrario, tomaría el valor 2 y así el programa identificaría qué
comparación sería la siguiente. La segunda variable ayuda a especificar en cuál de
los dos secciones del segundo nivel se encuentra el usuario. Para la sección
comprendida por los comandos “Llamada” y “Usuario”, la variable sel2 toma el
valor 1, mientras que para “Luces” y “Cajuela” esta vale 2. Con esto no sólo se le
indica al reconocedor que ha recorrido los dos niveles de comparación del
programa, sino que de igual manera ayuda al momento de preguntar si se desea
reiniciar, pues con estos valores se indica cuál de las dos secciones se volverá a
comparar (ya sea “Llamada” y “Usuario”, o “Luces” y “Cajuela”), sin la necesidad
de tener que ir al nivel superior para volver a seleccionar el comando
correspondiente (“A” y “Afuera”).
Para ejemplificar estos procesos de comparación, se utilizará un diagrama de flujo
(Fig. 3.29), en el que quedan especificados los pasos que realiza el programa.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 70
a)
Fig. 3.29.- a) Diagrama general de la sección determinación de comando.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 71
b)
c)
Fig. 3.29.- b) Parte 1 del diagrama general de la sección determinación de comando; c) Parte 2 del diagrama
general de la sección determinación de comando.
d)
Fig. 3.29.- d) Parte 3 del diagrama general de la sección determinación de comando.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 72
La programación de esta sección está estructurada de la siguiente manera:
La primera parte corresponde a la declaración de las variables handles.narbol,
handles.sel1 y handles.sel2, que como se comentó al inicio de este subcapítulo, se
declaran al principio de todo el programa y no en la sección correspondiente al
botón “Reconocer”, pues si se hiciera dentro de esta, cada vez que se presionara el
botón, se inicializarían las variables, haciendo imposible la identificación del nivel
de reconocimiento en el que se esté trabajando en ese momento. Lo anterior se
expresa en las siguientes líneas de código.
Una vez inicializadas estas variables, comienza formalmente lo que se realiza
dentro de la sección reconocer al presionar el botón correspondiente. El primer
proceso que se hace es un condicional if en el que se pregunta si la variable
hanldes.narbol corresponde al valor 3. Si es así, significa que se ha terminado el
proceso de comparación y se abre una ventana en la que el programa pregunta si
se desea reiniciar o no, si el usuario decide reiniciar, se inicializarán de nuevo todas
las variables de identificación de nivel (narbol, sel1 y sel2), en caso contrario
preguntará si la variable sel2 es igual a 1 ó 2, el primer caso indicaría que se está en
la sección de los comandos “Usuario” y “Llamada”, por lo que handles.narbol debe
tomar de nuevo el valor de 1, para volver a realizar esta comparación, el segundo
caso indicaría que se está en la sección de los comandos “Luces” y “Cajuela” donde
handles.narbol toma el valor de 2. Para el caso de que handles.narbol tenga el valor
diferente a 3, el programa ejecuta las secciones de petición y grabación de
comando, normalización y cálculo de los LPC, cálculo de la energía y cálculo del
error cuadrático medio consecutivamente. Hay que recordar que en la sección del
cálculo de la energía, si se determinaba que no se había dicho algún comando, el
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 73
programa no seguiría con las demás funciones. Lo anterior se traduce en las
siguientes líneas de código.
El segundo proceso consiste en preguntar en qué nivel del árbol se encuentra el
reconocedor. Primero se pregunta si handles.narbol es igual con cero, si es así el
programa compara los comandos “A” y “Afuera”, esto lo realiza con un if que
determina cuál de los valores 1 y 2 de la matriz error (los cuales fueron calculados
como se vio en la sección 3.3.2.3) es el menor, si error(1) es menor a error(2) significa
que se ha dicho “A” y aparece un mensaje como se aprecia en la Fig. 3.30 y al
mismo tiempo la variable handles.sel1 se le asigna el valor 1, en caso contrario
Fig. 3.30.- Mensaje de reconocimiento del comando “A”.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 74
aparecerá un mensaje (Fig. 3.31) que indica que se reconoció el comando “Afuera”
y la variable handles.sel1 toma el valor de 2. Después de determinar qué comando
se ha dicho, el programa despliega en los textos editables los valores de error(1) y
error(2). Las siguientes líneas de código realizan estas acciones.
Fig. 3.31.- Mensaje de reconocimiento del comando “Afuera”.
Posteriormente el programa pregunta si la variable handles.narbol tiene el valor de
1. Si es así, los comandos que se compararán son “Usuario” y “Llamada”. Si
error(3) es menor a error(4) se determina que el comando dicho fue “Usuario”,
mientras que en el caso contrario el comando reconocido es “Llamada” y en ambos
casos la variable handles.sel2 se le asigna el valor 1 (para posteriormente indicar que
se ha llegado al último nivel del árbol). Al igual que en el proceso anterior se
Fig. 3.32.- Mensaje de reconocimiento del comando “Usuario”.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 75
despliegan los mensajes de reconocimiento para cada comando (Figs. 3.32 y 3.33) y
los errores correspondientes en los textos editables. Lo anterior se traduce en las
siguientes líneas de código.
Fig. 3.33.- Mensaje de reconocimiento del comando “Llamada”.
Ahora el programa pregunta si handles.narbol tiene el valor de 2, si se cumple esto
comparará los comandos “Luces” y “Cajuela”. Si error(5) es menor a error(6), el
comando reconocido será “Luces”, sino será “Cajuela”. En ambos casos la variable
handles.sel2 se le asigna el valor de 2 (para posteriormente indicar que se ha llegado
al último nivel del árbol). En seguida se muestra el mensaje de reconocimiento del
Fig. 3.34.- Mensaje de reconocimiento del comando “Luces”.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 76
comando (Figs. 3.34 y 3.35), así como los errores de cada uno en los textos
editables. Lo anterior se transcribe en las siguientes líneas de código.
Fig. 3.35.- Mensaje de reconocimiento del comando “Cajuela”.
l tercer proceso consiste en un conjunto de condicionales que permitirán asignar el
nivel al que se accesará la siguiente vez que se oprima el botón “Reconocer”. Si
handles.sel1 es igual a 1, el programa permitirá comparar los comandos que se
encuentren en la primera sección del segundo nivel del árbol (comandos “Usuario”
y “Llamada”), si no es el caso, pregunta si handles.sel1 tiene el valor de 2, por lo que
se podrá acceder a la segunda sección del segundo nivel del árbol (comandos
Fig. 3.36.- Ventana para la opción de reinicio.
Capítulo 3: Desarrollo del proyecto
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 77
“Luces” y “Cajuela”), si no se cumpliera lo anterior, se pregunta si la variable
handles.sel2 tiene asignados los valores 1 ó 2, en cualquiera de estos se asignará a la
variable handles.narbol el valor de 3, lo que le indicará al programa que la siguiente
ocasión que se presione el botón “Reconocer” deberá desplegar una ventana en la
que se dé la opción de reiniciar o no tal como se muestra en la Fig. 3.36. Lo
anteriormente descrito se desarrolla en las siguientes líneas de código.
Con esto se concluye la parte medular del programa, como se mencionó al
principio de este capítulo las demás secciones están expuestas en el anexo A de
esta tesis.
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 78
Capítulo 4: Pruebas y resultados
En el presente capítulo se desarrollarán las tres pruebas a las que se sometió el
programa de reconocimiento de comandos, así como los resultados que se
obtuvieron de cada una de ellas. Es importante realizar dichas pruebas debido a
que permitirá conocer la eficiencia del programa.
La evaluación del software se basó tomando en cuenta diferentes factores a los que
estaría expuesto el reconocedor dentro de un automóvil en caso de que este fuese
implementado, en las cuales se consideraron como importantes, las pruebas en
silencio o ruido bajo, con el motor encendido y en condiciones de tránsito. Estas
fueron realizadas con la persona que grabó la base de datos. Para tener un punto
de comparación en la eficiencia del reconocedor se realizó la prueba en silencio con
dos individuos ajenos a esta.
Las pruebas se realizaron con la computadora con la que se grabó la base de datos
y en la que se desarrolló el software, la cual se encontraba posicionada en la zona
del conductor como se muestra en la Fig. 4.1. Cabe destacar que estas pruebas
fueron sólo del software, por lo que no hubo interacción con el automóvil.
Fig. 4.1.- Posicionamiento del individuo y la computadora para pruebas dentro del automóvil.
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 79
4.1.- Prueba con automóvil apagado en un ambiente silencioso
Esta es la primera prueba que se realizó para evaluar el reconocedor de comandos
y se describe a continuación. Dicha prueba, se llevó a cabo dentro del vehículo 1, el
cual se encontraba apagado, totalmente cerrado y en una zona silenciosa, el
individuo que ingresaría los comandos estaba posicionado según la Fig. 4.1. Para
este procedimiento, se requirió la participación de tres sujetos, de los cuales uno de
ellos grabó la base de datos que utiliza el programa.
Antes de realizar la evaluación, se midió el nivel de ruido que ingresaba al
automóvil con un sonómetro de la marca Extech Instruments modelo 407768 (ver
anexo B), utilizando la curva de ponderación A y una respuesta rápida. Se tomaron
diez lecturas cada cinco segundos. Los resultados de la medición se muestran en la
Tabla 4.1.
Tabla 4.1.- Mediciones del nivel de ruido en la prueba 1.
Medición Nivel de ruido [dbA]
1 39.3
2 34.6
3 34.8
4 34.7
5 34.5
6 34.7
7 35.1
8 35.5
9 34.6
10 35.6
(4.1)
Para obtener el nivel de ruido promedio que ingresaba al vehículo se utilizó la
ecuación 4.1. Donde Rj es el nivel de ruido de la medición j, y NR es el promedio
del ruido.
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 80
Sustituyendo las mediciones de la Tabla 4.1 en la ecuación 4.1 se obtiene que el
nivel de ruido promedio es de 35.6 dBA.
Después de que se midiera el ruido, empezó la evaluación del reconocedor de
comandos. Para los tres casos, el sujeto de prueba dijo veinte veces cado uno de los
comandos, y los resultados se registraron tal y como se muestran en las Tablas 4.2,
4.3 y 4.4. Hay que señalar que el sujeto 1 se identificará como el que grabó la base
de datos. Las cruces (X) en las tablas indican que el reconocedor de voz falló en el
reconocimiento de dicho comando, mientras que una paloma () indica lo
contrario. Las gráficas de las Figs. 4.2, 4.3 y 4.4 corresponden a las Tablas 4.2, 4.3 y
4.4 respectivamente y muestran el porcentaje de identificación de cada uno de los
comandos.
Tabla 4.2.- Resultados del sujeto 1 en la prueba 1.
Número de repetición
“A” “Afuera” “Usuario” “Llamada” “Luces” “Cajuela”
1 X X X
2 X X
3 X X X X
4 X X X X
5 X X X
6
7 X X
8 X X
9 X X
10 X X X X
11 X X
12 X X
13 X
14 X X
15 X X
16 X X X X
17 X
18 X X X
19 X X
20 X % Correcto 55 55 50 65 50 95
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 81
Fig. 4.2.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto
1 en la prueba 1.
Tabla 4.3.- Resultados del sujeto 2 en la prueba 1.
Número de repetición
“A” “Afuera” “Usuario” “Llamada” “Luces” “Cajuela”
1 X X X 2 X X X 3 X X X 4 X X X 5 X X X
6 X X X
7 X X 8 X X X X
9 X X 10 X X X 11 X X X
12 X X X X
13 X X X
14 X X X
15 X X
16 X X 17 X X X 18 X X X
19 X X X
20 X X % Correcto 80 25 20 90 50 50
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 82
Fig. 4.3.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 2 en la prueba 1.
Tabla 4.4.- Resultados del sujeto 3 en la prueba 1.
Número de repetición
“A” “Afuera” “Usuario” “Llamada” “Luces” “Cajuela”
1 X X X X
2 X X X 3 X X X 4 X X X 5 X X 6 X X X 7 X X X 8 X X X 9 X X X
10 X X 11 X X X 12 X X 13 X X 14 X X X 15 X X 16 X X X 17 X X X X 18 X X X 19 X X X 20 X X X X
% Correcto 95 15 5 95 5 95
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 83
Fig. 4.4.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 3 en la prueba 1.
En la Fig. 4.5 se compara el porcentaje de identificación por cada individuo de
prueba para todos los comandos. Se aprecia que en los sujetos 2 y 3 la respuesta del
reconocedor tiende a tener picos de identificación en alguno de los dos comandos
de cada nivel del árbol, con lo que se dice que el programa en sí no está haciendo
labor de reconocimiento para estos individuos, pues diga lo que se diga casi
siempre caerá uno de los casos del par. Por ejemplo, para el sujeto 2, existe un 20%
de que se identifique el comando “Usuario” al decirlo y un 90% el de “Llamada” al
decirlo, es decir, tenderá a identificar casi siempre este último por defecto sin
importar lo que se diga, lo mismo para el sujeto 3 en el comando “Cajuela” para el
que existe un 95% de probabilidad de que se identifique al decirlo mientras que
“Luces” un 5% al decirlo, por defecto casi siempre se identificará “Cajuela” sin
importar qué palabra se pronuncie. Para el caso del sujeto 1, quien es el que grabó
la base de datos, se observa que no existe el caso de que un comando se identifique
por defecto, pues las probabilidades de que se identifique un comando al decirlo
son muy cercanas, tal y como se puede apreciar en la Tabla 4.2.
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 84
Fig. 4.5.- Comparación de la respuesta del programa de reconocimiento de voz en porcentaje de cada uno de los sujetos.
4.2.- Prueba con el motor encendido en diferentes vehículos
La segunda prueba se llevó a cabo con el sujeto 1, el cual grabó la base de datos.
Esta prueba constó en evaluar al reconocedor de comandos en dos autos con la
condición de que estos estuvieran con el motor encendido.
A continuación se presentan las mediciones que se obtuvieron en el vehículo 2 con
las ventanas abiertas. Antes de realizar las evaluaciones del programa, se midió el
nivel de ruido que ingresaba al automóvil, con el sonómetro Phonic PAA3 (ver
anexo C), utilizando la curva de ponderación A y con una respuesta rápida. Se
tomaron diez lecturas en periodos de cinco segundos. Los resultados de la
medición se muestran en la Tabla 4.5.
Tabla 4.5.- Mediciones del nivel de ruido en el vehículo 2 de la prueba 2.
Medición Nivel de ruido [dbA]
1 39.9
2 39.7
3 39.9
4 39.5
5 40.1
Medición Nivel de ruido [dbA]
6 40.2
7 40.1
8 40.2
9 39.8
10 39.7
0%
20%
40%
60%
80%
100%
Suj 1 Suj 2 Suj 3
A
Afuera
Usuario
Llamada
Luces
Cajuela
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 85
Para obtener el nivel de ruido promedio, se utilizó la ecuación 4.1 y sustituyendo
los valores de la Tabla 4.5 en dicha ecuación se obtiene un nivel de 39.9 dBA.
El sujeto 1 dijo veinte veces cada uno de los comandos, el resultado de esta
evaluación se muestra en la Tabla 4.6 así como su respectiva gráfica (Fig. 4.6),
donde se muestra el porcentaje que se reconoció de cada comando.
Tabla 4.6.- Resultados del sujeto 1 en el vehículo 2 en la prueba 2.
Número de repetición
"A" "Afuera" "Usuario" "Llamada" "Luces" "Cajuela"
1 X X X
2 X X X
3 X X X
4 X X X
5 X X X
6 X X X
7 X X X
8 X X X
9 X X X
10 X X X
11 X X X
12 X X X
13 X X X
14 X X X
15 X X X
16 X X X
17 X X X
18 X X X
19 X X X
20 X X X
% Correcto 0 100 100 0 100 0
La segunda prueba se realizó en el vehículo 1 con las ventanas cerradas. Las
mediciones de ruido se muestran en la Tabla 4.7 las cuales se realizaron con el
sonómetro de la marca Extech Instruments modelo 407768, utilizando la curva de
ponderación A y una respuesta rápida. De igual manera que en las pruebas
anteriores se tomaron diez mediciones cada cinco segundos.
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 86
Fig. 4.6.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 1 en vehículo 2 de la prueba 2.
Tabla 4.7.- Mediciones del nivel de ruido en el vehículo 1 de la prueba 2.
Medición Nivel de ruido [dbA]
1 45.8
2 45.8
3 45.7
4 45.9
5 46.3 6 45.7
7 45.3
8 45.3
9 46.2
10 45.3
Utilizando la Ec. 4.1 se obtuvo un nivel de ruido promedio de 45.7 dBA.
El resultado de la evaluación que realizó el sujeto 1 se muestra en la Tabla 4.8,
donde este repitió veinte veces cada comando, los promedios de esta evaluación se
muestran en la Fig. 4.7.
0%
20%
40%
60%
80%
100%
Sujeto 1
A
Afuera
Usuario
Llamada
Luces
Cajuela
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 87
Tabla 4.8.- Resultados del sujeto 1 con el motor encendido en el vehículo 1 en la
prueba 2.
Número de repetición
"A" "Afuera" "Usuario" "Llamada" "Luces" "Cajuela"
1 X X X X
2 X X X X X
3 X X X X
4 X X X
5 X X X
6 X X X
7 X X X
8 X X X
9 X X X
10 X X
11 X X X
12 X X X
13 X X X
14 X X
15 X X X X
16 X X
17 X X X
18 X X X
19 X X
20 X X X X
% Correcto 5 65 75 20 85 40
Al comparar las Tablas 4.8 con la 4.6, puede observarse que existe una diferencia
entre los resultados obtenidos en el vehículo 1 y el vehículo 2, pues aunque los
niveles de ruido existentes en la prueba del vehículo 2 son más bajos que en los del
vehículo 1, el sistema tuvo una mejor respuesta en este último y no en la primera.
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 88
Fig. 4.7.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 1 en el vehículo 1 de la prueba 2.
Esta cuestión queda solucionada al ver la respuesta en frecuencia del programa de
reconocimiento de voz ante las señales presentadas por el ruido producido por el
motor del vehículo 1 y el del vehículo 2. Si se obtiene la transformada del ruido
producido por el vehículo 2, se observa la señal de la Fig. 4.8c, cuyo espectro en
frecuencia es la Fig. 4.8d.
a)
b)
Fig. 4.8.- Señales obtenidas en el vehículo 2 de a) voz y b) su respectivo espectro de frecuencia.
0%
20%
40%
60%
80%
100%
Sujeto 1
A
Afuera
Usuario
Llamada
Luces
Cajuela
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 89
Dicha señal cuenta con amplio contenido en frecuencias bajas que al combinarse
con la señal de voz (Fig 4.8.a) del usuario (persona que grabó la base de datos),
causa una confusión en el sistema, como se puede ver en las Fig. 4.8e y 4.8f.
c)
d)
e)
f)
Fig. 4.8.- Señales obtenidas en el vehículo 2 de c) ruido auto, e) ruido más voz, y sus respectivos espectros de frecuencia d) ruido auto f) ruido más voz.
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 90
De igual manera se presentan los resultados obtenidos del programa en el vehículo
1 (ver Fig. 4.9), que como puede observarse, el ruido tiene una menor amplitud en
su espectro dentro de esas frecuencias, lo que hace que la respuesta del
reconocedor sea mayor.
a)
b)
c)
d)
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 91
e)
f)
Fig. 4.9.- Señales obtenidas en el vehículo 1 de a) voz, c) ruido de auto y e) ruido más voz, y los espectros de frecuencia b) voz, d) ruido auto y f) ruido más voz.
4.3.- Prueba con el motor encendido y en un ambiente de tráfico
La última prueba que se realizó fue en el vehículo 1 con las ventanas abiertas, bajo
condiciones de tránsito y con el motor encendido, de igual manera el sujeto 1 dijo
veinte veces cada comando. Los resultados de la evaluación se muestran en la
Tabla 4.10 y la gráfica del porcentaje de respuesta de cada comando se muestra en
la Fig. 4.10. Las medidas de ruido se realizaron con el sonómetro Phonic PAA3,
utilizando la curva de ponderación A y con una respuesta rápida. Se tomaron diez
lecturas en periodos de cinco segundos. Los resultados de la medición de ruido se
muestran en la Tabla 4.9.
El nivel de ruido promedio que se obtuvo de la sustitución de los valores
contenidos de la Tabla 4.9 en la ecuación 4.1 fue de 63.0 dBA.
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 92
Tabla 4.9.- Mediciones del nivel de ruido en la prueba 3.
Medición Nivel de ruido [dbA]
1 54.0
2 55.7
3 56.5
4 71.9
5 58.1 6 55.0
7 57.9
8 61.2
9 57.7
10 53.3
Tabla 4.10.- Resultados del sujeto 1 en el tránsito de la prueba 3.
Número de repetición
"A" "Afuera" "Usuario" "llamada" "Luces" "Cajuela"
1 X X X
2 X X X
3 X X X
4 X X X
5 X X X
6 X X X
7 X X X
8 X X X
9 X X
10 X X X
11 X X X
12 X X X
13 X X X
14 X X X
15 X X X
16 X X X
17 X X X
18 X X X
19 X X X
20 X X X
% Correcto 0 100 100 5 100 0
Capítulo 4: Pruebas y resultados
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 93
Fig. 4.10.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para
el sujeto 1 en la prueba 3.
0%
20%
40%
60%
80%
100%
Sujeto 1
A
Afuera
Usuario
Llamada
Luces
Cajuela
Conclusiones
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 94
Conclusiones
La presente tesis demuestra la eficiencia del reconocedor de comandos por medio
del habla, el cual está orientado a la implementación dentro de un automóvil. El
proyecto se basó en comandos que los usuarios podrían utilizar dentro de un auto
con la finalidad de facilitar el uso de este y por su comodidad.
Entre los beneficios que nos ofrece el reconocedor son: una alta velocidad de
procesamiento en los cálculos realizados por la computadora al utilizar el método
LPC el cual no requiere que las señales hayan sido tratadas con algún filtro,
evitando que el programa se vuelva más complejo, haciendo que sea más sencilla
la creación de una base de datos y que el procesamiento de la señal de entrada sea
más rápido. Lo anterior haría que su precio en el mercado se redujera
gradualmente.
A partir de los resultados obtenidos se observa que el sistema responde de manera
más eficiente cuando es utilizado por la persona que grabó la base de datos. Si al
programa existente se le adjuntaran otros métodos de reconocimiento (como el
análisis de formantes), este podría llegar a convertirse en un sistema de seguridad,
esto demuestra la gran flexibilidad que tiene este método para diferentes tipos de
aplicaciones.
Por otro lado las pruebas permitieron observar que el reconocedor de voz a pesar
de trabajar bien bajo ciertas condiciones, necesita de algunas modificaciones para
aumentar su desempeño bajo todas las condiciones de ruido o en su caso de la
mayoría. Entre los puntos considerables para presentar modificaciones al
programa se encuentran que el reconocedor de voz no es robusto, debido a que si
se comparaban más de dos comandos al reconocedor le era difícil identificar
alguno de estos, de igual manera los niveles superiores a 36 dBA afectan al
Conclusiones
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 95
programa interfiriendo con un correcto reconocimiento de voz. También se
encontró que la acústica de los recintos donde se realizaron las pruebas y donde se
desarrolló la base de datos, así como la forma en que se pronunciaban los
diferentes comandos afectan el desempeño del programa de reconocimiento, lo
que obliga al usuario a tener que decir de una sola manera el comando que fue
grabado, sino este no era reconocido.
Bajo estas consideraciones se puede decir que el reconocedor a pesar de su
simplicidad cumple con el objetivo de reconocer comandos dentro de un
automóvil por medio del habla.
Bibliografía y referencias
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 96
Bibliografía y referencias
C. H. Chen, “Signal Processing Handbook”, año 1988, Estados Unidos de América, Editorial Marcel Dekker Inc., ISBN 0-8247-7956-8, pp. 511 – 543. J. Bernal, J. Bobadilla, P. Gómez, “Reconocimiento de voz y fonética acústica”, año 2000, México D.F., Editorial Alfaomega, ISBN 970-15-0541-7, pp. 23 – 37, 141-147, 157, 195, 203 – 206, 236. L. Rabiner, R. Schafer, “Digital Processing of Speech Signals”, año 1978, Estados Unidos de América, Editorial Prentice-Hall signal processing series, ISBN 0-13-213603-1, pp. 98-105. B. Jacob, M. M. Sondhi, Y. Huang “Springer Handbook of Speech Procesing”, año 2008, Estados Unidos de América, Editorial Springer Science+Business Media, e-ISBN 978-3-540-49127-9, pp. 7-13, 124, 125. http://musica.unq.edu.ar/personales/ebonnier/cam2/matlab/tutorial2632.html?page=intro [Fecha de consulta: Febrero 2012]. http://www.mathworks.com/matlabcentral/fileexchange/12122?controller=file_infos&download=true [Fecha de consulta: Febrero 2012]. http://www.mathworks.com/help/signal/ref/lpc.html [Fecha de consulta: Noviembre 2012]. http://www.extech.com/instruments/resources/manuals/407768_UMsp.pdf [Fecha de consulta: Noviembre de 2012]. https://phonic.boxcn.net/shared/fx8ydgar4a [Fecha de consulta: Noviembre de 2012]. http://lema.rae.es/drae/?val=fon%C3%A9tica [Fecha de consulta: Septiembre de 2012].
Anexo A
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 97
Anexo A Programa completo
Anexo A
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 98
Anexo A
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 99
Anexo A
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 100
Anexo A
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 101
Anexo A
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 102
Anexo A
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 103
Anexo A
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 104
Anexo A
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 105
Anexo A
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 106
Anexo B
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 107
Anexo B
Especificaciones del sonómetro Extech Instruments modelo 407768
El instrumento de medición de nivel de sonido de escala automática de la marca Extech Instruments modelo 407768 cumple con las normas de precisión IEC y ANSI Tipo II. En las Figs. B.1 y B.2 se muestran la descripción física del sonómetro y las curvas de ponderación que maneja respectivamente, mientras que la Tabla B.1 indica sus especificaciones técnicas.
Tabla B.1.- Especificaciones del instrumento de medición.
Concepto Descripción
Pantalla LCD multi-función con escala automática
Amplitud de banda de frecuencia 31.5Hz a 8kHz
Micrófono 0.5” Micrófono condensador eléctret
Terminales de salida Puerto RS-232 aislado ópticamente y salida CA
Escalas de medición Escala automática:30 a 130dB Escalas manuales: 30 a 80dB, 50 a 100dB, 80 a 130dB
Ponderación de frecuencia A y C (Programable)
Normas aplicables ANSI/IEC Tipo II
Precisión/Resolución 1.5dB/0.1dB
Registro de máximos/mínimos Las lecturas alta y baja son almacenadas para recuperación posterior
Retención de datos La lectura indicada es retenida al oprimir la tecla HOLD
Retención de máximos Sólo se indica la lectura más alta
Tiempo de respuesta Rápido: 125ms/Lento: 1s (Programable)
Salida análoga CA 0.5VCA rms escala total (600 impedancia salida)
Tensión Batería: 9V; Consumo: 6mADC aproximadamente
Temperatura de operación 0 a 5C
Humedad de operación Menor a 80% RH
Dimensiones/Peso 268x68x29mm/285g
Anexo B
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 108
Fig. B.1.- Descripción física del sonómetro.
Fig. B.2.- Curvas de ponderación del sonómetro.
Anexo C
Reconocedor automático de comandos por medio del habla para las funciones de un automóvil 109
Anexo C
Especificaciones del sonómetro Phonic PAA3
La Tabla C.1 indica las especificaciones técnicas del sonómetro Phonic PAA3.
Tabla C.1.- Especificaciones del sonómetro Phonic PAA3.
Concepto Descripción
Entrada/Salida
Micrófono Miniatura integrado omnidireccional de condensador
Línea Jacks XLR para entrada y salida de línea
Puerto de datos Interfaz USB 1.1
Pantalla LCD 160x160 con ajuste de contraste y luz de fondo
NPS, dBu, dBV, Voltaje Gráficas de barra y pantalla digital
RTA 31 bandas, resolución de 0.5dB, frecuencias centrales ISO de 20 Hz a 20kHz
Rango de medición
NPS (Entrada de micrófono) 30 a 130dB
dBu (Entrada de línea) -50 a 40dBu
dBV (Entrada de línea) -52 a 38dBV
Voltaje 5mV a 80V
Configuración
Ponderación A, C o plana
Retención de pico ON/OFF
Nivel máximo RESET
Tiempo de respuesta 35ms, 125ms, 250ms, 1s
Otras funciones
RT60 Pantalla de tiempo de reverberación, hasta 30 s
Memoria 10 RTA+6 cálculo promedio
Cálculo promedio Para 10 memorias de RTA
Pantalla de valores de configuración de EQ
31 bandas
Análisis de fase A través de señal de polaridad
Transmisión Operación simultánea con PC a través del puerto USB
Generador de ruido (basado en alimentación a 6VDC)
Ruido rosa Salida balanceada, -10dBu
Señal de 1kHz Salida balanceada, -10dBu
Señal de polaridad Salida balanceada, -10dBu
Alimentación 4 baterías AA
Dimensiones 144.95x82.95x39.42mm
Peso (con baterías) 354g