Вы находитесь на странице: 1из 124
INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD ZACATENCO Ingeniería en

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD ZACATENCO

DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD ZACATENCO Ingeniería en Comunicaciones y Electrónica Academia de
DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD ZACATENCO Ingeniería en Comunicaciones y Electrónica Academia de
DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD ZACATENCO Ingeniería en Comunicaciones y Electrónica Academia de

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.

BENÍTEZ DIRECTOR DE TESIS: M. EN C. MARIO JIMÉNEZ HERNÁNDEZ. CODIRECTOR DE TESIS: ING. PATRICIA LORENA

Resumen

Resumen Resumen La presente tesis muestra el diseño y desarrollo de un programa de reconocimiento de
Resumen Resumen La presente tesis muestra el diseño y desarrollo de un programa de reconocimiento de

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ó.

medio, y así, se determina qué comando se expresó. Reconocedor automático de comandos por medio del

Agradecimientos

Agradecimientos Agradecimientos Quiero dedicar y agradecer esta tesis a mis padres Crispina y Alfonso por brindarme
Agradecimientos Agradecimientos Quiero dedicar y agradecer esta tesis a mis padres Crispina y Alfonso por brindarme

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

lo largo de toda la carrera. Gutiérrez Osorio José Alfonso Reconocedor automático de comandos por medio

Agradecimientos

Agradecimientos A mi hermosa familia, que en todo momento estuvo ahí para apoyarme y sustentarme cuando
Agradecimientos A mi hermosa familia, que en todo momento estuvo ahí para apoyarme y sustentarme cuando

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

experiencias y vivencias. Hernández Benítez Héctor Alonso Reconocedor automático de comandos por medio del habla para
 

Índices

Í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

24

2.5.- Análisis de Fourier en tiempo corto 2.5.1.- Transformada rápida de Fourier

25

tiempo corto 2.5.1.- Transformada rápida de Fourier 25 Reconocedor automático de comandos por medio del habla

Índices

Índices 2.6.- Análisis predictivo lineal 26 2.6.1.- Análisis de la señal del habla 27 2.6.2.- Método
Índices 2.6.- Análisis predictivo lineal 26 2.6.1.- Análisis de la señal del habla 27 2.6.2.- Método

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

con el motor encendido y en un ambiente de tráfico 91 Reconocedor automático de comandos por

Índices

Conclusiones

94

Bibliografía y referencias

96

Anexo A

97

Anexo B

107

Anexo C

109

96 Anexo A 97 Anexo B 107 Anexo C 109 Reconocedor automático de comandos por medio

Índices

Índices Índice de imágenes Capítulo 2: Marco teórico Fig. 2.1.- Corte sagital del tracto vocal. 6
Índices Índice de imágenes Capítulo 2: Marco teórico Fig. 2.1.- Corte sagital del tracto vocal. 6

Í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

de ejes, b) Ejemplo de un eje en la interfaz gráfica. 41 Reconocedor automático de comandos

Índices

Índices Fig. 3.11.- Inserción de un panel; a) Ícono del panel, b) Ejemplo de panel en
Índices Fig. 3.11.- Inserción de un panel; a) Ícono del panel, b) Ejemplo de panel en

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

Fig. 3.36.- Ventana para la opción de reinicio. 76 Reconocedor automático de comandos por medio del

Índices

Capítulo 4: Pruebas y resultados

Fig. 4.1.- Posicionamiento del individuo y la computadora para pruebas dentro del automóvil. Fig. 4.2.-Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 1 en la prueba 1. Fig. 4.3.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 2 en la prueba 1. Fig. 4.4.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 3 en la prueba 1. Fig. 4.5.- Comparación de la respuesta del programa de reconocimiento de voz en porcentaje de cada uno de los sujetos. 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. 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. Fig. 4.8.- Señales obtenidas en el vehículo 2 de a) voz y b) su respectivo

78

81

82

83

84

86

88

espectros de frecuencia. 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,

88

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.

Fig. 4.10.- Respuesta del programa de reconocimiento de voz en porcentaje de cada comando para el sujeto 1 en la prueba 3.

Anexo B

Fig. B.1.- Descripción física del sonómetro. Fig. B.2.- Curvas de ponderación del sonómetro.

91

93

108

108

B.2.- Curvas de ponderación del sonómetro. 91 93 108 108 Reconocedor automático de comandos por medio

Índices

Í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. Tabla 4.2.- Resultados del sujeto 1 en la prueba 1. Tabla 4.3.- Resultados del sujeto 2 en la prueba 1. Tabla 4.4.- Resultados del sujeto 3 en la prueba 1. Tabla 4.5.- Mediciones del nivel de ruido en vehículo 2 de la prueba2. Tabla 4.6.- Resultados del sujeto 1 en el vehículo 2 en la prueba 2. Tabla 4.7.- Mediciones del nivel de ruido en el vehículo 1 de la prueba 2. Tabla 4.8.- Resultados del sujeto 1 con el motor encendido en el vehículo 1 en la prueba 2. Tabla 4.9.- Mediciones del nivel de ruido en la prueba 3. Tabla 4.10.- Resultados del sujeto 1 en el tránsito de la prueba 3.

79

80

81

82

84

85

86

87

92

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

C.1.- Especificaciones del sonómetro Phonic PAA3. 109 Reconocedor automático de comandos por medio del habla para

Introducción

Introducción Introducción La presente tesis está dividida en cuatro capítulos que tienen como finalidad explicar de
Introducción Introducción La presente tesis está dividida en cuatro capítulos que tienen como finalidad explicar de

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.

las señales dentro de estos desarrollos matemáticos. Reconocedor automático de comandos por medio del habla para

Introducción

Introducción El tercer capítulo comprende el desarrollo del proyecto, en el que se explica a detalle
Introducción El tercer capítulo comprende el desarrollo del proyecto, en el que se explica a detalle

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.

de voz que sea de calidad, eficaz y de excelente respuesta. Reconocedor automático de comandos por

Introducción

Introducción Justificación Hoy en día la industria automovilística, al igual que muchas otras, está invirtiendo en
Introducción Justificación Hoy en día la industria automovilística, al igual que muchas otras, está invirtiendo en

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.

de un sistema de control de funciones económico y eficaz. Reconocedor automático de comandos por medio

Capítulo 1: Antecedentes históricos

Capítulo 1: Antecedentes históricos Capítulo 1: Antecedentes históricos El habla y el lenguaje son las herramientas
Capítulo 1: Antecedentes históricos Capítulo 1: Antecedentes históricos El habla y el lenguaje son las herramientas

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,

un medidor de frecuencia. Voder realiza el proceso inverso, Reconocedor automático de comandos por medio del
un medidor de frecuencia. Voder realiza el proceso inverso, Reconocedor automático de comandos por medio del

Capítulo 1: Antecedentes históricos

Capítulo 1: Antecedentes históricos toma los datos del análisis, los entrega a una serie de filtros
Capítulo 1: Antecedentes históricos toma los datos del análisis, los entrega a una serie de filtros

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

Los investigadores abordaron el problema empleando Reconocedor automático de comandos por medio del habla para
Los investigadores abordaron el problema empleando Reconocedor automático de comandos por medio del habla para

Capítulo 1: Antecedentes históricos

Capítulo 1: Antecedentes históricos vocabularios pequeños, dependientes del locutor y con un flujo discreto. La
Capítulo 1: Antecedentes históricos vocabularios pequeños, dependientes del locutor y con un flujo discreto. La

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 “voiceprintpara 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

en el lenguaje de programación MATLAB cuyo nombre deriva de Reconocedor automático de comandos por medio
en el lenguaje de programación MATLAB cuyo nombre deriva de Reconocedor automático de comandos por medio

Capítulo 1: Antecedentes históricos

Capítulo 1: Antecedentes históricos matrix laboratory (en español laboratorio de matrices ), creado en 1970 para
Capítulo 1: Antecedentes históricos matrix laboratory (en español laboratorio de matrices ), creado en 1970 para

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.

en la historia del reconocimiento automático del habla. Reconocedor automático de comandos por medio del habla
en la historia del reconocimiento automático del habla. Reconocedor automático de comandos por medio del habla

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico Capítulo 2: Marco teórico El objetivo del habla siempre ha sido el
Capítulo 2: Marco teórico Capítulo 2: Marco teórico El objetivo del habla siempre ha sido el

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.

que se presentará solamente una síntesis del proceso. Reconocedor automático de comandos por medio del habla

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico Los mecanismos utilizados en la producción del habla son: las componentes subglotales,
Capítulo 2: Marco teórico Los mecanismos utilizados en la producción del habla son: las componentes subglotales,

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.

serán radiados por los labios o por la ventana de la nariz. Fig. 2.1.- Corte sagital

Fig. 2.1.- Corte sagital del tracto vocal

de la nariz. Fig. 2.1.- Corte sagital del tracto vocal Reconocedor automático de comandos por medio

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico 2.1.2.- La fonética La fonética es el estudio acerca de los sonidos
Capítulo 2: Marco teórico 2.1.2.- La fonética La fonética es el estudio acerca de los sonidos

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)

se muestra una tabla con dichos fonemas (Tabla 2.1) Reconocedor automático de comandos por medio del

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico Tabla 2.1 Fonemas del español fonema grafía ejemplos /a/ a   /b/
Capítulo 2: Marco teórico Tabla 2.1 Fonemas del español fonema grafía ejemplos /a/ a   /b/

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

/u/ u   / / y, hi ma y o, hi erba Reconocedor automático de comandos

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico 2.2.- Modelo acústico del habla Teniendo conocimiento del sistema que se ocupa
Capítulo 2: Marco teórico 2.2.- Modelo acústico del habla Teniendo conocimiento del sistema que se ocupa

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)

también como “armónicos del tono de voz”). a) b) Fig. 2.2.- Velocidad – volumen glotal: a)forma

b)

también como “armónicos del tono de voz”). a) b) Fig. 2.2.- Velocidad – volumen glotal: a)forma

Fig. 2.2.- Velocidad volumen glotal: a)forma de onda (tren de impulsos línea segmentada), b) magnitud de espectro

impulsos – línea segmentada), b) magnitud de espectro Reconocedor automático de comandos por medio del habla

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico 2.2.2.- Filtrado del tracto vocal El tracto vocal filtra acústicamente los pulsos
Capítulo 2: Marco teórico 2.2.2.- Filtrado del tracto vocal El tracto vocal filtra acústicamente los pulsos

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).

es con el “tubo sin perdidas uniforme” (ver fig. 2.3). Fig. 2.3.- T ubo uniforme sin

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 velocidad del sonido.

Una característica del tubo acústico es que al resolver la Ec. 2.1 en el dominio de la

es la densidad del aire, y c

la Ec. 2.1 en el dominio de la es la densidad del aire, y c Reconocedor

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico frecuencia, se obtiene la relación de volumen-velocidad que hay en la abertura
Capítulo 2: Marco teórico frecuencia, se obtiene la relación de volumen-velocidad que hay en la abertura

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.

de resonancia del tracto vocal se llaman formantes. Fig. 2.4.- Respuesta en frecuencia de un tubo

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)

de la n-ésima conjunción se utiliza la Ec. 2.3. (Ec. 2.3) Reconocedor automático de comandos por

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico Donde representa la cantidad de la onda que se reflejó en esa
Capítulo 2: Marco teórico Donde representa la cantidad de la onda que se reflejó en esa

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.

de los tubos y los polos de la función de transferencia. Fig. 2.5.- Modelo de tubos

Fig. 2.5.- Modelo de tubos concatenados (seis secciones).

2.2.3.- Radiación en los labios

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.

La relación entre el volumen-velocidad y la presión

(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

.

al tener una resistencia y una inducción de radiación . Reconocedor automático de comandos por medio

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico a) b) Fig. 2.6.- Radiación de los labios: a) Bafle plano infinito,
Capítulo 2: Marco teórico a) b) Fig. 2.6.- Radiación de los labios: a) Bafle plano infinito,

a)

Capítulo 2: Marco teórico a) b) Fig. 2.6.- Radiación de los labios: a) Bafle plano infinito,

b)

Capítulo 2: Marco teórico a) b) Fig. 2.6.- Radiación de los labios: a) Bafle plano infinito,

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

obtiene una forma de onda muy similar a la producida en el Reconocedor automático de comandos

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico modelo biológico o acústico (ver Fig. 2.2). Por último, el resultado es
Capítulo 2: Marco teórico modelo biológico o acústico (ver Fig. 2.2). Por último, el resultado es

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.

la Ec. 2.6, en donde y son reales o complejos conjugados. Fig. 2.7.- Modelo de excitación

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.

muestra el modelo de excitación para los sonidos sordos. Fig. 2.8.- Modelo de excitación para sonidos

Fig. 2.8.- Modelo de excitación para sonidos sordos.

Fig. 2.8.- Modelo de excitación para sonidos sordos. Reconocedor automático de comandos por medio del habla

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico La producción del habla es una combinación de ambos tipos de sonidos,
Capítulo 2: Marco teórico La producción del habla es una combinación de ambos tipos de sonidos,

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.

uno sordo, un switch elegirá el modelo correspondiente. Fig. 2.9.- Modelo completo de la excitación. 2.3.2.-

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)

y estos últimos son las raíces de la función . (Ec. 2.7) Reconocedor automático de comandos

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico Debido a que la forma de onda que ha sido filtrada es
Capítulo 2: Marco teórico Debido a que la forma de onda que ha sido filtrada es

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)

digital con un cero en corriente directa. (Ec. 2.8) Reconocedor automático de comandos por medio del

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico 2.3.4.- Modelo completo Una vez analizadas las secciones 2.3.1, 2.3.2 y 2.3.3
Capítulo 2: Marco teórico 2.3.4.- Modelo completo Una vez analizadas las secciones 2.3.1, 2.3.2 y 2.3.3

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.

para el diseño de los sintetizadores de voz comerciales. Fig. 2. 10.- Modelo digital de la

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.

clave en el procedimiento de reconocimiento de voz. Reconocedor automático de comandos por medio del habla

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico La sección se divide en dos partes: digitalización de la señal (transducción,
Capítulo 2: Marco teórico La sección se divide en dos partes: digitalización de la señal (transducción,

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.

más representativa de la señal continua en el tiempo. Reconocedor automático de comandos por medio del

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico Algunos estándares importantes en la industria son: La telefonía digital utiliza una
Capítulo 2: Marco teórico Algunos estándares importantes en la industria son: La telefonía digital utiliza una

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.

2.4.2.- Análisis en tiempo corto

(Ec. 2.10)

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

procede a segmentarlo en marcos o ventanas para así tener Reconocedor automático de comandos por medio

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico la suficiente información y caracterizar las propiedades a estudiar (energía y función
Capítulo 2: Marco teórico la suficiente información y caracterizar las propiedades a estudiar (energía y función

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)

el resto. La Fig. 2.11 muestra como se utiliza . (Ec. 2.11) Fig. 2.11.- Implementación de

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.

se describe a detalle en qué consiste cada una de ellas. Reconocedor automático de comandos por

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico 2.4.2.1.- Energía La energía se obtiene de la suma de los cuadrados
Capítulo 2: Marco teórico 2.4.2.1.- Energía La energía se obtiene de la suma de los cuadrados

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.

para los segmentos sordos o silenciosos, la energía decae. Fig. 2.12.- Cálculo de la energía (gráfica

Fig. 2.12.- Cálculo de la energía (gráfica azul) de la grabación de la palabrahipotenusa(gráfica negra).

de la palabra ” hipotenusa ” (gráfica negra). Reconocedor automático de comandos por medio del habla

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico 2.4.2.2.- Función de autocorrelación Dicha medición permite saber que tan parecida es
Capítulo 2: Marco teórico 2.4.2.2.- Función de autocorrelación Dicha medición permite saber que tan parecida es

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 .

se puede decir que hay una correlación en los valores de . Reconocedor automático de comandos

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico Fig. 2.13.- Cálculo de la función de autocorrelación (abajo) para una señal
Capítulo 2: Marco teórico Fig. 2.13.- Cálculo de la función de autocorrelación (abajo) para una señal
Capítulo 2: Marco teórico Fig. 2.13.- Cálculo de la función de autocorrelación (abajo) para una señal

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.

en la señal, tal como puede ser apreciado en la Fig. 2.14. Fig. 2.14.- Cálculo de

Fig. 2.14.- Cálculo de la función de autocorrelación (abajo) para una señal no periódica (arriba).

(abajo) para una señal no periódica (arriba). Reconocedor automático de comandos por medio del habla para

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico 2.5.- Análisis de Fourier en tiempo corto La transformada de Fourier es
Capítulo 2: Marco teórico 2.5.- Análisis de Fourier en tiempo corto La transformada de Fourier es

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.

que en la de 5 ms, al igual que la estructura de formantes. Fig.2.15.- Transformada de

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).

señal de voz de 37.5ms. (D) Transformada de Fourier de (C). Reconocedor automático de comandos por

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico 2.5.1.- Transformada rápida de Fourier Es un eficiente algoritmo matemático que permite
Capítulo 2: Marco teórico 2.5.1.- Transformada rápida de Fourier Es un eficiente algoritmo matemático que permite

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.

y para la mejora del habla y la modificación de la señal. Fig.2.16.- Espectro digital utilizando

Fig.2.16.- Espectro digital utilizando FFT

de la señal. Fig.2.16.- Espectro digital utilizando FFT Reconocedor automático de comandos por medio del habla

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico 2.6.- Análisis predictivo lineal Comúnmente llamada coeficientes de predicción lineal LPC
Capítulo 2: Marco teórico 2.6.- Análisis predictivo lineal Comúnmente llamada coeficientes de predicción lineal LPC

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

la suma de Ec. 2.16.

se predice a partir de

muestras anteriores, ponderadas linealmente, como se muestra en la

(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.

La Ec. 2.18 muestra el modelo de producción del habla. Reconocedor automático de comandos por medio

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico (Ec. 2.18) Si se pasa la Ec. 2.18 al dominio del tiempo,
Capítulo 2: Marco teórico (Ec. 2.18) Si se pasa la Ec. 2.18 al dominio del tiempo,

(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).

Para

minimizar

el

error

(Ec. 2.21)

la

con lo que se obtiene un conjunto de

cuadrático

medio

se

calcula

derivada

parcial

ecuaciones.

de cuadrático medio se calcula derivada parcial ecuaciones. Reconocedor automático de comandos por medio del habla

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico (Ec. 2.22) Dos diferentes formulaciones son posibles, dependiendo del intervalo de y
Capítulo 2: Marco teórico (Ec. 2.22) Dos diferentes formulaciones son posibles, dependiendo del intervalo de y

(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

y la forma de onda se ventanea, de

modo que todo lo que está fuera de esta ventana

es: , donde es una ventana de longitud finita (de N puntos) que cubre el intervalo deseado.

En este método se asume que

toma el valor de cero, esto

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:

Donde

(Ec. 2.13)

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

a lo largo de cualquier diagonal son iguales). Un método Reconocedor automático de comandos por medio

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico muy eficiente llamado la recursión de Levinson puede utilizarse para resolver este
Capítulo 2: Marco teórico muy eficiente llamado la recursión de Levinson puede utilizarse para resolver este

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, a i (i) son los elementos de pivotaje, a j (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)

b)

c)

d)

(Ec. 2.14)

con los elementos de pivotaje. a) b) c) d) (Ec. 2.14) Reconocedor automático de comandos por

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico Este método comparado con otros es más eficiente en los procesos computacionales
Capítulo 2: Marco teórico Este método comparado con otros es más eficiente en los procesos computacionales

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 k 2 mientras que para otros es de k 3 , 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

con el fin de alinear el contorno de la expresión con el de Reconocedor automático de

Capítulo 2: Marco teórico

Capítulo 2: Marco teórico la referencia. Esta distorsión es muy importante y ha sido aplicada en
Capítulo 2: Marco teórico la referencia. Esta distorsión es muy importante y ha sido aplicada en

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 a js (i) es el valor de la j-ésima medición del contorno en el tiempo i, a jr (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

referencia y N es la cantidad de muestras analizadas.

es la muestra k de la señal de entrada,

es la muestra k de la señal de

de la señal de entrada, es la muestra k de la señal de Reconocedor automático de

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Capítulo 3: Desarrollo del proyecto El objetivo de este capítulo es
Capítulo 3: Desarrollo del proyecto Capítulo 3: Desarrollo del proyecto El objetivo de este capítulo es

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.

“Luces”: Enciende los faros delanteros del carro. Reconocedor automático de comandos por medio del habla para

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto En la última parte se explican las secciones centrales del programa
Capítulo 3: Desarrollo del proyecto En la última parte se explican las secciones centrales del programa

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 callbackde 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.

su funcionamiento, a menos de que el usuario así lo desee. Reconocedor automático de comandos por

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto El desarrollo de la GUI se realiza en dos etapas: 
Capítulo 3: Desarrollo del proyecto El desarrollo de la GUI se realiza en dos etapas: 

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 guideen la ventana de comando, como se muestra en la Fig. 3.1.

en la ventana de comando, como se muestra en la Fig. 3.1. Fig. 3.1.- Primer modo

Fig. 3.1.- Primer modo de acceso a la herramienta GUIDE de MATLAB.

Otra manera de acceder, es a través del menú File

muestra en la Fig. 3.2.

New

“GUI”, como se

” muestra en la Fig. 3.2. “ New ” “GUI” , como se Fig. 3.2.- Segundo

Fig. 3.2.- Segundo modo de acceso a la herramienta GUIDE de MATLAB.

Segundo modo de acceso a la herramienta GUIDE de MATLAB. Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Una vez que es llamada la función GUIDE, aparecerá la ventana
Capítulo 3: Desarrollo del proyecto Una vez que es llamada la función GUIDE, aparecerá la ventana

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.

GUIDE ( GUIDE Quick start) , como se muestra en la Fig. 3.3. Fig. 3.3.- Ventana

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.

donde se crea esta. Tal y como se muestra en la Fig. 3.4. Fig. 3.4.- Espacio

Fig. 3.4.- Espacio de trabajo para crear una interfaz.

3.4. Fig. 3.4.- Espacio de trabajo para crear una interfaz. Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Los componentes principales de la GUIDE son:  Barra de menús:
Capítulo 3: Desarrollo del proyecto Los componentes principales de la GUIDE son:  Barra de menús:

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):

que pueden componer una GUI son las siguientes (Fig. 3.5): Fig. 3.5.- Desglose de la paleta

Fig. 3.5.- Desglose de la paleta de componentes.

De esta lista de componentes, los utilizados en esta tesis se explican a continuación.

los utilizados en esta tesis se explican a continuación. Reconocedor automático de comandos por medio del

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto 3.1.1.1.- Texto estático (s tatic text ) Un texto estático puede
Capítulo 3: Desarrollo del proyecto 3.1.1.1.- Texto estático (s tatic text ) Un texto estático puede

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)

el espacio de trabajo, como se muestra en la Fig. 3.6. a) b) Fig. 3.6.- Inserción

b)

el espacio de trabajo, como se muestra en la Fig. 3.6. a) b) Fig. 3.6.- Inserción

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:

del código del programa como se muestra a continuación: Reconocedor automático de comandos por medio del
del código del programa como se muestra a continuación: Reconocedor automático de comandos por medio del

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Fig. 3.7.- Edición del texto estático en el inspector de propiedades.
Capítulo 3: Desarrollo del proyecto Fig. 3.7.- Edición del texto estático en el inspector de propiedades.
Capítulo 3: Desarrollo del proyecto Fig. 3.7.- Edición del texto estático en el inspector de propiedades.

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.

b)

a)

espacio de trabajo, como se muestra en la Fig. 3.8. b) a) Fig. 3.8.- Inserción de
espacio de trabajo, como se muestra en la Fig. 3.8. b) a) Fig. 3.8.- Inserción de

Fig. 3.8.- Inserción de un botón; a) Ícono de botón, b) Ejemplo de botones en la interfaz gráfica.

de botón, b) Ejemplo de botones en la interfaz gráfica. Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Si se desea editar las características del botón, se recurre al
Capítulo 3: Desarrollo del proyecto Si se desea editar las características del botón, se recurre al

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:

se genera al colocar un botón en la GUI es el siguiente: A partir de esta

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:

La rutina debe de terminar con la siguiente instrucción: 3.1.1.3.- Texto editable ( edit text )

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.

el espacio de trabajo, como se ilustra en la Fig. 3.9. Reconocedor automático de comandos por

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto a) b) Fig. 3.9.- Inserción de un texto editable; a) Ícono
Capítulo 3: Desarrollo del proyecto a) b) Fig. 3.9.- Inserción de un texto editable; a) Ícono

a)

Capítulo 3: Desarrollo del proyecto a) b) Fig. 3.9.- Inserción de un texto editable; a) Ícono

b)

Capítulo 3: Desarrollo del proyecto a) b) Fig. 3.9.- Inserción de un texto editable; a) Ícono

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:

que se genera al colocar un texto editable es el siguiente: 3.1.1.4.- Ejes ( axes )

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

más para graficar los procesos que se le hayan realizado Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto a la señal original como la transformada rápida de Fourier y
Capítulo 3: Desarrollo del proyecto a la señal original como la transformada rápida de Fourier y

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)

al espacio de trabajo, como se muestra en la Fig.3.10. a) b) Fig. 3.10.- Inserción de
al espacio de trabajo, como se muestra en la Fig.3.10. a) b) Fig. 3.10.- Inserción de

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:

que se genera al colocar un texto editable es el siguiente: 3.1.1.5.- Panel ( panel )

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

denominada ”Dominio en el Tiempo”, en la que se trabaja Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto con la señal en tal dominio, y una segunda sección “Procesamiento
Capítulo 3: Desarrollo del proyecto con la señal en tal dominio, y una segunda sección “Procesamiento

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 “panely se arrastra hacia el espacio de trabajo, como se ilustra en la Fig. 3.11.

a)

b)

espacio de trabajo, como se ilustra en la Fig. 3.11. a) b) Fig. 3.11.- Inserción de
espacio de trabajo, como se ilustra en la Fig. 3.11. a) b) Fig. 3.11.- Inserción de

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:

que se genera al colocar un texto editable es el siguiente: 3.1.2.- Funcionamiento de una GUI

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

uno.fig , simplemente ejecutamos en la ventana de comandos 3.1.3.- Interfaz del reconocedor de voz Utilizando

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.

3.12., la interfaz a utilizar para el reconocer de comandos. Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Fig. 3.12- Interfaz del reconocedor de comandos. 3.2.- Base de datos
Capítulo 3: Desarrollo del proyecto Fig. 3.12- Interfaz del reconocedor de comandos. 3.2.- Base de datos
Capítulo 3: Desarrollo del proyecto Fig. 3.12- Interfaz del reconocedor de comandos. 3.2.- Base de datos

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

de interés realizar una vista panorámica de la fuente de Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto sonido, y finalmente guardado con el formato de archivo “.wav”, para
Capítulo 3: Desarrollo del proyecto sonido, y finalmente guardado con el formato de archivo “.wav”, para

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.

aprecia el algoritmo de este mediante un diagrama de flujo. Fig. 3.13.- Diagrama de flujo para

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.

la Fig. 3.13, para realizar las ciento veinte grabaciones. En dicho código, se asigna a la

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

wavwrite donde se especifica, la variable que contiene Reconocedor automático de comandos por medio del habla

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto las muestras a guardar wavwrite(y,”,”,”) , la frecuencia de muestreo a
Capítulo 3: Desarrollo del proyecto las muestras a guardar wavwrite(y,”,”,”) , la frecuencia de muestreo a

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.

el algoritmo de dicho proceso mediante un diagrama de flujo. Fig. 3.14.- Diagrama de flujo para

Fig. 3.14.- Diagrama de flujo para programa de normalización.

3.14.- Diagrama de flujo para programa de normalización. Reconocedor automático de comandos por medio del habla

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto El código implementado para lograr normalizar los archivos es el siguiente.
Capítulo 3: Desarrollo del proyecto El código implementado para lograr normalizar los archivos es el siguiente.

El código implementado para lograr normalizar los archivos es el siguiente.

para lograr normalizar los archivos es el siguiente. Si bien, los programas “grabadora” y normalizador”, no
para lograr normalizar los archivos es el siguiente. Si bien, los programas “grabadora” y normalizador”, no

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.

para desarrollar con mayor facilidad la base de datos. Reconocedor automático de comandos por medio del

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto 3.2.3.- Segmentación Debido a que el archivo que se guarda no
Capítulo 3: Desarrollo del proyecto 3.2.3.- Segmentación Debido a que el archivo que se guarda no

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.

” , tal cual como se puede observar en la Fig. 3.15. Fig. 3.15.- Modo de

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.

de trabajo de Audacity, como se muestra en la Fig. 3.16. Fig. 3.16.- Forma de onda

Fig. 3.16.- Forma de onda dentro de la interfaz de Audacity.

Fig. 3.16.- Forma de onda dentro de la interfaz de Audacity. Reconocedor automático de comandos por

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Para segmentar se selecciona con el mouse la parte de la
Capítulo 3: Desarrollo del proyecto Para segmentar se selecciona con el mouse la parte de la

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).

y se presiona la tecla supr o delete (ver Fig. 3.17). Fig. 3.17.- Selección de una

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.

una señal como la mostrada a continuación en la Fig. 3.18. Fig. 3.18.- Forma de onda

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.

el proceso de grabación y edición de la base de datos. Reconocedor automático de comandos por

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto 3.3.- Programación del reconocedor de comandos En esta sección del desarrollo
Capítulo 3: Desarrollo del proyecto 3.3.- Programación del reconocedor de comandos En esta sección del desarrollo

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

y el nombre del comando. Por dar un ejemplo, en la primera Reconocedor automático de comandos

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto ronda del primer comando, el número de la grabación es “1”,
Capítulo 3: Desarrollo del proyecto ronda del primer comando, el número de la grabación es “1”,

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.

datos mediante un for que será explicado posteriormente. Las siguientes cuatro líneas corresponden a la

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

De igual manera es importante agregar que las variables Reconocedor automático de comandos por medio del

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto (en este caso matrices) del tipo handles pueden utilizarse en todas
Capítulo 3: Desarrollo del proyecto (en este caso matrices) del tipo handles pueden utilizarse en todas

(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.

en caracterizar para realizar las comparaciones pertinentes. El segundo apartado de caracterizar corresponde a la

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.

la variable i representará cada uno de los comandos. Y una serie de if’s que seleccionan

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.

de lectura a los archivos correspondientes a dicho comando. Reconocedor automático de comandos por medio del
de lectura a los archivos correspondientes a dicho comando. Reconocedor automático de comandos por medio del

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Para anidado. obtener los LPC de los veinte archivos de cada
Capítulo 3: Desarrollo del proyecto Para anidado. obtener los LPC de los veinte archivos de cada
Capítulo 3: Desarrollo del proyecto Para anidado. obtener los LPC de los veinte archivos de cada

Para

anidado.

obtener los LPC de los veinte archivos de cada comando, se creó un for

LPC de los veinte archivos de cada comando, se creó un for Las primeras líneas dentro

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.

el archivo correspondiente y asignarlo a la variable ar . Inmediatamente después de darle lectura al

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

primero, que corresponde a la energía (y su valor siempre Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto es uno), con lo que se obtienen los diecinueve propuestos desde
Capítulo 3: Desarrollo del proyecto es uno), con lo que se obtienen los diecinueve propuestos desde

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 variable coef , como se expresa en la siguiente línea. La función lpc() trabaja con

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).

(en el vector correspondiente a su comando i ). Una vez que se han sumado los

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.

obtener los valores promedio de los LPC de dicho comando. Con este proceso se obtienen los

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.

obtención de los LPC de entrada y la comparación de estos. Reconocedor automático de comandos por

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Fig. 3.19.- a) Diagrama de flujo sección caracterizar. Reconocedor automático de
Capítulo 3: Desarrollo del proyecto Fig. 3.19.- a) Diagrama de flujo sección caracterizar. Reconocedor automático de
Capítulo 3: Desarrollo del proyecto Fig. 3.19.- a) Diagrama de flujo sección caracterizar. Reconocedor automático de

Fig. 3.19.- a) Diagrama de flujo sección caracterizar.

Fig. 3.19.- a) Diagrama de flujo sección caracterizar. Reconocedor automático de comandos por medio del habla

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Fig. 3.19.- b) Complemento del diagrama de flujo sección caracterizar. 3.3.2.-
Capítulo 3: Desarrollo del proyecto Fig. 3.19.- b) Complemento del diagrama de flujo sección caracterizar. 3.3.2.-
Capítulo 3: Desarrollo del proyecto Fig. 3.19.- b) Complemento del diagrama de flujo sección caracterizar. 3.3.2.-

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

del comando que presenta un menor error. Toda esta Reconocedor automático de comandos por medio del

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto estructura trabaja a la par con un menú de opciones en
Capítulo 3: Desarrollo del proyecto estructura trabaja a la par con un menú de opciones en

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.

cada comando. Este menú puede observarse en la Fig. 3.20. Fig. 3.20.- Menú de opciones en

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.

la explicación del menú de opciones en forma de árbol. Fig. 3.21.- Estructura general del proceso

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

16 bits la voz del usuario. La razón por la que se graban Reconocedor automático de

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto cinco segundos es porque cuando se ejecuta la instrucción sound(), MATLAB
Capítulo 3: Desarrollo del proyecto cinco segundos es porque cuando se ejecuta la instrucción sound(), MATLAB

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.

se aprecia el diagrama de flujo de la Fig. 3.22. Fig. 3.22.- Diagrama de flujo para

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

comando mgra(length(mensaje):5*fmen) , posteriormente esta Reconocedor automático de comandos por medio del habla para

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto modificación es reasignada a mgra . El código que realiza lo
Capítulo 3: Desarrollo del proyecto modificación es reasignada a mgra . El código que realiza lo

modificación es reasignada a mgra. El código que realiza lo anteriormente mencionado es el que sigue:

que realiza lo anteriormente mencionado es el que sigue: 3.3.2.2.- Cálculo de la energía Para averiguar

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

el programa analiza doscientas cincuenta y seis muestras Reconocedor automático de comandos por medio del habla

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto de la grabación (ventaneo) y por medio de la Ec. 2.12
Capítulo 3: Desarrollo del proyecto de la grabación (ventaneo) y por medio de la Ec. 2.12

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.

del código correspondiente al cálculo de la energía. La variable inc se inicializa en cero para

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.

150 es la distancia de traslpamiento entre dichas ventanas. Reconocedor automático de comandos por medio del

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Fig. 3.23.- Diagrama de flujo para el cálculo de la energía.
Capítulo 3: Desarrollo del proyecto Fig. 3.23.- Diagrama de flujo para el cálculo de la energía.
Capítulo 3: Desarrollo del proyecto Fig. 3.23.- Diagrama de flujo para el cálculo de la energía.

Fig. 3.23.- Diagrama de flujo para el cálculo de la energía.

3.23.- Diagrama de flujo para el cálculo de la energía. Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto La variable tvent vale 256, debido a que con este tamaño
Capítulo 3: Desarrollo del proyecto La variable tvent vale 256, debido a que con este tamaño

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.

for se inicializa la variable sum asignándole un cero. Después se inicia un for anidado en

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.

intervalo de las 27965 muestras que comprenden la señal. Una vez establecida esta condición puede realizarse

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.

resultado se asigna a uno de los 185 valores del vector E . Reconocedor automático de
resultado se asigna a uno de los 185 valores del vector E . Reconocedor automático de

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Para finalizar el for principal se incrementa la variable inc sumándole
Capítulo 3: Desarrollo del proyecto Para finalizar el for principal se incrementa la variable inc sumándole

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.

otras 256 muestras a partir de dicho desplazamiento. Una vez que se ha realizado el análisis

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.

el programa continuará con las funciones que le siguen. Fig. 3.24.- Ventana con el mensaje “No
el programa continuará con las funciones que le siguen. Fig. 3.24.- Ventana con el mensaje “No

Fig. 3.24.- Ventana con el mensaje “No se ha dicho ningún comando”.

con el mensaje “No se ha dicho ningún comando” . Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto 3.3.2.3.- Normalización y cálculo de los LPC La normalización consiste en
Capítulo 3: Desarrollo del proyecto 3.3.2.3.- Normalización y cálculo de los LPC La normalización consiste en

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).

llamada “Dominio en el Tiempo” (ver Fig. 3.25). Fig. 3.25.- Despliegue de información y señal en

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).

llamada “Procesamiento de la Señal” (ver Fig. 3.26). Fig. 3.26.- Gráfica de los LPC de la

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”.

de la GUI denominada “ Procesamiento de la Señal ”. Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Lo anterior se ve desarrollado en el diagrama de flujo de
Capítulo 3: Desarrollo del proyecto Lo anterior se ve desarrollado en el diagrama de flujo de

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.

del procedimiento anterior se muestra a continuación. Ya normalizado el mensaje, se crea un archivo .

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.

mgra del comando a la frecuencia de muestreo fmen . A continuación, se leen las propiedades

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

(“graba.wav”). A la variable handles.mr se le Reconocedor automático de comandos por medio del habla para

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto asignan las muestras por si la señal es modificada por el
Capítulo 3: Desarrollo del proyecto asignan las muestras por si la señal es modificada por el

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.

para regresar a la forma original de la señal. Una vez adquiridos estos datos, se obtiene

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.

en el Tiempo” por medio de las siguientes líneas. Después, la función lpc(handles.m,18 ) retorna 19

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”.

de la interfaz gráfica “Procesamiento de la Señal” . Reconocedor automático de comandos por medio del

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Fig. 3.27.- Diagrama de flujo para la normalización y cálculo de
Capítulo 3: Desarrollo del proyecto Fig. 3.27.- Diagrama de flujo para la normalización y cálculo de
Capítulo 3: Desarrollo del proyecto Fig. 3.27.- Diagrama de flujo para la normalización y cálculo de
Capítulo 3: Desarrollo del proyecto Fig. 3.27.- Diagrama de flujo para la normalización y cálculo de

Fig. 3.27.- Diagrama de flujo para la normalización y cálculo de los LPC.

de flujo para la normalización y cálculo de los LPC. Reconocedor automático de comandos por medio

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto 3.3.2.4.- Cálculo del error cuadrático medio La cuarta sección del programa
Capítulo 3: Desarrollo del proyecto 3.3.2.4.- Cálculo del error cuadrático medio La cuarta sección del programa

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.

Lo anterior se plasma en el diagrama de flujo Fig. 3.28. Fig. 3.28.- Diagrama de flujo

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.

los resultados de la operación del error cuadrático medio. Reconocedor automático de comandos por medio del
los resultados de la operación del error cuadrático medio. Reconocedor automático de comandos por medio del
los resultados de la operación del error cuadrático medio. Reconocedor automático de comandos por medio del
los resultados de la operación del error cuadrático medio. Reconocedor automático de comandos por medio del

Capítulo 3: Desarrollo del proyecto

Capítulo 3: Desarrollo del proyecto Después se inicia un for , asignado para realizar el cálculo
Capítulo 3: Desarrollo del proyecto Después se inicia un for , asignado para realizar el cálculo

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,

comando de la base de datos y es el total de coeficientes de la señal (en este caso

19).

es el coeficiente del

de la señal (en este caso 19). es el coeficiente del 3.3.2.4.- Determinación del comando Una

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

del árbol se encuentra el usuario. Si handles.narbol es Reconocedor automático de comandos por medio del