Story Transcript
i
APLICACIONES EN RECONOCIMIENTO DE VOZ UTILIZANDO HTK
T.G. 0446
AUTOR: IVÁN HORACIO VILLAMIL ESPINOSA.
SANTA FE DE BOGOTA DC. PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA DEPARTAMENTO DE ELECTRONICA MAYO DE 2005.
ii
APLICACIONES EN RECONOCIMIENTO DE VOZ UTILIZANDO HTK
T.G. 0446
AUTOR: IVÁN HORACIO VILLAMIL ESPINOSA.
DIRECTOR: PEDRO RAÚL VIZCAYA GUARÍN. PHD. DIRECTOR MAESTRÍA EN INGENIERÍA ELECTRÓNICA.
SANTA FE DE BOGOTA DC. PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA DEPARTAMENTO DE ELECTRONICA MAYO DE 2005.
iii
ADVERTENCIA
ARTÍCULO 23 DE LA RESOLUCIÓN No. 13 DE JUNIO DE 1946
“La universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus proyectos de grado. Sólo velará porque no se publique nada contrario al dogma y la moral católica y porque los trabajos no contengan ataques o polémicas puramente personales. Antes bien, que se vea en ellos el anhelo de buscar la verdad y la justicia”.
iv
TABLA DE CONTENIDO
INTRODUCCIÓN................................................................................................................ 1 1.
2.
3.
MARCO TEÓRICO................................................................................................. 5 1.1
RECONOCIMIENTO DE PALABRAS AISLADAS ..................................... 5
1.2
RECONOCIMIENTO DE VOZ CONECTADA ............................................. 6
1.3
PARAMETRIZACION DE LAS SEÑALES DE VOZ ................................... 6
1.4
RECONOCIMIENTO DE VOZ BASADO EN HMMS. ................................. 7 1.4.1
Especificaciones de los HMMs................................................................ 8
1.4.2
Entrenamiento - Reconocimiento usando HMM................................... 10
1.4.3
El problema de Entrenamiento .............................................................. 11
1.4.4
El problema de reconocimiento ............................................................. 12
ESPECIFICACIONES .......................................................................................... 15 2.1
PALABRAS AISLADAS .............................................................................. 15
2.2
DÍGITOS CONECTADOS. ........................................................................... 17
DESARROLLOS.................................................................................................... 21 3.1
APLICACIÓN DE PALABRAS AISLADAS . ........................................................... 22 3.1.1
Grabación de la Señal de Voz. ............................................................... 22
3.1.2
Etiquetas de las Señales de Voz............................................................. 23
3.1.3
Análisis Acústico ................................................................................... 24
3.1.4
Definición de los HMMs. ...................................................................... 25
3.1.5
Entrenamiento de los HMMs................................................................. 26 3.1.5.1
Inicialización............................................................................. 27
3.1.5.2
Entrenamiento. .......................................................................... 28
v
3.1.6
Diccionario y Gramática........................................................................ 29 3.1.6.1
3.2
3.3 4.
La Red. ...................................................................................... 30
3.1.7
Reconocimiento. .................................................................................... 30
3.1.8
Evaluación del Reconocedor ................................................................. 31 3.1.8.1
Archivos de Etiqueta Maestros. ................................................ 31
3.1.8.2
Tasa de Reconocimiento ........................................................... 32
APLICACIÓN DE DÍGITOS CONECTADOS. ......................................................... 32 3.2.1
Definición de la Tarea del Reconocedor. Gramática y Diccionario..... 33
3.2.2
Grabación de las Señales de Voz. .......................................................... 35
3.2.3
Etiquetas de las Señales de Voz............................................................. 35
3.2.4
Codificación de los Datos...................................................................... 37
3.2.5
Creación de los Monofonemas. ............................................................. 37
3.2.6
Mejorando los Modelos de Silencio. ..................................................... 39
3.2.7
Re-alineamiento de los Datos de Entrenamiento. .................................. 41
3.2.8
Construcción de los Trifonemas desde los Monofonemas. ................... 42
3.2.9
Creación de los Estados Atados de los Trifonemas............................... 43
3.2.10
Reconocimiento de los Datos de Prueba.............................................. 45
INTERFAZ GRÁFICA DE HTK........................................................................... 46
ANÁLISIS DE RESULTADOS ............................................................................ 48 4.1
HERRAMIENTA DE ANÁLISIS ........................................................................... 49
4.2
EVALUACIÓN DEL PROCESO DE ENTRENAMIENTO DE LOS HMMS. .................... 57 4.2.1
Tiempo Empleado en la Inserción de las Etiquetas de las Palabras ...... 57
4.2.2
Herramienta Utilizada............................................................................ 58
4.2.3
Recursos en Tiempo y Memoria de la Ejecución de las Herramientas
Utilizadas ....................................................................................................... 59
5.
4.3
EVALUACIÓN DEL PROCESO DE RECONOCIMIENTO .......................................... 60
4.4
EVALUACIÓN DE LA COMPLEJIDAD EN LA EJECUCIÓN DE LAS HERRAMIENTAS 61
CONCLUSIONES .................................................................................................. 64 5.1
POSIBLES MEJORAS ......................................................................................... 66
5.2
TRABAJOS FUTUROS ....................................................................................... 67
vi
6.
BIBLIOGRAFÍA.................................................................................................... 69 6.1
REFERENCIAS DE INTERNET ............................................................................ 69
6.2
REFERENCIAS BIBLIOGRÁFICAS ...................................................................... 69
ANEXO A. DESARROLLO DE LAS APLICACIONES.............................................. 71 A.1. DESARROLLO DE LA APLICACIÓN DE PALABRAS AISLADAS EN HTK. .................................................................................................................................. 71 A.1.1. Creación de un Cuerpo de Entrenamiento. ............................................ 71 A.1.2. Análisis Acústico ................................................................................... 72 A.1.3. Definición de los HMMs. ...................................................................... 73 A.1.4, Entrenamiento de los HMMs. ................................................................ 73 A.1.4.1. Inicialización ............................................................................. 74 A.1.4.2. Entrenamiento. .......................................................................... 75 A.1.5. Diccionario y Gramática........................................................................ 76 A.1.6. Reconocimiento. .................................................................................... 77 A.1.7. Tasa de Error.......................................................................................... 78 A.2. DESARROLLO DE LA APLICACIÓN DE DÍGITOS CONECTADOS EN HTK. ................ 79 A.2.1. La Gramática.......................................................................................... 79 A.2.2. El Diccionario ........................................................................................ 80 A.2.3. Etiquetas de las Palabras........................................................................ 80 A.2.4. Creación de los Archivos de Transcripción. .......................................... 81 A.2.5. Codificación de los Datos. ..................................................................... 83 A.2.6. Creación de los Modelos de los Monofonemas. .................................... 83 A.2.7. Arreglando los Modelos de Silencio...................................................... 87 A.2.8. Realineamiento de los Datos de Entrenamiento. ................................... 89 A.2.9. Creación de los Trifonemas desde los Monofonemas. .......................... 90 A.2.10. Creando Estados Atados de los Trifonemas. ....................................... 92 A.2.11 Reconocimiento. ................................................................................... 94 ANEXO B. RECONOCIMIENTO DE SEÑALES RUIDOSAS ................................... 96 B.1 TASAS DE RECONOCIMIENTO OBTENIDAS ............................................... 96 B.1.1 Aplicación de Palabras Aisladas. ............................................................ 97
vii
B.1.2 Aplicación de Dígitos Conectados. ......................................................... 99 B.1.3 Reconocimiento a Nivel de Fonemas.................................................... 100 B.2. Conclusiones de los Sistemas Reconocedores ........................................ 103 B.2.1. Palabras Aisladas........................................................................ 103 B.2.2. Dígitos Conectados..................................................................... 103 ANEXO C. LIBRETO DE GRABACION DE LAS BASES DE DATOS.................. 105 C.1. GRABACIONES BASE DE DATOS DE ENTRENAMIENTO Y PRUEBA DE LA APLICACIÓN DE PALABRAS AISLADAS ................................................. 105 C.2. GRABACIONES BASE DE DATOS DE ENTRENAMIENTO APLICACIÓN DE DIGITOS CONECTADOS .............................................................................. 105 C.3. GRABACIONES BASE DE DATOS DE PRUEBA APLICACIÓN DE DIGITOS CONECTADOS .................................................................................... 108 ANEXO D. RECURSOS DE MEMORIA UTILIZADOS POR LA HERRAMIENTA HVITE ............................................................................................................................... 110 D.1. ORGANIZACIÓN DE LA MEMORIA UTILIZADA POR HVITE................ 110
viii
LISTA DE FIGURAS
Figura 1. Reconocimiento de palabras aisladas.................................................................... 5 Figura 2. Generación de los Modelos de Markov de Izquierda a Derecha. ......................... 9 Figura 3. Representación de la Densidad Gaussiana.......................................................... 10 Figura 4. Diagrama en Bloques Fase de entrenamiento. .................................................... 16 Figura 5. Diagrama en Bloques Etapa de Reconocimiento. ............................................... 16 Figura 6. Diagrama de Bloques Fase de Entrenamiento. ................................................... 17 Figura 7. Diagrama en Bloques de la Etapa de Reconocimiento. ...................................... 18 Figura 8. Interfaz Gráfica al invocar la herramienta Hslab................................................ 23 Figura 9. Topología básica de los HMMs. ......................................................................... 25 Figura 10. Diagrama de Flujo: Procedimiento completo de entrenamiento....................... 26 Figura 11. Diagrama de flujo: Inicialización de los parámetros de los HMM. .................. 28 Figura 12. Diagrama en flujo: Re-estimación de los parámetros de los HMM. ................. 29 Figura 13. Red de tarea del Reconocedor de palabras aisladas.......................................... 30 Figura 14. Red de Trabajo de las Palabras en la Aplicación de Dígitos Conectados......... 34 Figura 15. Etiquetas de las Señales de Voz con Hslab....................................................... 36 Figura 16. Topología de los HMMs de Izquierda a Derecha de 3 Estados Emisores. ....... 38 Figura 17. Inserción de las Etiquetas, Análisis Acústico, Inicialización de los HMMs y Entrenamiento de los Monofonemas. ............................................................................ 39 Figura 18. Topología de los Modelos de Silencio Corto Sp............................................... 40 Figura 19. Entrenamiento, alineamiento de los datos con el modelo sp y creación de los trifonemas. ..................................................................................................................... 41 Figura 20. Diagrama en bloques del Entrenamiento de los Trifonemas. ........................... 45 Figura 21. Pantalla de Inicio del Programa. ....................................................................... 46 Figura 22. Segunda Pantalla de la Interfaz. ........................................................................ 47
ix
Figura 23. Resultado de la Aplicación de Palabras Aisladas en Formato HTK................. 50 Figura 24. Resultado de la Aplicación de Dígitos Conectados en Formato HTK.............. 50 Figura 25. Resultado a Nivel de Fonemas Aplicación Dígitos Conectados en Formato HTK ............................................................................................................................... 51 Figura 26. Resultado de la Aplicación de Palabras Aisladas en Formato NIST. ............... 51 Figura 27. Resultado Aplicación Dígitos Conectados en Formato NIST. ......................... 52 Figura 28. Resultado a Nivel de Fonemas Aplicación Dígitos Conectados en Formato NIST............................................................................................................................... 52 Figura 29. Matriz de Confusión de la Aplicación de Palabras Aisladas. ........................... 53 Figura 30. Matriz de Confusión del Resultado de la Aplicación de Dígitos Conectados. . 53 Figura 31. Matriz de Confusión de Reconocimiento de fonemas de la Aplicación de Dígitos Conectados. ....................................................................................................... 53 Figura 32. Representación de las Transcripciones Alineadas de la aplicación de Dígitos Conectados..................................................................................................................... 55 Figura 33. Contenido del Archivo de Configuración. ........................................................ 71 Figura 34. Contenido del Archivo listamfcc.txt. ................................................................ 72 Figura 35. Ejemplo de un Archivo de descripción de HMM. ............................................ 73 Figura 36. Contenido del Diccionario Utilizado en la Aplicación de Palabras Aisladas... 76 Figura 37. Contenido del archivo Hmmdefs.mmf.............................................................. 78 Figura 38. Ejemplo de un Archivo de Etiqueta Maestro. ................................................... 79 Figura 39. Gramática Utilizada en la Aplicación de Dígitos Conectados. ......................... 79 Figura 40. Contenido del Diccionario Utilizado en la Aplicación de Dígitos Conectados. ....................................................................................................................................... 80 Figura 41. Ejemplo de un Archivo MLF con Transcripciones Asociadas......................... 81 Figura 42. Transcripciones de Nivel fonético. ................................................................... 82 Figura 43. Topología de los HMMs Utilizados.................................................................. 84 Figura 44. Contenido de Archivo configuracion2.txt......................................................... 85 Figura 45. Creación del Archivo de Descripción de los HMMs con extensión MMF....... 86 Figura 46. Contenido del Archivo Macros......................................................................... 86 Figura 47. Gráfica de las Tasas de Reconocimiento vs. SNR de la Aplicación de Palabras Aisladas.......................................................................................................................... 98
x
Figura 48. Tasa de los Tipos de Errores vs. SNR Aplicación Palabras Aisladas............... 98 Figura 49. Gráfica de las Tasas de Reconocimiento vs. SNR de la Aplicación Dígitos Conectados................................................................................................................... 100 Figura 50. Tipo De Errores vs. SNR Aplicación Dígitos Conectados. ............................ 100 Figura 51. Gráfica de las Tasas de Reconocimiento de fonemas vs. SNR de la Aplicación de Dígitos Conectados. ................................................................................................ 102 Figura 52. Gráfica de la Tasa de los Tipos De Errores vs. SNR Aplicación Dígitos Conectados a Nivel de Fonemas.................................................................................. 102 Figura 53. Estado de la Memoria Antes de la Inicialización............................................ 110 Figura 54. Estado de la Memoria Después del Reconocimiento ...................................... 111 Figura 55. Estado Final de la Memoria ............................................................................ 111
xi
LISTA DE TABLAS
Tabla 1. Grupos de herramientas de HTK Utilizadas en las Aplicaciones......................... 21 Tabla 2. Calculo de los resultados Obtenidos en Formato Básico de HTK y NIST........... 52 Tabla 3. Recursos de Memoria de las Herramientas de Entrenamiento. ............................ 60 Tabla 4. Comportamiento del Reconocedor de Palabras aisladas Frente al Ruido. ........... 97 Tabla 5. Número de Palabras Correctamente Reconocidas, Errores por Inserción y por Omisión de las Bases de Datos con SNRs en la Aplicación de Palabras Aisladas........ 99 Tabla 6. Comportamiento del Reconocedor de Dígitos Conectados Frente al Ruido. ....... 99 Tabla 7. Fonemas Reconocidos Correctamente, Errores por Inserción y Omisión, ......... 101
1
INTRODUCCIÓN
Durante las últimas décadas se ha estudiado la posibilidad de desarrollar interfaces hombremáquina controlados por la voz para sustituir en ciertas aplicaciones a las interfaces tradicionales basadas en teclados, paneles o dispositivos similares. El Reconocimiento Automático de Voz (ASR) es un campo de investigación de creciente relevancia que día a día gana más adeptos. Los reconocedores actuales manejan cada vez vocabularios más grandes, logran menores tasas de error en reconocimiento y menores tiempos de procesamiento gracias al uso de algoritmos más eficientes, a la aparición de equipos más potentes y económicos, y al aumento de complejidad de estos sistemas, al emplearse modelados más sofisticados y refinados. No obstante, a pesar de los grandes avances realizados, se está todavía muy lejos de un sistema de reconocimiento automático de voz universal que funcione bien en cualquier aplicación a la que sea destinado.
A través de los años se han desarrollado diferentes tipos de programas para reconocimiento de voz que utilizan múltiples herramientas matemáticas como lo son: Dinamic time Warping (DTW), modelos ocultos de Markov (HMM), redes neuronales, entre otros. Existen una serie de programas de bastante uso en el área de reconocimiento de voz: HTK [1], AT&T FSM Library [2], CMU-Cambridge Statistical LM Toolkit [3], CMU Sphinx [4], CSLU toolkit [5], entre otros.
Hoy en día la mayoría de los sistemas reconocedores en funcionamiento, se basan en la técnica de modelos ocultos de Markov HMM, debido a que requieren menos memoria física, ofrecen mejor tiempo de respuesta y una menor tasa de error con respecto a otras herramientas matemáticas utilizadas en reconocimiento de voz. En este caso el reconocimiento es basado en la comparación de unos patrones de referencia denominados
2
modelos con los vectores de características generados para la palabra a reconocer. Al utilizar modelos ocultos de Markov se hace necesario construirlos, esta construcción tiene como contrapartida una fase de entrenamiento lenta, pero genera muy buenos resultados en reconocimiento. La herramienta denominada “Hidden Markov Model Toolkit”1, es
utilizada para el
entrenamiento de los HMMs y el reconocimiento de voz en general. La primera versión fue desarrollada por “Speech Vision and Robotics Group” del “Cambridge University Engineering Department” (CUED) 2 en 1989 por Steve Young, consiste en un conjunto de programas, módulos y librerías escritas en lenguaje C. Estos fueron concebidos inicialmente para ser utilizados en ASR3, pero también se han utilizado en otras numerosas aplicaciones tales como síntesis del habla, reconocimiento de secuencias de DNA, reconocimiento de caracteres [Toselli04], etc.
HTK es uno de los programas más
completos y utilizados no sólo en el Reino Unido, también en Europa y Norte América; ha sido adoptado para varios tipos de idiomas como el danés [Frans04], alemán [Oba03], español, etc., debido a que se puede entrenar y adaptar con cualquier vocabulario y acento.
El programa HTK permite utilizar diferentes metodologías de entrenamiento de los HMMs. Debido a esto en el proyecto se propuso la posibilidad de utilizar la herramienta HTK en el proceso de construcción de dos aplicaciones de reconocimiento automático de voz, las cuales son: reconocimiento de palabras aisladas [Morales04] y reconocimiento de dígitos conectados. El objetivo principal de la construcción de los reconocedores, es explotar el uso de las herramientas utilizadas en el proceso.
Con esto se busca brindar una
metodología de desarrollo, documentándola por medio de este proyecto.
El primer enfoque que se presenta es el de reconocer palabras aisladas, es decir que las palabras se pronuncian entre silencios de tal forma que el procesamiento se realiza teniendo como unidades lingüísticas las palabras de un vocabulario específico, reconociendo una palabra ante una señal de entrada. Este tipo de reconocedores tiene muchas aplicaciones, 1 2
3
Software HTK. http://htk.eng.cam.ac.uk.
Reconocimiento automático de habla.
3
por ejemplo se pueden utilizar en la ejecución de comandos dictados a una máquina para realizar una tarea deseada.
Debido a esto se escogieron las palabras prender, apagar,
cancelar, si y no para que formaran parte del vocabulario del reconocedor, y así simular los comandos básicos para prender y apagar una máquina, con opción de cancelar la orden y de confirmarla por medio de los comandos cancelar, si y no.
El segundo enfoque del trabajo fue el de reconocer una cadena de 6 números del cero al nueve, pronunciados de manera continua. Esta aplicación se llama dígitos conectados y es una aproximación al reconocimiento de habla continua. En esta clase de aplicaciones no se reconoce el modelo de la palabra en sí, sino se reconocen las palabras bajo el nivel de fonemas, dado que estos representan la unidad básica del habla. Por lo tanto esta clase de reconocedores requieren más trabajo en su construcción con respecto a los reconocedores de palabras aisladas. Una aplicación de este tipo de reconocedores es la del marcado automático del teléfono por medio de la voz.
Los sistemas reconocedores propuestos tienen la característica de ser dependientes del locutor, es decir sólo se reconoce la voz de una persona en particular. En un sistema dependiente del locutor es más probable que el porcentaje de reconocimiento sea mayor. Las muestras que va a tener el reconocedor sólo pertenecerán a un locutor, lo cual hace más fácil la tarea de reconocer el vocabulario. Además, otra especificación de los siste mas reconocedores es la no robustez. Esto significa que el sistema tendrá un comportamiento muy sensible al ruido, por lo tanto su rendimiento se degradará en entornos ruidosos.
HTK presenta una desventaja debido a que esta herramienta se ejecuta mediante comandos de línea desde DOS, por lo tanto el sistema presenta poca amabilidad para realizar el proceso de construcción de los reconocedores. Debido a la gran cantidad de archivos que se manipulan, los procesos pueden llegar a ser largos y complejos en su construcción. Por lo tanto el proyecto propuso el desarrollo de una interfaz amigable, para guiar al usuario paso por paso en las diferentes fases empleadas para la construcción de los reconocedores propuestos. Esta interfaz se realizó bajo el código de Visual Basic, consiguiendo que la
4
información suministrada por el usuario se limite al vocabulario del reconocedor, con características típicas de cada aplicación.
En este informe se detalla el proceso realizado para la construcción de los reconocedores de palabras aisladas y de dígitos conectados, además de la interfaz desarrollada. En el capítulo 1 se realiza una breve descripción de la teoría de reconocimiento de palabras aisladas y dígitos conectados, además se explica el reconocimiento de voz utilizando modelos ocultos de Harkov y sus diferentes componentes; en el capítulo 2 se presenta por medio de diagramas de bloques el proceso global realizado para la construcción de los dos reconocedores, además se presentan las características principales con que fueron desarrolladas; el capítulo 3 presenta en forma detallada los pasos que fueron ejecutados en cada una de las aplicaciones para llegar al resultado final; el capítulo 4 presenta los resultados obtenidos en los procesos de reconocimiento de cada aplicación, además muestra el análisis realizado en cada uno de los reconocedores frente a diferentes señales; el capítulo 5 plantea las conclusiones de los resultados obtenidos al utilizar la herramienta HTK, además presenta las posibles mejoras de los reconocedores y la interfaz, luego se describen los trabajos a futuro; el capítulo 6 presenta la bibliografía utilizada en el proyecto.
5
1.
MARCO TEÓRICO
Este proyecto abarca dos aplicaciones de reconocimiento de voz, aislado y concatenado. La teoría de cada forma de reconocimiento de voz mencionada anteriormente se explica a continuación.
1.1
RECONOCIMIENTO DE PALABRAS AISLADAS 4
En este tipo de reconocimiento se asume que el locutor pronuncia de forma deliberada palabras con pausas suficientemente grandes entre ellas. El hecho de que se puedan localizar de forma sencilla las fronteras entre palabras simplifica mucho la tarea de reconocimiento. En la Figura 1., se puede observar la forma más simple de estrategia de reconocimiento de habla, la cual es la de reconocimiento de palabras aisladas.
Figura 1. Reconocimiento de palabras aisladas.5
4 5
Referencia [Fernandez01]. Figura tomada de HTKbook. [Young02]
6
En donde la forma de onda de voz de la palabra a reconocer, se parametriza, luego se divide en los coeficientes, los cuales contienen la información de las características acústicas de la voz y finalmente este conjunto se encuentra listo para el reconocimiento final.
Es muy conveniente para ciertas aplicaciones, particularmente aquellas en las que se envían órdenes a una máquina a través de comandos consistentes en una palabra de un pequeño vocabulario.
1.2
RECONOCIMIENTO DE VOZ CONECTADA 6
En aplicaciones de reconocimiento de voz continua con pequeños vocabularios, a veces se utiliza el denominado reconocimiento de voz conectada. El término “voz conectada” se refiere a la estrategia de reconocimiento más que a la voz en sí misma. En general, la voz se pronuncia de una forma continua.
En esta técnica, la oración se decodifica conectando modelos y comparando la declaración completa con esos modelos concatenados. El sistema normalmente no intenta modelar efectos alofónicos presentes en las fronteras de las palabras, ni efectos de coarticulación intra- e inter- palabras. Hay una hipótesis implícita que es que aunque no se pueden localizar fronteras inequívocas entre palabras, las palabras están razonablemente bien articuladas.
1.3
PARAMETRIZACION DE LAS SEÑALES DE VOZ
El objetivo de la caracterización paramétrica de las señales de voz es transformar la voz de entrada en un conjunto de vectores que contengan toda la información discriminatoria presente en la señal.
6
Referencia [Fernandez01].
7
Los Coeficientes Cepstrum en la Escala Mel (MFCCs - Mel-Frequency Cepstral Coefficients) han mostrado, en reconocimiento de voz, un rendimiento superior a otras técnicas de parametrización, como la técnica LPC.
Para el cálculo MFCC se utiliza
normalmente un determinado número de filtros triangulares paso-banda con un gran solape. Estos filtros están equiespaciados en la escala Mel de frecuencias. La salida de cada filtro se puede considerar que representa la energía de la señal dentro de la banda de paso de dicho filtro. Para calcular los parámetros MFCC se aplica una transformada discreta de coseno a las salidas de log-energía de estos filtros.
ci =
2 N
N
∑m j =1
j
iπ cos ( j − 0 .5 ) N
(1.1)
donde N es el número de filtros del banco de filtros y mj son las amplitudes del banco de filtros logarítmico.
Si una determinada señal de voz se parametriza en T vectores de observación, representados por O = {o1, o2, . . . , oT }, entonces se puede calcular la verosimilitud de generar esta señal de voz utilizando una determinada secuencia de estados S = {s1, s2, . . . , sT } dado el anterior HMM.
Dicha verosimilitud está dada por el producto de la
verosimilitud de que cada observación ot sea generada por su estado asociado st, y la probabilidad de la secuencia de estados calculada a partir de las probabilidades de transición.
1.4
RECONOCIMIENTO DE VOZ BASADO EN HMMS. 7
Los modelos ocultos de Markov (HMM) son modelos estadísticos que pueden representar procesos aleatorios paramétricos. Estos son el enfoque estocástico más popular y con mayor éxito en el ámbito del reconocimiento de voz.
7
Referencias [Rabiner86] y [Deller93]
8
Un modelo oculto de Markov está compuesto de dos elementos básicos: un proceso de Markov y un conjunto de distribuciones de probabilidad de salida. Los estados del proceso de Markov están “ocultos” pero son observables de una manera indirecta a partir de la secuencia de vectores con información espectral extraídos de la señal de voz de entrada.
Los HMM en reconocimiento de voz se utilizan teniendo en cuenta dos hipótesis:
1. La voz se puede dividir en segmentos, estados, en los que la señal de voz se puede considerar estacionaria. Es decir, en la ventana de análisis la señal mantiene la estructura de principio a fin. Se asume que las transiciones entre segmentos contiguos son instantáneas. 2. La probabilidad de observación de que un vector de características se genere depende sólo del estado actual y no de símbolos anteriores. Esta es una suposición de Markov de primer orden, denominada hipótesis de independencia. Ninguna de estas hipótesis es cierta para la señal de voz. Sin embargo, hasta el momento, los HMM estándar son los que se utilizan en la mayoría de los reconocedores de voz actuales.
1.4.1
Especificaciones de los HMMs
Un modelo oculto de Markov es una máquina de estados finita probabilística, es decir, un conjunto de estados conectados unos a otros por arcos de transición, con probabilidades asociadas a cada arco, mirar la Figura 2. En esta figura se puede observar un ejemplo de un modelo oculto de Markov tipo Bakis o de izquierda a derecha, con dos estados no emisores y cuatro estados emisores, es decir que emiten función de probabilidad.
9
Figura 2. Generación de los Modelos de Markov de Izquierda a Derecha.8
En cualquier instante de tiempo especificado se puede considerar que el sistema está en uno de los estados disponibles y que, a intervalos regulares de tiempo ocurre una transición a otro estado (o al mismo estado si este dispone de una transición a si mismo) conforme a las probabilidades asociadas a los arcos de transición. Asociado a cada estado también existe una función de densidad de probabilidad que define la probabilidad de emitir un vector de observación una vez que se entra en dicho estado del HMM.
Para una densidad Gaussiana Figura 3., la probabilidad de salida:
b j (ot ) = ∑c jm N (ot ;µ jm , ∑ jm ) M
m=1
8
Figura tomada de HTKbook. [Young02]
(1.2)
10
Figura 3. Representación de la Densidad Gaussiana.
En este proyecto, las especificaciones de HMMs utilizadas son las soportadas por la herramienta HTK para reconocimiento de voz conectada y aislada. Estas especificaciones limitan la arquitectura general de los HMM de la siguiente forma:
1. Las densidades de observación son Gaussianas multivariables continuas. 2. La topología del modelo considera un estado de entrada y otro de salida no emisores.
Los estados no-emisores en la topología de HMM propuesta en HTK se utilizan para facilitar la conexión de HMMs en el reconocimiento de voz conectada, y se denominan estados de entrada y salida del HMM.
1.4.2
Entrenamiento - Reconocimiento usando HMM
Los modelos ocultos de Markov [Rabiner86], se caracterizan por tres problemas que hay que resolver para que resulten modelos útiles en aplicaciones reales:
• Problema de evaluación. Dada una secuencia de observaciones y un modelo, se busca como calcular la probabilidad de que la secuencia observada haya sido producida por dicho modelo.
11
• Problema de estimación. Dada una secuencia de observaciones y un modelo, se busca como elegir una secuencia de estados que sea óptima en algún sentido. • Problema de entrenamiento. Dada una secuencia de observaciones de entrenamiento, se busca como obtener los parámetros del modelo de forma óptima.
Estos problemas se concretan en las dos fases de entrenamiento y reconocimiento.
1.4.3
El problema de Entrenamiento
El problema del entrenamiento implica la estimación de los parámetros del modelo λ , dada la secuencia de observación O = {o1, o2, . . . , oT } como datos de entrenamiento, tal que se maximice P(O| λ ). Típicamente, el método utilizado para lograr esto es la estimación Máxima Verosimilitud (ML - Maximum Likelihood). Para el caso de datos incompletos (tales como la secuencia oculta de estados) la estimación ML se puede calcular utilizando el algoritmo EsperanzaMaximización (EM). El caso particular del algoritmo EM para HMMs se conoce como algoritmo de Baum-Welch desarrollado por Baum y sus colegas [Baum66]. El algoritmo EM es una aproximación iterativa para el cálculo de máxima verosimilitud que se utiliza para encontrar en cada paso una estimación del conjunto de parámetros λ , y luego intenta maximizar la verosimilitud de generar los datos de entrenamiento utilizando el modelo, de tal modo que la nueva verosimilitud es mayor o igual a la previa. Al definir la secuencia de estados s como perteneciente a un espacio de secuencias de estado S, que incluye todas las posibles secuencias de estados, la maximización de la anterior verosimilitud se puede realizar maximizando una función auxiliar dada por:
^
∆
Q( λ , λ ) =
∑
^
P(O, s| λ ) log P(O, s| λ )
(1.3)
s∈S
La convergencia del anterior algoritmo fue probada en primer lugar por Baum [Baum66].
12
La anterior función auxiliar se puede expandir y descomponer en funciones auxiliares separadas que se pueden maximizar de forma independiente, para obtener estimaciones para las probabilidades de transición entre estados, los pesos de las mezclas y los parámetros de las Gaussianas para el HMM propuesto. En concreto, para la estimación de pesos y parámetros de Gaussiana se llega a las siguientes expresiones
T
^
µ=
∑L
^
∑=
∑L t =1
ik
(1.4)
∑ L (t ) i
t =1
T
(t )o t
ik
t =1 T
(t )(o t − µ ik )(ot − µ ik )T T
∑ L (t ) t =1
(1.5)
i
T
^
ω ik =
∑L t =1 T
ik
(t )
∑ Li(t )
(1.6)
t =1
donde Lik(t) es la probabilidad a posteriori de estar en la mezcla k del estado i en el instante t, y Li(t) es la probabilidad a posteriori de estar en el estados i en el instante t. También se pueden obtener ecuaciones para la estimación de las probabilidades de transición de estado.
1.4.4
El problema de reconocimiento
En la práctica, es preferible basar el reconocimiento en la secuencia de estados de mayor probabilidad que genera un conjunto dado de observaciones, ya que esto se generaliza de forma sencilla a la tarea de reconocimiento de voz conectada, mientras que el uso de la probabilidad total no lo hace.
El problema es encontrar:
13
arg max {P (ω i | O )}
(1.7)
i
Donde, de acuerdo a Bayes:
P (ω i | O ) =
P (O | ω i )P (ω i ) P (O )
(1.8)
Asumiendo que la secuencia de observaciones correspondiente a una palabra wi se genera por un modelo oculto de Markov λ i, para resolver el problema de reconocimiento se necesita calcular P(O| λ i). En este caso, se asume que:
P(O | ωi ) = P(O | λi )
(1.9)
T
= arg max π x bx (o1 ).∏ ax x bx (ot ) X
1
1
t =2
t −1 t
t
(1.10)
El cálculo eficiente de la anterior verosimilitud se puede realizar utilizando el denominado procedimiento Forward-Backward, que es un algoritmo recursivo. El paso forward de este algoritmo es suficiente para calcular P(O| λ i). Dado un modelo λ , se define un parámetro δ i(t) como la verosimilitud máxima de observar los vectores o1 a ot y estar en el estado i en el instante t. Esta verosimilitud parcial se puede calcular de forma eficiente utilizando la siguiente recursión: δ i(t) = max { δ j(t - 1)aji}bi(ot) j
(1.11)
Las condiciones iniciales en este caso son: δ 1(1) = 1
(1.12)
14
δ i(1) = a1ibi(o1) 2 ≤ i ≤ N – 1
(1.13)
El paso de terminación, la máxima verosimilitud, es δ N(T) = max { δ j(T)ajN} j
(1.14)
El mejor camino se puede obtener calculando la anterior mayor verosimilitud en cada instante de tiempo y manteniendo el camino de los argumentos que lo maximizan.
La anterior recursión forma la base del denominado algoritmo de Viterbi [Forney73].
15
2.
ESPECIFICACIONES
El objetivo del trabajo de grado es utilizar correctamente las herramientas que provee HTK para reconocimiento automático de voz. Se buscó entender el procedimiento de utilización de las herramientas y además la metodología para el proceso de construcción de sistemas reconocedores utilizando HTK, todo con el fin de documentar los procesos realizados. Para esto se propuso desarrollar dos aplicaciones de reconocimiento automático de voz, las cuales son: reconocimiento de palabras aisladas y reconocimiento de dígitos conectados. Para desarrollar las dos aplicaciones se siguió el proceso descrito en los diagramas de bloques, Figuras 4, 5, 6 y 7.
2.1
PALABRAS AISLADAS
El diagrama de bloques de un sistema de reconocimiento de voz de palabras aisladas se puede dividir en dos etapas importantes, las cuales son: etapa de entrenamiento y etapa de reconocimiento.
La etapa de entrenamiento es utilizada para construir y entrenar los modelos ocultos de Markov para cada palabra. Se realiza el proceso de grabación de bases de datos y análisis acústico de las señales de voz, donde se segmentan y parametrizan las señales. En la Figura 4. se pueden observar los bloques que conforman esta fase:
16
Figura 4. Diagrama en Bloques Fase de entrenamiento.
En la fase de reconocimiento se evalúa el rendimiento del reconocedor frente a una señal desconocida.
Tiene como entradas la red gramatical obtenida de la gramática del
reconocedor, el diccionario que contiene el vocabulario del reconocedor, los modelos entrenados los cuales conforman la salida de la etapa de entrenamiento y finalmente el análisis acústico de las señales que hacen parte de la base de datos de prueba. El bloque de reconocimiento tiene como salida las palabras reconocidas por el sistema, las cuales conforman la entrada del bloque de análisis, el cual las compara con las palabras que fueron insertadas, obteniendo las estadísticas del sistema reconocedor. En la Figura 5. se puede obsevar el proceso descrito:
Figura 5. Diagrama en Bloques Etapa de Reconocimiento.
17
2.2
DÍGITOS CONECTADOS.
La aplicación de dígitos conectados es más compleja y por lo tanto la aplicación consta de más elementos que en la aplicación de palabras aisladas.
En la primera fase de
entrenamiento de esta aplicación, se realiza el análisis acústico de las señales de voz de la misma forma en que se utiliza en la aplicación anterior. El entrenamiento se realiza a nivel de fonemas del español Colombiano. Luego se inserta el modelo de silencio corto sp, el cual modela cualquier pausa introducida por el locutor entre palabras y después se realiza el entrenamiento de este modelo junto con los modelos de los fonemas. Posteriormente se alinean los datos de entrenamiento con el algoritmo de Viterbi, donde se obtienen las transcripciones alineadas y se crean los modelos de los trifonemas, después se procede a entrenarlos y se genera el conjunto final de todos los modelos entrenados, los cuales son la entrada de la etapa de reconocimiento. En la Figura 6. se puede observar el proceso mencionado:
Figura 6. Diagrama de Bloques Fase de Entrenamiento.
En la fase de reconocimiento se obtienen las palabras reconocidas frente a una base de datos de prueba. Sigue el mismo proceso mencionado de la fase de reconocimiento de la aplicación de palabras aisladas. En la Figura 7. se puede observar el proceso:
18
Figura 7. Diagrama en Bloques de la Etapa de Reconocimiento.
Después de haber explicado los componentes del proceso de creación de de los reconocedores, se explicaran las características principales de los sistemas:
Locutor: Debido a que el sistema de reconocimiento para las dos aplicaciones fue planteado para ser un sistema dependiente del locutor (monolocutor), se escogió una persona diferente al desarrollador para grabar las bases de datos de entrenamiento y de prueba para cada aplicación. El locutor escogido fue una persona adulta y de género masculino.
Bases de datos: Las bases de datos de entrenamiento y de pruebas, fueron grabadas en un ambiente controlado libre de ruido, utilizando un estudio de grabación. Cada palabra del vocabulario, fue grabada en formato .wav (PCM de 16 bits y frecuencia de muestreo de 44.1 kHz). La base de datos de entrenamiento, de la aplicación de palabras aisladas tuvo como mínimo 79 repeticiones de cada palabra. En el caso de la aplicación de dígitos conectados se buscó que existiera un mínimo de 59 repeticiones por cada palabra.
El número de estados de HMM y el número de veces que se re-estimaron los parámetros, varío en cada aplicación. En el sistema reconocedor de palabras aisladas el número de estados de los modelos fue de seis, cuatro emisores y dos no emisores, y el número de reestimaciones de los parámetros fue de cuatro. En el caso de la aplicación de dígitos
19
conectados el número de estados de los modelos fue de cinco con tres estados emisores y dos no emisores, y el número de re-estimaciones embebidas fue de once.
En este trabajo de grado se utilizaron modelos ocultos de Markov de izquierda-derecha, los cuales fueron descritos en el marco teórico de este documento.
Como función de observación se utilizaron las densidades Gausianas multivariables continuas.
Tamaño del vocabulario: Para la aplicación de palabras aisladas, el tamaño del vocabulario fue de 5 palabras y para la aplicación de números conectados el tamaño del vocabulario fue de 10 palabras (cada número del cero al nueve).
o Palabras aisladas: El sistema es capaz de reconocer una de las palabras, SI, NO, PRENDER, APAGAR, y CANCELAR. o Dígitos Conectados: El sistema reconoce una secuencia de seis números.
La interfaz del programa HTK, fue desarrollada en un computador bajo la plataforma Windows. Para su ejecución se necesita como mínimo un procesador de 400 MHz y 128 M de RAM.
El sistema reconoce una palabra de un vocabulario reducido, la cual ha sido asignada como entrada a reconocer, cumpliendo con la mínima tasa de error descrita en el anteproyecto. Las entradas del sistema son las bases de datos (bases de datos para entrenamiento y para pruebas de reconocimiento); deben contener muestras de voz para el entrenamiento de los modelos ocultos de Markov y un conjunto pequeño de muestras de voz para su reconocimiento, éstas tienen que estar grabadas bajo el formato de audio .wav, sin importar su frecuencia de muestreo y número de bits.
20
La interfaz fue desarrollada de forma que guía al usuario paso por paso en el entrenamiento y reconocimiento de voz aislado y conectado.
Los pasos propuestos en el programa
siguieron el orden del desarrollo realizado en el trabajo de grado.
21
3.
DESARROLLOS
En este trabajo de grado, se desarrollaron dos sistemas de reconocimiento de voz: un reconocedor de palabras aisladas y un reconocedor de dígitos conectados, gracias a que el programa HTK permite utilizar diferentes metodologías de entrenamiento de los HMMs. Además se generó una interfaz gráfica del programa HTK para las dos aplicaciones propuestas.
Para la construcción de los sistemas, se utilizaron las herramientas de
preparación de datos, entrenamiento, reconocimiento y análisis de HTK. La construcción de los reconocedores permitió evaluar el proceso de utilización del programa HTK en los pasos necesarios para el desarrollo de los sistemas reconocedores, dado que el objetivo principal, que propuso este trabajo de grado, radica en explotar el programa como herramienta útil en el proceso de entrenamiento y reconocimiento automático de voz de las dos aplicaciones. Debido a esto, fue necesario familiarizarse con las herramientas, para poder ejecutarlas de manera correcta, por medio de un comando de línea. Se dividieron las herramientas utilizadas en los cuatro grupos descritos anteriormente, y los cuales se pueden observar en la Tabla 1.
GRUPO HERRAMIENTAS DE PREPARACION DE DATOS HERRAMIENTAS DE ENTRENAMIENTO
HERRAMIENTAS HSLAB, HCOPY, HLED. HINIT, HREST, HCOMPV, HHED, HVITE.
HERRAMIENTAS DE RECONOCIMIENTO
HVITE, HPARSE, HSGEN
HERRAMIENTAS DE ANALISIS
HRESULTS
Tabla 1. Grupos de herramientas de HTK Utilizadas en las Aplicaciones.
22
Una meta que buscó este trabajo de grado, fue la de facilitar la utilización del programa HTK, para personas interesadas en el área, logrando documentar los procesos realizados. Para un mejor entendimiento del desarrollo de las aplicaciones, en este capitulo se presentan y se explican teóricamente los pasos necesarios en la construcción de los reconocedores y en el Anexo A de este documento, se pueden observar los comandos de línea utilizados en cada uno de los pasos propuestos en este capitulo junto con su correspondiente explicación.
A continuación se expondrá el proceso desarrollado en cada aplicación.
3.1
APLICACIÓN DE PALABRAS AISLADAS.
Los principales pasos para la construcción de ésta aplicación son: •
Creación de una base de datos para entrenamiento.
•
Análisis acústico.
•
Definición de los modelos.
•
Entrenamiento de los modelos.
•
Definición de la tarea.
•
Reconocimiento de una señal de entrada desconocida, Base de datos de Prueba.
•
Evaluación del sistema Reconocedor.
3.1.1
Grabación de la Señal de Voz.
Primero se grabaron las señales de voz cuyos modelos de palabras fueron entrenados. Las palabras grabadas fueron SI, NO, PRENDER, APAGAR y CANCELAR.
Estas
grabaciones se realizaron en un estudio de grabación libre de ruido (ambiente controlado) y bajo el formato de audio .WAV. Cada palabra fue cuidadosamente grabada en medio de un silencio de inicio y un silencio final.
Las palabras grabadas en la base de datos de
entrenamiento, se repitieron 60 veces cada una. La base de datos de prueba, se grabo, bajo
23
las mismas condiciones y cada palabra se repitió un número de 20 veces. En general para la base de datos de entrenamiento se grabaron 299 señales de voz, y para la base de datos de prueba se obtuvieron 100 grabaciones en total.
Las señales de voz pertenecen a un sólo locutor masculino, debido a que la voz masculina presenta mejor comportamiento en el reconocimiento automático de voz.
3.1.2
Etiquetas de las Señales de Voz.
Cada señal de voz fue etiquetada, esto se realizó al asociar un texto (etiqueta) describiendo su contenido. Para etiquetar las señales, se utilizó la herramienta HSLab de HTK. Para la invocación de esta herramienta, fue necesario utilizar un archivo de configuración, para poder leer los archivos de voz en formato .wav. Al utilizar la herramienta HSLab, una interfaz gráfica se despliega en la pantalla, esta es la única interfaz que posee el programa. En la Figura 8. se puede observar la pantalla que aparece al invocar la herramienta Hslab:
Figura 8. Interfaz Gráfica al invocar la herramienta Hslab.
24
Para cada señal de voz, se etiquetaron, 3 regiones sucesivas: silencio de inicio, la palabra grabada, y un silencio final. En la figura se puede observar las 3 regiones que fueron etiquetadas, las cuales son: sil cancelar sil, respectivamente. Estas tres regiones no se pueden sobrelapar una con otra, pero no importa si existe un pequeño espacio entre ellas.
3.1.3
Análisis Acústico
Las herramientas de reconocimiento de voz de HTK, no pueden procesar las formas de onda de voz directamente sobre la señal, primero se deben parametrizar. Estas tienen que ser representadas en una forma más compacta y eficiente. Este paso es llamado “Análisis Acústico”. A continuación se presenta una explicación de lo realizado en este numeral, paso por paso: •
La señal fue segmentada en paquetes sucesivos, cuya longitud es de 30ms sobrelapandose 20ms sobre cualquier otra, logrando un 66.66% de sobrelapamiento.
•
Cada paquete fue multiplicado por la función de Hamming, utilizando ventanas de una misma duración.
•
Se extrajo un paquete de vectores de coeficientes acústicos, dando una representación compacta de las propiedades espectrales del paquete.
En este
proyecto se utilizó el análisis MFCC o análisis de los Coeficientes Cepstrales en la escala de Frecuencia Mel.
Se obtuvieron los primeros 12 coeficientes MFCC
[c1,…., c12], el coeficiente MFCC “nulo” (c0) el cual es proporcional al logaritmo de la energía total, 13 “coeficientes delta” y 13 “coeficientes de aceleración”. Todos los coeficientes en conjunto forman un vector de 39 coeficientes extraídos de cada señal de voz. •
El banco de filtros utilizado fue de 26 canales.
•
Las señales tuvieron un pre-énfasis de primer orden con un coeficiente de 0.97.
Lo anteriormente descrito, fue introducido como información, en un archivo de configuración para poder ejecutar correctamente algunas herramientas (Hcopy y Hslab).
25
Cabe resaltar que HTK permite utilizar otras clases de configuraciones. Se pueden utilizar funciones Gaussianas continuas o discretas, el porcentaje de sobrelapamiento esta a disposición del desarrollador y además se puede implementar otra clase de parametrizacion de la señal como lo es LPC.
La conversión desde la forma de onda original hacia una serie de vectores de coeficientes acústicos, se realizó con la herramienta HCopy de HTK.
3.1.4
Definición de los HMMs.
Se deben modelar eventos acústicos con los modelos ocultos de Markov [Rabiner66] para las palabras y el silencio (si, no, apagar, prender, cancelar y sil). Para cada una, se diseño un HMM. El primer paso para diseñarla es el de escoger una topología a priori para cada HMM:
-
Numero de estados.
-
Forma de las funciones de observación (Asociadas para cada estado).
-
Disposición de las transiciones entre estados.
No existe actualmente una regla fija para definir la topología [Deller93].
En esta
aplicación, se escogió la misma topología para cada uno de los HMMs, que se encuentra en la Figura 9.
Figura 9. Topología básica de los HMMs.9
9
Figura tomada de HTKbook.
26
El modelo consiste realmente de 4 estados “activos”, {S2, S 3, S 4, S5}: El primer y el ultimo estado (aquí S1 y S6), son estados “no emisores” (sin función de observación), usados por HTK para algunas facilidades de implementación. Las funciones de observación bi son distribuciones Gaussianas con matrices diagonales. Las transiciones de probabilidades son nombradas aij. En HTK un modelo oculto de Markov se describe en un archivo de texto siguiendo un estructura definida la cual se puede observar en el Anexo A del este documento.
3.1.5
Entrenamiento de los HMMs.
El procedimiento de entrenamiento está descrito en la Figura 10.
Figura 10. Diagrama de Flujo: Procedimiento completo de entrenamiento.
Para entrenar los modelos se utilizaron directorios de la forma HMMi, donde i hace referencia al número de veces que se han entrenado los modelos. El procedimiento de entrenamiento descrito anteriormente, toma los modelos inicializados en el directorio HMM0 y los entrena hasta llegar a la convergencia de los datos de entrenamiento. Este proceso se realizó hasta llegar al directorio HMM4.
A continuación se describe
detalladamente el proceso de entrenamiento utilizado en esta aplicación.
27
3.1.5.1 Inicialización
Antes de empezar el proceso de entrenamiento, los parámetros de los HMMs deben estar apropiadamente inicializados con los datos de entrenamiento para permitir una convergencia rápida y precisa
de los algoritmos de entrenamiento.
HTK ofrece 2
herramientas diferentes de inicialización: Hinit y HCompV. •
Hinit, inicializa los HMMs por alineación en tiempo de los datos de entrenamiento con el algoritmo de Viterbi [Forney73].
•
Hcompv, ejecuta una inicialización “absoluta” del modelo. Para cada estado de los HMMs la herramienta muestra la media y los vectores de varianza, estos son computados globalmente sobre todo el cuerpo de entrenamiento.
El proceso de inicialización en primer lugar, se realizó con la herramienta Hinit. Este proceso de inicialización se realizó para cada uno de los modelos propuestos.
Por otro lado también se invocó Hcompv, que además de inicializar los modelos tiene como salida un archivo llamado vFloors, el cual contiene la varianza global del vector multiplicada por un factor.
Los valores guardados en vFloors se utilizaron posteriormente durante el proceso de entrenamiento como valores piso para los vectores de varianza estimados. El valor piso fue usado, para prever que la varianza fuera muy pequeña y que por consecuencia causara un error numérico en los cálculos, según lo recomendado en el manual de HTK.
En general el proceso de la inicialización de los parámetros de los HMM está descrito en la Figura 11. Donde se utiliza el algoritmo de Viterbi para encontrar la secuencia de estados más probables que corresponda a cada muestra de la base de datos de entrenamiento, despues obtener la estimación y convergencia de los parámetros de los HMMs.
28
Figura 11. Diagrama de flujo: Inicialización de los parámetros de los HMM.10
3.1.5.2 Entrenamiento.
HTK provee una herramienta para el entrenamiento de los modelos ocultos de Markov, llamada HRest (Re-estimación por Baum-Welch [Baum66], la cual es utilizada para ejecutar una re-estimación e iteración de los valores óptimos para los parámetros de los HMM (probabilidades de transición, media y vectores de varianza para cada función de observación
El uso de esta herramienta se repitió continuamente en el transcurso del entrenamiento de cada HMM.
En cada ocasión, la iteración de HRest, muestra sobre la pantalla la
verosimilitud, indicando la convergencia, y además el cambio de la medida de ésta. En el preciso momento en el que ésta medida no disminuyo en valor absoluto, desde una iteración de HRest hacia otra, se procedió a detener el proceso.
La cantidad de re-
estimaciones utilizadas en este proyecto fue de 4.
En la Figura 12. Se puede observar el diagrama de flujo del entrenamiento de los modelos HMM.
10
Para mayor información acerca del proceso de inicialización de los HMMs referirse al manual de HTK pagina 120.
29
Figura 12. Diagrama en flujo: Re-estimación de los parámetros de los HMM.
Donde el algoritmo Forward/Backward, se encarga de encontrar la probabilidad de estar en un estado, en una ventana de tiempo. Finalmente la convergencia de los parámetros tendrá como consecuencia el resultado de los HMMs entrenados.
3.1.6
Diccionario y Gramática.
Antes de usar los modelos de palabras, se tiene que definir una arquitectura básica para el reconocedor (la tarea de gramática). Primero se definió la más simple: Un silencio inicial (sil), seguida de una sola palabra, y luego un silencio final (sil).
En HTK, la tarea de gramática se escribe en un archivo de texto, por medio de un lenguaje de programación llamado lenguaje Perl, mirar Anexo A. Por medio de la utilización de variables se puede definir la forma, en la que el sistema va a reconocer las palabras. El reconocedor debe reconocer a cual palabra corresponde cada una de las variables propuestas en la gramática. El listado de estas palabras fue introducido por medio del archivo del diccionario, el cual contiene todas las palabras que van a ser reconocidas.
30
3.1.6.1 La Red.
La tarea de gramática se compiló con la herramienta HParse para obtener la red de tarea. La red de la gramática, es la red que indica como se reconocerán las palabras, es decir, si se reconocerán después de un silencio inicial y un silencio final, etc. En el caso de palabras aisladas esta red es más sencilla que la red de la aplicación de números conectados. En la Figura 13. se puede observar la red utilizada en el sistema reconocedor de palabras aisladas de este proyecto:
Figura 13. Red de tarea del Reconocedor de palabras aisladas.
En la figura 13. se puede observar que los modelos de las palabras correspondientes al vocabulario del reconocedor, se reconocen en medio de un silencio de inicio y un silencio inicial, sin importar la duración del silencio. Cada modelo del vocabulario del reconocedor, se reconoce una sola vez. 3.1.7
Reconocimiento.
A continuación se describirá el proceso de reconocimiento:
31
- Primero se transformó una señal de voz de entrada (.wav), a una serie de “vectores acústicos”, con la herramienta HCopy, de la misma forma como se realizó con los datos de entrenamiento. - La entrada de observación se proceso posteriormente por el algoritmo de Viterbi, cuyas correspondencias se compararon con los modelos de Markov del reconocedor. Esto se llevo a cabo, ejecutando la herramienta HVite.
La salida de esta herramienta, presenta las etiquetas de las señales de entrada, es decir las palabras reconocidas por el sistema.
En este proyecto, de una señal de entrada, se
reconoció una palabra entre seis que forman el sistema. La palabra final es reconocida de forma correcta junto con el modelo sil. El modelo sil es reconocido varias veces, debido a que su tiempo de aparición en los archivos de audio varia mucho en cada uno.
3.1.8
Evaluación del Reconocedor
La evaluación del reconocimiento de un sistema reconocedor, debe ser medida sobre un conjunto de datos diferente del conjunto de entrenamiento.
Un conjunto de prueba
separado, con nuevas palabras grabadas (las mismas a reconocer y unas diferentes). De nuevo estas palabras deberán estar etiquetadas y convertidas a la parametrización utilizada en la etapa de entrenamiento.
3.1.8.1 Archivos de Etiqueta Maestros.
Antes de medir el rendimiento del reconocedor, se necesitan crear 2 archivos llamados archivos de etiqueta maestros “MLF”, cuya arquitectura se encuentra descrita en el Anexo A.
-
El primero deberá contener las transcripciones “correctas” de todo el cuerpo de prueba, estas son las transcripciones obtenidas al etiquetar manualmente.
32
-
La segunda deberá contener las transcripciones del reconocedor de todo el cuerpo de prueba, estas son, las transcripciones hipotéticas producidas por el reconocedor.
3.1.8.2 Tasa de Reconocimiento
La medida del rendimiento del reconocedor resultará de la comparación entre las transcripciones de referencia y las hipótesis de reconocimiento de cada dato. Estos son comparados al ejecutar la herramienta de evaluación HResults.
La salida es un archivo de texto el cual contiene las estadísticas de rendimiento del sistema reconocedor, como:
-
Estadísticas de reconocimiento sobre un archivo base.
-
Transcripciones alineadas en tiempo.
En el archivo de salida de esta herramienta, se puede observar los tipos de resultados que fueron obtenidos. Se presenta la tasa de reconocimiento de la oración, además se muestra la tasa de reconocimiento de las palabras.
En el caso de palabras aisladas, las dos tasas son del mismo valor debido a que la gramática sólo permite “oraciones” con una sola palabra (aparte de los silencios).
Esta es por
consiguiente, una tarea de reconocimiento de palabras aisladas.
3.2
APLICACIÓN DE DÍGITOS CONECTADOS.
A continuación se presentará la segunda aplicación de este proyecto, la cual es la de reconocimiento de dígitos conectados. Se presentarán los pasos que se tuvieron en cuenta para la ejecución de este sistema. Con respecto a la aplicación anterior, esta demandó mayor tiempo y trabajo debido a su complejidad, gracias a que el entrenamiento se realizo a
33
nivel de fonemas y trifonemas utilizando un modelo de silencio corto entre palabras. Toda la información de los comandos de línea y arquitectura de los archivos utilizados para la construcción de este reconocedor se pueden observar en el Anexo A de este documento.
El proyecto siguió los siguientes pasos para la finalización del reconocedor en esta aplicación: •
Definición de la tarea del reconocedor. Gramática y Diccionario.
•
Creación de las bases de datos de entrenamiento y de pruebas.
•
Etiquetas de las señales de voz.
•
Análisis acústico.
•
Definición de los modelos.
•
Entrenamiento de los modelos monofonemas.
•
Inserción del modelo de silencio corto.
•
Entrenamiento de los monofonemas con el silencio corto.
•
Construcción de los modelos de los trifonemas.
•
Entrenamiento de los trifonemas.
•
Reconocimiento a una señal desconocida.
•
Evaluación del reconocedor.
3.2.1
Definición de la Tarea del Reconocedor. Gramática y Diccionario.
La meta del sistema propuesto es la de reconocer una cadena de 6 dígitos del cero al nueve, donde esta información pertenece a la gramática del reconocedor.
HTK provee una
definición del lenguaje de gramática, para especificar gramáticas simples como la utilizada en este proyecto. Consiste en un conjunto de definiciones de variables seguidas por una expresión regular, describiendo así las palabras a reconocer. El contenido del archivo de gramática del reconocedor se encuentra descrito en el Anexo A de este documento.
34
La gramática descrita anteriormente se puede representar en forma de una red, como muestra la Figura 14.
Figura 14. Red de Trabajo de las Palabras en la Aplicación de Dígitos Conectados.
Cabe resaltar que la anterior representación de la gramática es introducida por el usuario a su conveniencia, manipulando el archivo que contiene la gramática. El reconocedor de HTK requiere una red de palabras, la cual tiene que ser definida empleando una notación de nivel bajo llamada Standard Lattice Format SLF en la que cada palabra y cada transición que exista de palabra a palabra es listada de forma explícita. Esta red de palabras fue creada automáticamente desde la gramática del reconocedor, usando la herramienta Hparse de la misma forma en que se utilizó en la aplicación anterior. Después de haber definido la gramática del reconocedor, se tiene que crear el diccionario del sistema. El primer paso para la construcción del diccionario, es hacer un listado de las palabras requeridas. En esta aplicación, el contenido del diccionario varía con respecto a la aplicación de palabras aisladas, debido a que el reconocimiento de palabras en esta aplicación, se realizó a nivel de fonemas. El formato general del diccionario es:
UNO [símbolo de salida]
p1
p2
p3
….
sp
Lo anterior significa que la palabra UNO, se pronuncia como la secuencia de fonemas p1 p2 p3…., el símbolo de salida encerrado dentro de los paréntesis cuadrados, específica el
35
símbolo que el reconocedor mostrará cuando reconozca la palabra UNO. En el caso en que se omitan los paréntesis, la palabra misma será la salida del sistema. Si no se incluye nada dentro de los paréntesis, entonces el sistema no mostrará nada en la salida.
Se utilizó el modelo de short-pause o silencio corto sp, el cual existe entre palabras debido a las pausas existentes entre ellas, las cuales son introducidas por el locutor.
En el
diccionario, este silencio se representa al final de cada pronunciación de las palabras. Este modelo se explicará con más detenimiento en los siguientes capítulos. Hay que resaltar que el diccionario debe seguir el orden alfabético del código ASCII. En el Anexo A de este documento se puede observar el contenido del diccionario utilizado en el sistema reconocedor.
3.2.2
Grabación de las Señales de Voz.
Las bases de datos se grabaron bajo las mismas características que las señales de voz de la aplicación de palabras aisladas. En la base de datos de entrenamiento se grabaron 117 archivos que contenían secuencias de seis números cada uno, estas secuencias fueron creadas por la herramienta Hsgen de HTK, al tomar la gramática del reconocedor y generar un listado aleatorio de las palabras utilizadas en la aplicación, esta lista se puede observar en el Anexo C. Cada palabra se grabo un número mínimo de 59 repeticiones cada una.
En la base de datos de pruebas, se grabaron 23 archivos con secuencias de 6 números en cada archivo.
3.2.3
Etiquetas de las Señales de Voz.
En el caso de los datos de entrenamiento, las etiquetas fueron utilizadas en conjunto con la pronunciación del diccionario para proveer el nivel inicial de las transcripciones de los fonemas exigidos, y poder así empezar el proceso de entrenamiento.
36
Para entrenar un conjunto de HMMs, todos los archivos de datos de entrenamiento deben tener una transcripción asociada a los fonemas (Etiquetas). En la figura Figura 15. se puede observar un ejemplo de las etiquetas de dos palabras diferentes (seis y Uno), éstas, se etiquetaron a nivel de fonemas, este proceso se realizó manualmente con la herramienta Hslab, debido a que HTK no provee una herramienta que haga un alineamiento de las etiquetas con los datos de voz, además se necesitaría una base de datos del español Colombiano para poder realizar este procedimiento.
Figura 15. Etiquetas de las Señales de Voz con Hslab.
Se utilizaron dos transcripciones para entrenar los modelos: la primera transcripción no contenía el modelo de silencio corto (sp) entre palabras. En la segunda transcripción se insertó el modelo sp, el cual es utilizado para la prevención de cualquier pausa introducida por el locutor. Cada transcripción fue utilizada en el entrenamiento los modelos.
Después de etiquetar las señales de voz, se creó un archivo Master Label File (MLF), el cual contiene un listado de las palabras grabadas en cada archivo de voz (117 grabaciones). El proceso se vuelve más eficiente al utilizar el archivo MLF, en vez de utilizar cada archivo de transcripción individualmente. Todo esto se realiza para crear el nivel de palabras.
37
Una vez que fue creado el nivel de palabras MLF, se procedió a generar un nivel de fonemas MLF utilizando el editor Hled. Hled reemplaza cada palabra contenida en el nivel de palabras, por su correspondiente pronunciación descrita en el diccionario y además coloca el modelo de silencio al inicio y al final de cada expresión, debido a que la cadena de números se reconocerá después de un silencio de inicio y un silencio final. Por último esta herramienta borra todas las etiquetas de silencio corto sp, dado que este modelo fue creado y entrenado posteriormente.
3.2.4
Codificación de los Datos.
La fase final de la preparación de los datos, es la parametrizacion de las formas de onda de la voz en secuencias de vectores de coeficientes. Esta fase se llevó a cabo de la misma forma que en la aplicación de palabras aisladas, utilizando la misma configuración.
3.2.5
Creación de los Monofonemas.
Primero se definieron los fonemas colombianos que forman cada una de las palabras que contiene el diccionario del reconocedor. Los fonemas fueron los siguientes: u, n, o, d, s, t, r, e, kk, w, a, i, N, j, c y b. El fonema k fue reemplazado por el fonema kk utilizado en la aplicación, debido a que el programa no permitía el uso de la letra k como un fonema. Cada fonema junto con sil forman los HMMs del sistema.
El primer paso en el entrenamiento de los HMMs es el de definir la topología del modelo. Los valores numéricos de la media, la varianza y las probabilidades de la matriz de transición del modelo prototipo no son importantes, su propósito es el de definir la topología del modelo.
Una topología que es muy utilizada para sistemas basados en
reconocimiento a nivel de fonemas, es la de los modelos de 3 estados de izquierda-derecha sin saltos como se puede observar en la Figura 16.
38
Figura 16. Topología de los HMMs de Izquierda a Derecha de 3 Estados Emisores.
Al crear los modelos se utilizaron unos directorios con nombres HMM0, HMM1,…, HMMi. Donde i significa el número de veces que se han entrenado o manipulado los modelos.
La inicialización de los modelos se llevó a cabo con la herramienta Hcompv, de igual forma a como se realizó en la aplicación de palabras aisladas, de igual manera se obtuvo el archivo vFloors. Para cada fonema (incluyendo el modelo sil), se copió el contenido del prototipo HMM ya inicializado. Esto se realizó manualmente utilizando un editor de texto, para crear un archivo MMF (Master Macro File) y guardarlo en el directorio HMM0. El formato de los archivos MMF es similar al de los archivos MLF y además de esto, tienen un propósito similar.
Después de la inicialización, se entrenaron los modelos del directorio HMM0 al HMM1. El entrenamiento se realizó con la herramienta Herest, la cual ejecuta una reestimación embebida.
Esto significa que se actualizarán simultáneamente todos los modelos del
sistema, usando todas las muestras de entrenamiento. Para ello, se ignora toda la información de segmentado en las etiquetas, puesto que sólo interesa conocer el mensaje que contiene la frase. En cada ocasión que se invocó Herest, esta herramienta ejecutó una sola reestimación. Cada nuevo conjunto de HMMs fue guardado en un nuevo directorio.
Por recomendación del manual de HTK, se invocó Herest dos veces más, hasta llegar al directorio HMM3 en el cual fue guardado el conjunto final de los HMMs de los monofonemas.
39
A continuación en la Figura 17. se presenta el diagrama en bloques del proceso realizado:
Figura 17. Inserción de las Etiquetas, Análisis Acústico, Inicialización de los HMMs y Entrenamiento de los Monofonemas.
3.2.6
Mejorando los Modelos de Silencio.
En el paso anterior se generaron los HMMs de 3 estados de izquierda a derecha para cada fonema y para el modelo de silencio (Figura 17). El siguiente paso es el de mejorar el modelo de silencio sil para hacer el modelo más robusto al permitir estados individuales para absorber los ruidos impulsivos en los datos de entrenamiento. Esto se realizó al añadir transiciones extras de los estados 2 a 4 y 4 a 2 en el modelo de silencio y dejar el estado central igual.
Luego se creó un modelo de silencio corto sp de un sólo estado emisor, para la prevención de cualquier pausa entre palabras que sea introducida por el locutor. Este modelo es el llamado modelo atado, el cual contiene una transición directa desde la entrada al nodo de salida. El modelo de sp tiene su estado emisor atado al estado central del modelo de silencio (sil).
La topología requerida para los dos estados de silencio y lo descrito
anteriormente, es presentada en la Figura 18.
40
Figura 18. Topología de los Modelos de Silencio Corto Sp.
Los dos modelos de silencio fueron creados en dos pasos: •
Usando un editor de texto sobre el archivo que contiene los modelos en el directorio HMM3, para copiar el estado central del modelo de silencio, luego, crear un nuevo modelo sp y guardar el archivo MMF resultante en el directorio HMM4.
•
Ejecutar la herramienta Hhed para añadir las transiciones extras requeridas y poder así atar el estado emisor del modelo sp al estado central del modelo de silencio (sil). El resultado es guardado en el directorio HMM5.
Hhed trabaja de manera similar a la herramienta Hled utilizada anteriormente. Esta aplica un conjunto de comandos (introducidos por el usuario), para modificar el conjunto de HMMs. Estos comandos añaden transiciones a las matrices de transiciones propuestas y además crean un estado atado. Los parámetros del estado atado son guardados en un archivo con cada uno de los modelos, en general los parámetros del estado original son reemplazados por el nombre del macro, los macros serán descritos más adelante. Es importante recalcar que esta herramienta es el mecanismo que utiliza HTK para compartir los parámetros.
Finalmente, después de invocar la herramienta Hhed, se aplicaron otros dos pasos de reestimación de los parámetros utilizando Herest con la transcripción de los fonemas sin
41
olvidar el modelo sp entre palabras, de forma que el resultado final este guardado en el directorio HMM7.
3.2.7
Re-alineamiento de los Datos de Entrenamiento.
Los modelos de los fonemas creados hasta el momento pueden ser utilizados para el realineamiento de los datos de entrenamiento y la creación de nuevas transcripciones. Esto se puede lograr invocando la herramienta Hvite, la cual realiza el alineamiento por Viterbi. Esta herramienta utiliza los archivos guardados en HMM7 para transformar el nivel de la transcripción de la palabra de entrada a un nuevo nivel de transcripciones alineadas utilizando las pronunciaciones guardadas en el diccionario.
Una vez que el nuevo alineamiento por fonema fue ejecutado, se efectuaron dos invocaciones de la herramienta Herest para re-estimar los parámetros del conjunto de HMMs.
Al realizar lo dicho anteriormente, el nuevo conjunto de HMMs de los
monofonemas se encuentra guardado dentro del directorio HMM9.
En la Figura 19. se puede observar el proceso realizado al mejorar los modelos de silencio y realizar el alineamiento de los datos:
Figura 19. Entrenamiento, alineamiento de los datos con el modelo sp y creación de los trifone mas.
42
3.2.8
Construcción de los Trifone mas desde los Monofone mas.
Para crear los modelos de trifonemas dependientes del contexto se clonaron los monofonemas y se re-estimaron utilizando las transcripciones de los trifonemas. Esto se realizó con la herramienta Hled y al mismo tiempo se generó un listado de todos los trifonemas para los cuales existe al menos un ejemplo en los datos de entrenamiento.
Al utilizar Hled las transcripciones de los monofonemas alineados se convirtieron en un conjunto equivalente de transcripciones de los trifonemas y bifonemas unidos con los modelos de silencio sil. Por ejemplo, la siguiente secuencia de fonemas:
Sil
u
n
o
sp
s
e
r
o
sp
s+e
s-e+r e-r+o r-o
sp
…….
sp
……..
Se convirtió en,
Sil
sil-u+n u-n+o n-o
Este estilo de transcripción de los trifonemas es referido a palabras internas. Cabe notar que algunos difonemas se generaron debido a que los límites de las palabras algunas veces incluyen dos fonemas o los difonemas no se pueden atar con los modelos de sp.
La creación de los modelos de los trifonemas se realizó de forma eficiente al utilizar el editor de los HMMs, el cual es la herramienta Hhed. En esta fase, cuando se ejecutó la herramienta Hhed, el programa generó “warnings” debido a que éste, no puede atar las matrices de transición de los modelos sp y sil, dado que ninguno de los modelos es dependiente del contexto y no contienen ninguna matriz que atar. El atar los modelos significa que uno o más HMMs comparten el mismo conjunto de valores ya sea la media, varianza de un estado o la matriz de transición del modelo. Las matrices de transición se atan por medio de un apuntador o macro con un nombre definido por medio del comando ingresado.
43
Una vez que los modelos dependientes del contexto 11 fueron creados, el nuevo conjunto de trifonemas se re-estimó utilizando la herramienta Herest teniendo cuidado de utilizar las transcripciones de los trifonemas. Herest creó un archivo de estadísticas de ocupación de los estados. En combinación con las medias y las varianzas, este permitió que se calculará la verosimilitud para el grupo de estados. Este archivo se utilizó durante el proceso de agrupamiento de los estados.
La reestimación se realizó nuevamente dos veces, y el conjunto de los modelos resultantes fue grabado en el directorio HMM12.
3.2.9
Creación de los Estados Atados de los Trifonemas.
El resultado de la fase anterior, es un conjunto de HMMs de los trifonemas que comparten la misma matriz de transición de los fonemas. El ultimo paso en el proceso de construcción de los modelos, es el de atar los estados con el conjunto de los trifonemas para compartir datos y de esa manera poder hacer estimaciones de parámetros robustos.
En la construcción de los trifonemas desde los monofonemas, los comandos fueron utilizados explícitamente para atar conjuntamente todos los miembros del conjunto de las matrices de transición. Sin embargo, la elección de cual estado hay que atar requiere más cuidado dado que el rendimiento del reconocedor depende crucialmente de que capture de forma acertada las estadísticas de distribución de salida de los datos de voz.
Hhed provee dos mecanismos los cuales permiten que los estados sean agrupados y luego cada grupo sea atado. El primero es dato-conducido12 y utiliza una medida similar entre estados. El segundo utiliza árboles de decisión y se basa en hacer interrogantes acerca de los contextos de izquierda y derecha de cada trifonema.
11 12
Mirar HTKbook para más información de estos Modelos. Este mecanismo se explica en el HTKBook.
44
Los árboles de decisión de estados atados se ejecutan al invocar la herramienta Hhed. Esta herramienta debe leer un archivo que debe contener instrucciones que indiquen respecto a cuales contextos hay que examinar para posibles agrupamientos, este puede ser largo y complejo. Para un sistema de trifonemas, por medio de los comandos es necesario incluir preguntas referentes a los dos contextos de izquierda y derecha de un fonema. La pregunta debe desarrollarse acerca de clasificaciones generales (como consonantes, vocales, nasales, diptongos, etc.) para especificar las instancias de cada fonema. No existirá ningún errror al crear preguntas innecesarias.
El conjunto de trifonemas usados hasta el momento, solamente incluye a aquellos que cubren los datos de entrenamiento. Una vez que los estados atados fueron completados y el nuevo conjunto de modelos fue sintetizado, algunos modelos pueden compartir exactamente los mismos 3 estados y las matrices de transición; entonces estos modelos serán idénticos.
Después que Hhed ha sido implementado, el efecto de atar los modelos puede ser estudiado. Como consecuencia de la invocación de la herramienta se creó un archivo en el cual se pudo encontrar un resumen de las estadísticas; este archivo entregó el número total de estados físicos que permanecieron y el número de los modelos resultantes luego de compactarlos.
Finalmente, y por ultima vez, los modelos se re-estimaron dos veces más utilizando Herest. Los modelos entrenados fueron guardados en el directorio HMM15 (directorio final).
En la Figura 20. se puede observar el proceso que se llevó a cabo para obtener el conjunto final de modelos entrenados:
45
Figura 20. Diagrama en bloques del Entrenamiento de los Trifone mas.
3.2.10 Reconocimiento de los Datos de Prueba.
Los datos de prueba tienen que ser parametrizados de la misma forma en que se parametrizaron los datos de entrenamiento con la herramienta Hcopy.
Se utilizó la herramienta Hvite para realizar el reconocimiento de los datos de prueba. Hvite lee el diccionario que contiene las transcripciones de los monofonemas mientras que la lista suministrada de los HMMs contiene palabras con trifonemas internos.
Esta
herramienta hace las conversiones necesarias cuando carga la red de palabras.
Sin
embargo, si la lista de los HMMs contiene monofone mas y fonemas dependientes del contexto, entonces Hvite entra en confusión. Este fue un problema crítico encontrado en la aplicación de dígitos conectados. El programa al ejecutar la herramienta Hvite, encontró un error denominado error 8231, el cual se generó debido a que no podía encontrar un modelo en la lista de los modelos propuestos. Este error se arreglo al forzar la expansión de la red de palabras internas requeridas por medio del archivo de configuración.
Después, se creó un archivo MLF, el cual debe contener las transcripciones de los niveles de palabras de cada archivo de prueba, estas deben escribirse manualmente. Gracias a lo anterior se pudo ejecutar la herramienta Hresults, la cual determinó el rendimiento del sistema.
46
Los resultados obtenidos se dividieron en las siguientes partes: •
Resultados de reconocimiento a nivel de palabras. Debido a que en esta clase de reconocedores importa más el resultado de reconocimiento de palabras, que el resultado de reconocimiento de las oraciones.
•
Resultado de reconocimiento de oraciones: Se obtendrá la tasa de reconocimiento de las oraciones que componen la gramática del reconocedor.
•
Resultados de reconocimiento a nivel de fonemas.
•
Matrices de confusión de los fonemas y palabras.
3.3
INTERFAZ GRÁFICA DE HTK
Uno de los objetivos del proyecto fue desarrollar una interfaz amigable del programa HTK. Esta fase se desarrolló en código de Visual Basic, permitiendo la ejecución de los comandos utilizados en la construcción de los reconocedores mencionados anteriormente.
En la Figura 21. se puede observar la pantalla de inicio del programa:
Figura 21. Pantalla de Inicio del Programa.
47
El proceso de la implementación de la interfaz, guía al usuario en los diferentes pasos necesarios para la construcción de reconocedores de palabras aisladas y palabras conectadas. En la segunda pantalla se pueden observar los botones para cada aplicación propuesta (Habla Conectada y Palabras Aisladas), los cuales se pueden observar en la Figura 22.
Figura 22. Segunda Pantalla de la Interfaz.
El desarrollo se realiza paso a paso hasta llegar al resultado final de la construcción de los reconocedores, en donde se obtienen las tasas de reconocimiento del sistema. El uso de comandos por parte del usuario es mínimo, toda la información introducida por él pertenece a el vocabulario y gramática del reconocedor. Para una mayor información acerca del uso y funcionamiento de la interfaz remitirse al manual del programa.
48
4.
ANÁLISIS DE RESULTADOS
Los resultados obtenidos se dividieron en tres grupos, los cuales son: presentación de la interfaz desarrollada, evaluación de los sistemas de aplicación de palabras aisladas y dígitos conectados y por ultimo la evaluación de la construcción de los sistemas de reconocimiento de voz utilizando HTK. En este último se realizará más énfasis, debido a su importancia en los objetivos del proyecto.
Con respecto a la evaluación de los sistemas reconocedores desarrollados, se realizaron pruebas con señales “reales” o ambientes ruidosos, para analizar la robustez de los sistemas frente al ruido. Debido a esto, a las bases de datos de prueba de las dos aplicaciones, se les sumó ruido blanco con diferentes SNRs. Los SNRs sumados fueron 5, 15, 20, 25, 30, 35 y 40 db, utilizando el programa Matlab con la herramienta de adición de ruido blanco llamada Awgn. La información sobre el rendimiento de los reconocedores y los resultados obtenidos se pueden observar en el Anexo B de este documento.
En relación con la interfaz desarrollada, los resultados obtenidos fueron: •
La interfaz fue desarrollada bajo un ambiente “amigable”.
•
El uso de comandos por parte del usuario es mínimo.
•
La información introducida por parte del usuario es única y exclusivamente la correspondiente al vocabulario, inserción de las etiquetas y gramática del reconocedor.
•
Se implementó la metodología utilizada en el proyecto, para la construcción de sistemas reconocedores utilizando la interfaz desarrollada.
•
El programa guía al usuario paso por paso en la construcción de los reconocedores.
49
•
La interfaz no sólo entrena los modelos ocultos de Markov, también efectúa el reconocimiento de los mismos.
Toda la información acerca de la utilización del programa se podrá encontrar en el manual del usuario de la interfaz de Reconocimiento de Voz Utilizando HTK.
Finalmente, el proceso de evaluación de la construcción de los sistemas de reconocimiento de voz desarrollados utilizando HTK, fueron evaluados teniendo en cuenta los siguientes tópicos: •
Herramienta de Análisis: En este tópico se estudia la herramienta de análisis Hresults, la cual generó las estadísticas de reconocimiento, error, matriz de confusión y las transcripciones alineadas de las aplicaciones propuestas.
•
Evaluación del proceso de entrenamiento de los modelos ocultos de Markov HMM, con respecto al tiempo utilizado en el desarrollo de sus pasos.
•
Evaluación del proceso de reconocimiento: Se evaluó el tiempo y recursos utilizados por el sistema para lograr al resultado final de las dos aplicaciones.
•
4.1
Evaluación de la complejidad en la ejecución de las herramientas.
HERRAMIENTA DE ANÁLISIS
Al invocar la herramienta Hresults, ésta compara las transcripciones de los datos reconocidos con las transcripciones de los datos de prueba ingresados por el usuario de forma manual por medio de un editor de texto, realizando el cálculo de las tasas de reconocimiento y de errores cometidos por el reconocedor, utilizando una técnica basada en un método de programación dinámica. Por medio de diferentes configuraciones, Hresults genera un archivo con distintos tipos de formatos para la información de las estadísticas, entre los formatos se encuentra el básico de HTK y el formato US NIST, el cual presenta la misma información que el formato HTK pero en porcentajes como se podrá observar más adelante, además genera matrices de confusión, las cuales presentan una información más
50
detallada del reconocimiento correcto o incorrecto de cada modelo, y finalmente crea las transcripciones alineadas en tiempo, en las cuales se podrá observar el orden y la forma en que fueron reconocidos los modelos.
A continuación en la Figura 23. se presenta el resultado obtenido en la aplicación de palabras aisladas cuando se invocó la herramienta en el formato básico de HTK
Figura 23. Resultado de la Aplicación de Palabras Aisladas en Formato HTK.
La primera línea SENT, presenta el resultado de la tasa de reconocimiento de oraciones, Correct = 100%.
La segunda línea WORD presenta el resultado de la tasa de
reconocimiento a nivel de palabras, Corr = 100%. En el caso de la aplicación de palabras aisladas, las tasas de reconocimiento en las dos líneas son iguales debido a que una oración se forma por un silencio de inicio seguido de una palabra y finalmente un silencio final, entonces no existirá ninguna diferencia entre reconocimiento de oraciones y palabras. En la segunda línea Acc, representa el porcentaje de exactitud de la tasa de reconocimiento. La letra H representa el número de etiquetas reconocidas de forma correcta, S el número de errores por substitución, N es el número total de etiquetas definidas en los archivos de transcripción, D es el número de errores por omisión y finalmente I el número de errores por inserción. La definición de los tipos de errores mencionados anteriormente se puede observar en el Anexo B de este documento.
Para la aplicación de dígitos conectados Hresults generó la información que se muestra en la Figura 24.
Figura 24. Resultado de la Aplicación de Dígitos Conectados en Formato HTK.
51
En la primera línea se puede observar que el porcentaje de reconocimiento de oraciones fue de 60.87%, se reconocieron correctamente 14 oraciones, se generaron 9 errores por sustitución de un total de 23 oraciones, las cuales forman la base de datos de prueba de esta aplicación.
La información de la segunda línea muestra que la tasa de reconocimiento de palabras es de 92.75%, con una exactitud de 92.03%. Se encontraron 9 errores por sustitución, uno por inserción y uno por omisión. Se reconocieron correctamente 128 palabras de un total de 138.
En la Figura 25. se puede observar el resultado del reconocimiento de fonemas en la aplicación de dígitos conectados:
Figura 25. Resultado a Nivel de Fonemas Aplicación Dígitos Conectados en Formato HTK.
El formato NIST presentado por HTK, el cual presenta la información en porcentajes se presenta en la siguiente Figura 26.
Figura 26. Resultado de la Aplicación de Palabras Aisladas en Formato NIST.
Donde Snt es el número de oraciones en los archivos de prueba, Corr es la tasa de reconocimiento, Sub representa la tasa de errores por sustitución, Del la tasa de errores por omisión, Ins el porcentaje de errores por inserción, Err la tasa de los errores del reconocedor y finalmente S. Err representa la tasa de error a nivel de oraciones.
52
A continuación en la Figura 27 y la Figura 28, se presenta el formato NIST producido por la herramienta Hresults en la aplicación de dígitos conectados a nivel de palabras y de fonemas:
Figura 27. Resultado Aplicación Dígitos Conectados en Formato NIST.
Figura 28. Resultado a Nivel de Fonemas Aplicación Dígitos Conectados en Formato NIST.
Los resultados presentados en formato básico de HTK y el formato NIST se calculan de la forma en que se presenta en la Tabla 2:
Resultados de Hresults
Formula % Corr
Tasa de Reconocimiento
Tasa de Reconocimiento de Oraciones
Exactitud
% Correct
=
=
H × 100 % N
H × 100 % , N de la primera Fila N
Acc =
H − I × 100 % N
Tasa de Error por Sustitución
Sub =
S N
Tasa de Error por Inserción
Ins =
I N
Tasa de por Omisión
Del =
D N
Tasa Total de los Errores
Tasa de Error de Oraciones
Err = Sub + Del + Ins S . Err =
S , N de la primera Fila N
Tabla 2. Calculo de los resultados Obtenidos en Formato Básico de HTK y NIST.
53
La matriz de confusión es una buena forma de análisis de los resultados obtenidos, donde se pueden observar con más detalle los errores producidos por los sistemas reconocedores. La matriz de confusión generada por la herramienta Hresults se presenta en las siguientes figuras:
Figura 29. Matriz de Confusión de la Aplicación de Palabras Aisladas.
Figura 30. Matriz de Confusión del Resultado de la Aplicación de Dígitos Conectados.
Figura 31. Matriz de Confusión de Reconocimiento de fone mas de la Aplicación de Dígitos Conectados.
54
La matriz de confusión brindada por la herramienta Hresults, es una buena forma para analizar cuales modelos tuvieron errores en su reconocimiento y como se presentaron, ya sea por sustitución, inserción y omisión. En las filas se presenta el listado de las palabras o fonemas del vocabulario del reconocedor. En las columnas, se puede observar las palabras o fonemas que fueron reconocidos por el sistema. La diagonal de la matriz, presenta el número de palabras que fueron reconocidas correctamente. Cualquier diferencia entre fila y columna representa un error por sustitución entre la palabra reconocida (columna) y la palabra del vocabulario (fila).
Ins representa los errores de inserción de cada columna y Del representa los errores por omisión de cada fila de la matriz. La tasa %c representa el porcentaje de ocurrencias correctas en la fila y la tasa %e representa el porcentaje de etiquetas reconocidas de forma incorrecta en la fila.
Por ejemplo en la matriz de confusión de dígitos conectados, se pueden observar los siguientes resultados: •
Todas las palabras que pertenecían al vocabulario del sistema fueron reconocidas.
•
La palabra UNO fue reconocida dos veces como la palabra OCHO.
•
La palabra UNO fue reconocida cinco veces como la palabra NUEVE.
•
La palabra OCHO fue reconocida dos veces como la palabra DOS.
•
La palabra UNO genero un error por inserción y un error por omisión.
La tasa de reconocimiento de ocurrencias correctas en la fila se calcula de la siguiente forma:
%c =
Errores por Sustitució n en la fila Número total de muestras en la fila
La tasa de error en la fila, se calcula de la siguiente forma:
(4.1)
55
%e =
Errores por Sustitució n en la fila Número total de muestras N
(4.2)
Además, HTK ofrece un resultado de las transcripciones alineadas, esta es otra forma de analizar los errores producidos por el reconocedor. A continuación se presentaran ejemplos de este tipo de transcripciones alineadas los cuales son:
LAB: no
LAB: prender
REC:
REC: apagar
Donde LAB contiene la correcta etiqueta de la señal de entrada y REC es la salida del reconocedor. En estos ejemplos se puede observar un error producido por omisión, debido a que el reconocedor no presenta salida reconocida a la palabra no. Además se presenta un error producido por sustitución, dado que la palabra prender fue recocida como la palabra apagar.
En el caso de dígitos conectados se obtuvo la trascripción que se muestra en la Figura 32.
Figura 32. Representación de las Transcripciones Alineadas de la aplicación de Dígitos Conectados.
En el archivo 136 de la base de datos de prueba, se presentaron la mayor cantidad de errores, entre estos se puede observar el error de sustitución cuando se reconoció la palabra UNO como la palabra OCHO. Además se presentó un error por omisión, cuando la palabra UNO no fue reconocida y el reconocedor no presentó salida alguna. También se presentó un error por inserción cuando reconoció la palabra UNO, sin haberse presentado una palabra en la entrada.
56
El análisis de esta clase de resultado puede no ser completamente correcto en este tipo de reconocedores. Debido a la gramática del reconocedor de dígitos conectados, ante una secuencia de 6 números en la entrada del reconocedor, se obtiene una secuencia de 6 números reconocidos por el sistema. Debido a esto no es muy fácil observar el error producido por la herramienta en este ejemplo. Considérese el siguiente ejemplo 13 de un reconocedor de dígitos conectados con un vocabulario más extenso, donde a una entrada de 5 palabras reconoce 7 palabras: el locutor pronuncia “setecientos cuatro dos doce quinientos”, y el reconocedor proporciona a su salida “siete cien dos cuatro dos seis quince dos”. La transcripción alineada en tiempo de la herramienta Hresults proporciona lo siguiente:
LAB:
sete
cientos
cuatro dos
REC: siete
cien
dos
cuatro dos
seis
doce
quinientos
quince
dos
Con los datos anteriores parece que lo que ha ocurrido es:
• Se ha insertado un “siete” al principio. • Se ha sustituido un “sete” con un “cien”. • Se ha sustituido un “cientos” con un “dos”. • Se ha insertado un “seis”. • Se ha sustituido un “doce” con un “quince”. • Se ha sustituido un “quinientos” con un “dos”.
Con un análisis más detallado en el que se consideren las fronteras temporales de las palabras proporcionadas por el reconocedor y las fronteras de las palabras presentadas a su entrada se puede observar lo siguiente:
• Se reconoce “siete” en lugar de “sete”. • Se reconoce “cien dos” en lugar de “ciento”. 13
Ejemplo tomado textualmente de la referencia [Fernandez01]
57
• Se reconoce “dos seis” en lugar de “doce”. • Se reconoce “quince dos” en lugar de “quinientos”. • El “dos” ha sido absorbido por los modelos del “cuatro” y del “dos”.
Por lo tanto se puede concluir que el número y la tasa de los errores por sustitución, inserción y omisión presentada por la herramienta Hresults, no son del todo correctos, pero son una buena aproximación al resultado real. Se necesitaría una herramienta que no sólo tenga en cuenta las transcripciones de referencia sino también los instantes de tiempo de las fronteras de las palabras para obtener un resultado más preciso que el proporcionado por Hresults, pero HTK no cuenta con esta herramienta.
4.2
EVALUACIÓN DEL PROCESO DE ENTRENAMIENTO DE LOS HMMS.
El proceso utilizado se midió con respecto a varios factores que influyeron en el proceso de entrenamiento de los modelos ocultos de Markov, los cuales serán nombrados a continuación: •
Tiempo empleado en la inserción de las etiquetas de las palabras.
•
Herramienta utilizada.
•
Recursos en tiempo y memoria de la ejecución de la herramienta utilizada.
4.2.1
Tiempo Empleado en la Inserción de las Etiquetas de las Palabras
Este proceso no presentó ningún inconveniente durante el desarrollo de la aplicación de palabras aisladas. La forma para etiquetar los archivos de voz de las palabras es muy sencilla, gracias a que en la gráfica de la voz que genera la herramienta Hslab, se puede observar el inicio y el final de cada palabra, por lo tanto, no es necesario escuchar la señal para poder etiquetarla, aunque Hslab permite la opción de escuchar las etiquetas. El único inconveniente es la gran cantidad de archivos para su correspondiente inserción de las etiquetas. En este proyecto se utilizaron 299 archivos y en cada uno se etiquetaron tres
58
regiones, lo cual demandó tiempo y paciencia. El promedio de tiempo que demandó esta fase fue de 3 días trabajando 6 horas diarias.
En la aplicación de dígitos conectados, este fue el proceso que más demandó tiempo y paciencia. El proceso de inserción de las etiquetas fue a nivel de fonemas, lo cual fue realizado manualmente con la herramienta Hslab. Las etiquetas se colocaron al escuchar segmentos de cada palabra, e identificar los fonemas por medio del oído. Debido a la gran cantidad de palabras (138) y que cada una tiene como mínimo tres fonemas, este proceso se tornó muy largo, lo cual tuvo como consecuencia gran cantidad de tiempo empleado en esta fase.
El promedio de tiempo empleado para etiquetar la totalidad de los datos de
entrenamiento fue de 8 días trabajando 6 horas diarias.
Durante el proceso de
entrenamiento es necesario insertar las etiquetas correspondientes al modelo sp, este proceso tomó 3 horas. Luego, para entrenar los modelos de los trifonemas se tienen que convertir las etiquetas creadas a etiquetas de trifonemas. Este proceso fue largo, dado que para crear un modelo de trifonema de la forma a-b+c, se hace necesario tomar el tiempo de inicio del fonema a y el tiempo final del fonema b para crear la nueva etiqueta a-b+c, este proceso se realizó al manipular por medio de un editor de texto todos los archivos de las transcripciones. El promedio aproximado de tiempo utilizado en esta etapa fue de 6 días trabajando 6 horas diarias.
4.2.2
Herramienta Utilizada
En la aplicación de palabras aisladas, se utilizó la herramienta Hinit y Hcompv para inicializar los modelos con los datos de entrenamiento para permitir una convergencia rápida y precisa de los algoritmos de entrenamiento, este proceso demoró aproximadamente de 2 a 3 segundos. La inicialización se realizó individualmente para cada modelo por medio de un comando de línea. Además para el entrenamiento de los modelos, se utilizó la herramienta Hrest, la cual ejecuta la re-estimación por Baum Welch de un sólo modelo, debido a esto se entrenó cada modelo por aparte, por medio de un comando de línea para cada uno. Este proceso se realizó cuatro veces para los seis modelos, lo cual fue suficiente para obtener su convergencia. Con respecto al tiempo, el proceso fue rápido y se limitó al
59
tiempo requerido para escribir los comandos de línea, aproximadamente el proceso tomó 20 minutos. En la aplicación de dígitos conectados, se utilizó la herramienta Hcompv para inicializar todo el conjunto de modelos en un sólo comando de línea a diferencia de la aplicación anterior. Para el entrenamiento de los modelos se utilizó Herest, la cual ejecuta una sola reestimación de los parámetros utilizando la versión de entrenamiento embebido del algoritmo Baum Welch. El entrenamiento de los modelos en esta aplicación tomó más tiempo que en el entrenamiento de palabras aisladas, dado que primero se entrenaron los modelos de fonemas, luego fueron entrenados los fonemas junto con el modelo de sp y después se entrenaron los modelos de trifonemas. El tiempo empleado en esta fase sin incluir el tiempo requerido de las nuevas inserciones de las etiquetas de los modelos sp y trifonemas, fue aproximadamente de 2 días trabajando 6 horas diarias, debido a la manipulación requerida en los archivos empleados.
4.2.3
Recursos en Tiempo y Memoria de la Ejecución de las Herramientas Utilizadas
En la aplicación de palabras aisladas, el proceso de la inicialización y la re-estimación de los modelos son casi inmediatos. El tiempo varia en relación de la cantidad de datos y etiquetas existentes entre los datos, porque a mayor número de datos o etiquetas repetidas, el proceso se torna más lento. En el proyecto se manejaron 299 archivos y la herramienta tuvo un buen comportamiento con respecto al tiempo gastado en el cómputo de la reestimación con esta cantidad de datos. Como se explicó anteriormente, el tiempo de cálculo variaba de modelo a modelo y en general el promedio fue de 3 a 4 segundos. Los modelos de las palabras no requirieron gran cantidad de tiempo para su convergencia pero el modelo de silencio demandó más tiempo que los otros modelos, debido a la mayor ocurrencia entre los datos.
En la aplicación de dígitos conectados, las herramienta Hcompv sólo toma unos segundos en inicializar los parámetros, aproximadamente 2 segundos. Con la herramienta Herest, el
60
tiempo puede ser más rápido o más lento de acuerdo a un umbral14 puesto por el desarrollador, el cual indica como tienen que ser estimados los parámetros. Con un mayor umbral se obtendrá un mayor tiempo empleado en el cálculo de las re-estimaciones y estas serán más precisas. El umbral utilizado generó un promedio de tiempo de espera de 10 a12 segundos con esta herramienta. También influyó la cantidad y longitud de los archivos de voz que fueron manipulados los cuales para esta aplicación duraban un promedio de 8 segundos en su reproducción.
Con respecto a la memoria utilizada por parte de la CPU en el proceso de la ejecución de las herramientas, la información se puede observar en la Tabla 3:
Herramienta
Uso Máximo de Memoria
Hinit
1356 KB aprox.
Hcompv
1308 KB aprox.
Hrest
1586 KB aprox.
Herest
4364 KB aprox.
Tabla 3. Recursos de Memoria de las Herramientas de Entrenamiento.
Los resultados obtenidos se extrajeron del administrador de tareas de Windows. El proceso de la ejecución de la herramienta Herest requiere más memoria debido a la mayor duración de grabación de los archivos de voz y la mayor cantidad de modelos a entrenar. En general las herramientas no requieren mayor cantidad de recursos de memoria.
4.3
EVALUACIÓN DEL PROCESO DE RECONOCIMIENTO.
El proceso de reconocimiento demandó casi el mismo tiempo en las dos aplicaciones. Para realizar el proceso, se ejecutó la herramienta Hvite, la cual es un reconocedor de palabras de propósito general del algoritmo de Viterbi. La tarea de HVite consiste principalmente 14
Este umbral, se coloca para facilidad en el computo del algoritmo utilizado.
61
en encontrar el camino que tenga la mayor probabilidad. Cuanto mayor sea la red, más computación requerirá el algoritmo y por lo tanto, más lento será el reconocimiento. Esta herramienta tomó varios segundos para efectuar la tarea de reconocimiento, aproximadamente unos 10 segundos. Pero el proceso de reconocimiento no se limita sólo a la ejecución de esta herramienta, también es necesario realizar el análisis acústico de las señales de prueba, luego se necesita crear un archivo con un listado de las etiquetas reales de los datos de prueba. Este archivo se crea manualmente y puede ser largo dependiendo del número de palabras que se vayan a reconocer. Además para llegar a los resultados de la tasa de reconocimiento, se ejecutó la herramienta Hresults, la cual de forma inmediata presenta el archivo de los resultados finales. En general la fase de reconocimiento con respecto a la fase de entrenamiento, demandó menos tiempo requerido para su cumplimiento. Aproximadamente 2 días trabajando 6 horas diarias.
Con respecto a los recursos utilizados por el sistema en la ejecución de esta fase, se encontró que la máxima memoria requerida por la herramienta es de 1528 KB, además se observó la gestión de la memoria que utiliza y ejecuta el programa. La administración de la memoria es una función de muy bajo nivel y la mayoría de las veces es invisible para los usuarios de HTK. Sin embargo, herramientas como Hvite requieren gran cantidad de memoria en su ejecución. Debido a lo anterior, HTK ejecuta su propia administración de la memoria. En el Anexo D se puede observar la organización de la memoria que utiliza el programa HTK.
4.4
EVALUACIÓN DE LA COMPLEJIDAD EN LA EJECUCIÓN DE LAS
HERRAMIENTAS
Como se ha explicado, cada herramienta se ejecuta mediante un comando de línea en DOS. Los comandos en HTK siguen un formato básico, el cual es:
Hherramienta [opciones] archivos.
62
•
Opciones: Son las opciones que son indicadas por una línea o raya seguidas por una letra para la opción requerida. Las opciones universales tienen letras mayúsculas. Algunas opciones estándar son comunes para todas las herramientas de HTK. A continuación se nombran algunas de ellas: o -A: Muestra los argumentos del comando de línea. o -D: Muestra la configuración de la herramienta. o -T 1: Muestra la información acerca de las acciones de los algoritmos.
•
En HTK, es necesario el uso de las extensiones de los archivos (si las tienen).
Debido a la gran cantidad de opciones que ofrece HTK en sus herramientas, estas se pueden tornar confusas en su utilización, como es el caso del manejo de los archivos por medio de estas opciones, dado que cada tipo de archivo utiliza una opción diferente.
El comando de línea en algunas herramientas es muy sencillo y consta de un archivo de entrada y otro de salida, como es el caso de Hparse. Algunas herramientas necesitan de un archivo de configuración para su correcta ejecución, como es el caso de Hcopy. Otras herramientas necesitan de un umbral colocado por el desarrollador para obtener una buena estimación de los parámetros, como es el caso de Herest.
Existen herramientas que
necesitan leer comandos adicionales por medio de un archivo de texto (estos pueden ser extensos y complejos), como es el caso de las herramientas Hhed y Hled. herramienta posee una interfaz gráfica como es el caso de Hslab.
Sólo una
En general, la
complejidad y la extensión del comando de línea varían de una herramienta a otra de acuerdo a su función.
Debido a la gran cantidad de errores que pueden ocurrir en la invocación de una herramienta, HTK presenta el siguiente formato cuando sucede un error:
ERROR [+xxxx] Función A: 'Breve explicación' ERROR [+xxxx] Función B: 'Breve explicación' ERROR [+xxxx] Función C: 'Breve explicación' FATAL ERROR - Terminating program Hherramienta
63
Donde “xxxx”, representa el numero del error. Los números de los errores en HTK, son asignados modulo por modulo y herramienta por herramienta en bloques de 100. En cada bloque de 100 números, los números del 0-19 y 90-99, son reservados para los errores de tipo estándar, los cuales son comunes para todas las herramientas y módulos de librerías. En el manual de HTK se encuentra documentado todos los tipos de errores y sus posibles soluciones.
Esta es una gran ayuda para el usuario de HTK, pero algunas veces las
soluciones no son claras aunque el error sea muy sencillo. En general, sólo la experiencia de utilizar el programa una y otra vez, permite al desarrollador encontrar las soluciones rápidamente.
64
5.
CONCLUSIONES
Llegado a este nivel de desarrollo e investigación se puede considerar que los objetivos planteados de este trabajo de grado han sido alcanzados satisfactoriamente. A continuación se exponen de forma resumida las conclusiones más importantes que se pueden extraer de este proyecto:
El desarrollo de aplicaciones de reconocimiento de voz como palabras aisladas y dígitos conectados, no es una tarea sencilla, sobre todo cuando la mayoría de trabajos y herramientas no están hechos para el español y mucho menos para el español colombiano. Un proceso complejo es el de la inserción de las etiquetas de las palabras a nivel de fonemas, porque no existe una herramienta que realice el proceso de rotularlas de forma automática en la fase de entrenamiento, gracias a que este proceso necesita de una base de datos rotulada para el español colombiano, la cual no está disponible. Debido a esto, las aplicaciones necesitan un arduo trabajo en la fase de entrenamiento, antes de alcanzar los objetivos propuestos.
Se logró ejecutar correctamente el conjunto de herramientas de preparación de los datos, entrenamiento, reconocimiento y análisis de HTK, logrando construir dos siste mas reconocedores, uno de palabras aisladas y uno de dígitos conectados. Esto se llevó a cabo con el esquema de pruebas y errores. Sólo la experiencia y la paciencia de haber utilizado el programa una y otra vez influyó en la terminación del proyecto.
Se comprobó que HTK es una poderosa herramienta en los procesos de reconocimiento automático de voz y de creación, manipulación y entrenamiento de modelos ocultos de Markov. El programa permite utilizar diferentes metodologías de entrenamiento de los HMMs.
65
El diseño y las características de los sistemas de reconocimiento automático de voz dependen fuertemente de la aplicación a la que van a ser destinados y a las condiciones de funcionamiento. Los procesos de entrenamiento y reconocimiento que fueron ejecutados en este proyecto utilizando el programa HTK siguiendo siempre las especificaciones propuestas, presentaron excelentes resultados para las dos formas de reconocimiento indicadas como palabras aisladas y dígitos conectados.
Se encontró que los resultados que presenta la herramienta Hresults en aplicaciones como la de dígitos conectados, no son del todo correctos, debido a que sólo tiene en cuenta las transcripciones de referencia pero no los instantes de tiempo de las fronteras de las palabras, por lo tanto al hacer la comparación entre la salida reconocida y la oración a reconocer, se presentan diferencias entre el número real de errores y el número de errores que presenta la herramienta por sustitución, inserción y omisión.
Se construyó de un reconocedor de palabras aisladas utilizando el programa HTK. La aplicación de palabras aisladas presenta grandes ventajas en vocabularios finitos, debido a que los reconocedores automáticos de voz en esta aplicación obtienen tasas elevadas. Además esta clase de sistemas resultan convenientes para ciertas aplicaciones, particularmente aquellas en las que se envían órdenes a una máquina a través de comandos que consisten en una sola palabra. Sin embargo, la extensión de la tarea de reconocimiento de voz a problemas más complejos, tales como grandes vocabularios, hace que el sistema sea más complicado debido al gran número de modelos requeridos (proporcional al tamaño del vocabulario). Por lo tanto, se necesita una unidad de reconocimiento más apropiada como fonemas o difonemas.
El reconocedor de dígitos conectados construido con la herramienta HTK presentó una buena tasa de reconocimiento. La aplicación de dígitos conectados presenta grandes ventajas en vocabularios extensos, debido a que la unidad de entrenamiento se modela a nivel de fonemas los cuales se pueden convertir luego a difonemas y trifonemas. Se modela a este nivel debido a que el número de fonemas básicos en una lengua es bastante
66
pequeño y se pueden utilizar para construir cualquier palabra aunque no este dentro del vocabulario del reconocedor. Su gran desventaja es la complejidad y tiempo utilizado en el proceso de inserción de las etiquetas y la fase de entrenamiento.
Los sistemas de reconocimiento de voz tienen diversas limitaciones en su construcción y son muy sensibles a las diferencias entre las condiciones de diseño y de operación. Cuando los reconocedores de voz se utilizan en situaciones “reales” sus rendimientos se ven enormemente degradados. Los sistemas generan errores por omisión cuando la señal de ruido es alta y no pueden reconocer las características de la voz del locutor. También generan errores por sustitución, cuando los sistemas comienzan a reconocer los parámetros de la señal de voz, pero el ruido interfiere en el reconocimiento llegando a un resultado erróneo. Finalmente el reconocedor presenta errores por inserción cuando reconoce una palabra cuando no se ha introducido palabra alguna o en un silencio. Este error no se presentó con frecuencia en los sistemas desarrollados.
Dentro de las desventajas del programa HTK, se debe mencionar la poca amabilidad del sistema en el llamado y manipulación de los archivos. Debido a esto se construyó una interfaz gráfica que permitiera al usuario manejar el programa de una forma más amigable. Fue desarrollada siguiendo los procesos realizados en el proyecto. La interfaz guía al usuario paso por paso, para desarrollar un reconocedor de palabras aisladas y un reconocedor de dígitos conectados. Se pueden entrenar diferentes bases de datos para cualquier aplicación. La interacción del usuario respecto a comandos de línea es mínima, se consiguió que la información introducida por el usuario fuera única y exclusivamente la correspondiente al vocabulario, inserción de las etiquetas y gramática.
5.1
POSIBLES MEJORAS
Optimizar
el diseño de los sistemas reconocedores propuestos para obtener mejores
resultados frente a variaciones de la voz de un mismo locutor y frente al ruido. Como se pudo observar los reconocedores presentaron bajas tasas de reconocimiento ante bases de datos de prueba ruidosas.
En general se desea que los sistemas de reconocimiento
67
mantengan su rendimiento óptimo cuando las condiciones en las que van a operar difieren de las del diseño. Para hacer un sistema reconocedor más robusto al ruido utilizando HTK se puede realizar: •
Las denominadas técnicas de realce de señal, basadas en una estimación de la voz limpia a partir de la voz ruidosa. Entre estas se puede utilizar la sustracción espectral, donde se asume que voz y ruido son aditivos en el dominio del tiempo.
•
Técnicas basadas en la compensación o adaptación de los modelos de voz. Se puede utilizar la estrategia de añadir ruido a los datos de entrenamiento. El uso de datos de entrenamiento contaminados con ruido puede mejorar de forma considerable la precisión del reconocimiento bajo esa condición específica de entrenamiento.
Con respecto a la interfaz realizada en el proyecto, se puede mejorar el proceso de ordenamiento de los archivos, debido a que en el código no se utilizaron directorios para organizar las diferentes clases de archivos creados y necesitados por la herramienta. Dado que el programa fue diseñado para llevar un proceso organizado de los pasos necesarios para la construcción de los reconocedores, presenta una falencia cuando el proceso es abandonado, por lo tanto es necesario comenzar de nuevo todo el proceso. Debido a esto el sistema se podría mejorar preguntando al usuario en que paso del proceso quiere comenzar. Con una mayor utilización del programa se encontrarán posibles mejoras del rendimiento de la interfaz.
5.2
TRABAJOS FUTUROS
Realizar reconocedores de palabras aisladas y habla conectada, con vocabularios extensos que superen las 700 palabras para cada aplicación propuesta. Para esto es necesario crear bases de entrenamiento correctamente rotuladas para el español colombiano. Estas bases de datos pueden llegar a ser muy grandes, por lo tanto demandarían bastante trabajo en su grabación y rotulación.
68
Estudiar el uso de la herramienta Hadapt de HTK, en la adaptación de los siste mas desarrollados para convertirlos en sistemas reconocedores independientes del locutor. Lo que necesita una gran base de datos con muestras de distintos locutores.
Estudiar el uso de redes gramaticales complejas en sistemas reconocedores de habla continua construidos en HTK.
69
6.
6.1
BIBLIOGRAFÍA
REFERENCIAS DE INTERNET
[1] http://htk.eng.cam.ac.uk. [2] http://www.research.att.com/sw/tools/fsm/ [3] http://svr-www.eng.cam.ac.uk/~prc14/toolkit.html [4] http://fife.speech.cs.cmu.edu/sphinx/ [5] http://cslu.cse.ogi.edu/toolkit/
6.2
REFERENCIAS BIBLIOGRÁFICAS
[Baum66]
BAUM L. E. and PETRIE T., “Statistical inference for probabilistic
functions of finite state Markov chains”, Ann Math, vol. 37, pág, 1554-1563, 1966.
[Carrillo]
CARRILLO AGUILAR Roberto “Diseño y Manipulacion de Modelos
Ocultos de Markov, Utilizando Herramientas HTK: Una Tutoría.”, Universidad de La Frontera. Depto. Ing. Eléctrica.
[Carrillo03]
CARRILLO RANGEL Rafael Eduardo, CHINCHILLA GUARÍN Berta
Liliana, LARA GÓMEZ Claudia Patricia, “Herramienta para la construcción de procesos ocultos de Markov” Bogota 2003, Trabajo de Grado (Ing. Electrónico), Pontificia Universidad Javeriana. Facultad de Ingeniería. Carrera de Ingeniería Electrónica
70
[Deller93]
DELLER John R., PROAKIS Jr. John G., HANSEN John H. L.. “Discrete-
Time Processing of Speech Signals”, Macmillan Publishing Company. 1993.
[Fernandez01] FERNÁNDEZ Laura Docío, “Aportaciones a la Mejora de los Sistemas de Reconocimiento”, TESIS DOCTORAL Universidade de Vigo. 2001
[Frans04]
FRANS Adriaans, HEUKELOM Markus, KOOLEN Marijn, LENTZ Tom,
ROOIJ Ork de, VREESWIJK Daan, “Building an HMM Speech Recogniser for Dutch” 2004, Speech Technology Project 2004.
[Forney73]
FORNEY G.D., “The Viterbi algorithm,” Proc. IEEE, vol. 61, pp.268-278,
Mar. 1973. [Morales04] MORALES MOMBIEL Nicolás. “Word-isolated Long-vocabulary Speakerindependent Automatic Speech Recognition Systems”. HCTLAB. EPS-Universidad Autónoma de Madrid Junio 2004.
[Oba03]
OBA Toshifumi, ATWELL Eric, “Using the HTK speech recogniser to
analyse prosody in a corpus of German spoken learners’ English“, University of Leeds, School of Computing, 2003
[Rabiner86]
RABINER Lawrence R. y JUANG B. H., “An introduction to Hidden
Markov Models”, IEEE ASSP Magazine, Vol 3, No 1, pág 4-16, 1986.
[Rabiner89]
RABINER Lawrence R., “A tutorial on Hidden Markov Models and
Selected applications in Speech Recognition”, Proceedings of IEEE, Vol 77, No. 2, February 1989.
[Toselli04]
TOSELLI Alejandro Héctor “Reconocimiento de Texto Manuscrito
Continuo” Valencia, 2004, Universidad Politécnica de Valencia para optar al grado de Doctor en Informática.
71
[Young02]
S. YOUNG, J. ODELL, D. OLLASON, V. VALTCHEV Y P.
WOODLAND, D. POVEY, G. MOORE, D. KERSHAW, T. HAIN, G. EVERMANN. “The HTK Book: Hidden Markov Models Toolkit V3.2.1”. Laboratory Ltd (2002).
Cambridge Research
71
ANEXO A. DESARROLLO DE LAS APLICACIONES
A continuación se presenta los conjuntos de códigos de línea utilizado en el proyecto para la construcción de los reconocedores de palabras aisladas y dígitos conectados.
A.1. DESARROLLO DE LA APLICACIÓN DE PALABRAS AISLADAS EN HTK.
A.1.1. Creación de un Cuerpo de Entrenamiento.
Para invocar la herramienta Hslab correctamente se debe escribir el siguiente código fuente:
Hslab –C configuración1.txt nombre.wav
Donde –C es la opción para que lea el archivo configuración1.txt, el cual es un simple archivo de texto, que contiene la configuración para que pueda leer archivos .wav. El contenido del archivo de configuración se puede observar en la Figura 33.
Figura 33. Contenido del Archivo de Configuración.
72
Nombre.wav es el archivo de voz que se va a etiquetar. .
Después de escribir las etiquetas en las formas de onda de voz, se debe grabar y automáticamente HTK crea un archivo .lab.
A.1.2. Análisis Acústico
Para invocar correctamente el uso de esta herramienta se debe escribir el siguiente código fuente:
Hcopy –C configuración1.txt –S listamfcc.txt
Configuración.txt es el archivo de texto anteriormente utilizado cuando invocamos a hslab, con toda la información sobre la extracción de los coeficientes MFCC, etc. El archivo listamfcc.txt contiene el nombre de la señal de voz (archivo origen), y al frente contiene el nombre el archivo destino con extensión .mfcc. En la Figura 34. se puede observar el contenido del archivo lista.mfcc:
Figura 34. Contenido del Archivo listamfcc.txt .
Se debe tener en cuenta una consideración al crear esta clase de archivos, donde se debe dejar un línea en blanco al finalizar el texto, porque si no se pone, HTK generará un error.
73
A.1.3. Definición de los HMMs.
Se debe crear un archivo para cada uno de los modelos, el cual debe contener la definición (prototipo) de los HMMs, A continuación en la Figura 35. se presenta un ejemplo de su contenido:
Figura 35. Ejemplo de un Archivo de descripción de HMM.
Cada prototipo tiene que ser generado para cada evento a modelar. En el caso de este proyecto, se escribió un prototipo para cada uno de los 6 HMMs que se llamaron “si”, “no”, “prender”, “apagar”, “cancelar” y “sil”.
A.1.4, Entrenamiento de los HMMs.
A continuación se presentan los pasos que conforman esta fase:
74
A.1.4.1. Inicialización Se utilizó la herramienta Hinit para realizar el proceso de inicializacion de los parámetros de los modelos propuestos. HInit -A -D –T 1 -S lista_entrenamiento.txt -M modelos/hmm0 –H modelos/proto/Archivo_hmm -l etiqueta -L dir_etiqueta nombre_hmm Nombre_de_hmm: Es el nombre del HMM a inicializar (si, no, prender, apagar, cancelar o sil). Archivo_hmm: Es un archivo de descripción del modelo que contiene el prototipo del HMM llamado nombre_de_hmm.
Ejemplo Hmm_sil, …. Donde sil es el nombre del
modelo. Lista_entrenamiento.txt: Presenta un listado completo de los archivos .mfcc los cuales forman el cuerpo del entrenamiento. Son todos los archivos con extensión .mfcc. Modelos/hmm0: Es el directorio y archivo de salida. De la herramienta más no del sistema. Etiqueta: Es el nombre de la etiqueta introducida en el modelo que se va a entrenar. Dir_etiqueta: Es la dirección de donde se encuentran las etiquetas. En el proyecto es lab/.
En este proyecto también se utilizó la herramienta Hcompv y el comando de línea de inicialización es el siguiente:
Hcompv –A –D –T 1 –S lista_entrenamiento.txt –M modelos/hmm0flat –H modelos/proto/Archivo_hmm –f 0.01 nombre_de_hmm
Nombre_de_hmm, Archivo_hmm, Lista_entrenamiento.txt, son los mismos archivos utilizados en la herramienta Hinit. Modelos/hmm0flat: Es el directorio y archivo de salida. De la herramienta más no del sistema.
75
Al utilizar esta herramienta también se genera un archivo llamado vFloors el cual se utilizará más adelante. A este archivo es necesario adjuntarle una información adicional, la cual es la información de la cabecera, que se adjunta al principio del archivo. La cabecera es: ~o 39
A.1.4.2. Entrenamiento. El siguiente comando de línea ejecuta la herramienta Hrest:
Hrest –A –D –T 1 –S lista_entrenamiento.txt –M modelos/hmmi –H vfloors –H
modelos/hmmi-1/archivo_hmm
–l
etiqueta
–L
direc_etiqueta
nombre_de_hmm
Nombre_de_hmm: Es el nombre de los HMM a entrenar (sil, no si, prender, apagar y cancelar) igual que en el caso anterior. Archivo_hmm: Es el archivo de descripción del HMM a entrenar. Esta guardado en un directorio cuyo índice indica la ultima iteración (por ejemplo modelos/hmmi-1/). Vfloors: Es el archivo que contiene la varianza global del vector obtenido anteriormente invocando hcompv. Lista_entrenamiento.txt: Presenta un listado completo de los archivos .mfcc, los cuales conforman el cuerpo del entrenamiento. En estos archivos .mfcc se encuentra toda la información obtenida por los coeficientes MFCC. Direc_etiqueta: Es el directorio en donde se encuentran los archivos de etiqueta (archivos .lab) los cuales conforman el cuerpo del entrenamiento. Los archivos .lab son los que contienen las etiquetas de las grabaciones de voz. Estas están guardadas en el directorio lab/. Etiqueta: Indica la etiqueta que se va a utilizar durante el entrenamiento de los modelos. (si, no, sil, apagar, prender y cancelar o la palabra a utilizar.)
76
A.1.5. Diccionario y Gramática.
Se deben crear los archivos diccionario.txt y gramatica.txt los cuales contienen el diccionario y la gramática del reconocedor respectivamente. Los dos archivos son creados en un editor de texto. A continuación se podrá observar como ejemplo, la gramática para un reconocedor de palabras aisladas como el utilizado en este trabajo de grado con las palabras (si, no, prender, apagar, encender y cancelar):
$PALABRA = si | no | prender | apagar | cancelar; ( { SIL_INICIAL } [ $PALABRA ] { SIL_FINAL } ) •
La variable PALABRA puede ser reemplazada por si, no, prender, apagar y cancelar.
•
Las llaves {} alrededor de SIL_INICIAL y SIL_FINAL, denotan cero o mas repeticiones (un segmento de silencio largo, o ningún silencio antes o después de la palabra que luego es permitida).
•
Los paréntesis angulares [] alrededor de $PALABRA denotan cero o una ocurrencia (si no hay ninguna palabra pronunciada, es posible que reconozca solamente silencio), también denotan ítems opcionales.
•
Las barras verticales | denotan alternativas.
A continuación en la Figura 36. se presenta el contenido del archivo diccionario:
Figura 36. Contenido del Diccionario Utilizado en la Aplicación de Palabras Aisladas.
77
Con el siguiente comando de línea se obtiene la red de la gramática de reconocimiento:
Hparse –A –D –T 1 gramatica.txt red.slf
Aquí se obtiene un archivo .slf (Standard lattice format), el cual contiene la red de la tarea. Este archivo se utilizara más adelante.
A.1.6. Reconocimiento.
El correcto modo de llamar a uso la herramienta hvite se podrá observar en el siguiente comando de línea:
Hvite –A –D –T 1 –S lista_prueba.txt –H hmmsdef.mmf –i rec.mlf –w red.slf diccionario.txt lista_hmm.txt
Entrada.mfcc es el dato de entrada a reconocer.
Se debe realizar una nueva
parametrización de los datos de prueba Lista_hmm.txt: es el listado de los nombres de los modelos que se utilizaron en el proceso (si, no, prender, apagar, cancelar y sil). No hay que olvidar dejar un espacio en blanco al final del archivo. Diccionario.txt es el diccionario del reconocedor. Red.slf es el archivo que contiene la red. Rec.mlf es el archivo de reconocimiento de salida. La salida del reconocedor se guarda automáticamente en un archivo .mlf llamado “master label file” o archivo de etiqueta maestro, el cual contendrá las transcripciones de la entrada. Hmmsdef.mmf: contiene la definición de los HMMs. Este archivo se obtiene simplemente al copiar cada definición de los HMMs después de la otra dentro de un sólo archivo, sin repetir la información de la cabecera. En la Figura 37. se puede observar el contenido de este archivo y su arquitectura:
78
Figura 37. Contenido del archivo Hmmdefs.mmf.
A.1.7. Tasa de Error
Las tasas de reconocimiento se obtuvieron con la herramienta de análisis Hresults de HTK. Hresults se ejecuta de la siguiente forma:
Hresults –A –D –T 1 –e ??? sil –I ref.mlf lista_etiquetas.txt rec.mlf > resultado.txt
Resultado.txt contiene las estadísticas de salida. Rec.mlf contiene las transcripciones de los datos de prueba, como salida del reconocedor. Lista_etiquetas.txt: es el listado de las etiquetas existentes en los archivos de transcripción (si, no, prender, apagar, cancelar y sil). Ref.mlf contiene las transcripciones de referencia de los datos de prueba (escritos manualmente).
79
El archivo ref.mlf sigue la siguiente estructura que se muestra en la Figura 38.
Figura 38. Ejemplo de un Archivo de Etiqueta Maestro.
-e ??? sil: es la opción que indica que las etiquetas de “sil” serán ignoradas cuando se computan las estadísticas, debido a que solamente se tendrán en cuenta las tasas de reconocimiento de las palabras a reconocer.
A.2. Desarrollo de la Aplicación de Dígitos conectados en HTK.
A.2.1. La Gramática
Se debe definir el archivo de gramática. Este archivo debe ser creado por el usuario de acuerdo a la gramática, que vaya a utilizar. El contenido del archivo de gramática, utilizado en este proyecto se puede observar a continuación en la figura Figura 39.
Figura 39. Gramática Utilizada en la Aplicación de Dígitos Conectados.
80
Luego se debe crear la red gramatical siguiendo el siguiente comando de línea:
Hparse gramatica.txt red
El archivo gramatica.txt, es el archivo que contiene la gramática definida por el usuario. Red es el archivo de salida de la herramienta, el cual va a contener la red de la gramática de las palabras.
A.2.2. El Diccionario
El archivo diccionario.txt debe ser creado por el usuario. Debe contener el listado de todas las palabras pertenecientes al vocabulario del reconocedor, además de sus pronunciaciones. A continuación se presenta el contenido del archivo del diccionario que se puede observar en la Figura 40.
Figura 40. Contenido del Diccionario Utilizado en la Aplicación de Dígitos Conectados.
A.2.3. Etiquetas de las Palabras.
La inserción de las etiquetas de las palabras se puede llevar a cabo con la herramienta Hslab. Esta crea unos archivos con extensión .lab, los cuales son unos simples archivos de
81
texto, que contienen dos series de números y enseguida el nombre de la etiqueta; los números indican el tiempo de inicio y el tiempo final de la etiqueta en nano-segundos. Toda la rotulación la realiza el usuario.
Hslab –C configuracion1.txt archivo_de_voz.wav
El archivo configuracion1.txt, es el archivo que contiene la configuración dada para que HTK pueda leer archivos de audio con extensión .wav. archivo_de_voz.wav, es el nombre del archivo de la señal de voz que va a ser etiquetado.
A.2.4. Creación de los Archivos de Transcripción.
Es necesario crear un listado de las palabras que conforman la base de datos de prueba para poder extraer el listado de los fonemas.
A continuación se presenta el ejemplo del
contenido del archivo de palabras que se muestra en la Figura 41.
Figura 41. Ejemplo de un Archivo MLF con Transcripciones As ociadas.
82
Para obtener el nivel de fonemas se debe ejecutar el siguiente código de línea:
HLEd -l '*' -d diccionario.txt -i fonemas0.mlf mkfonemas0.led palabras.mlf
Diccionario.txt es el archivo que contiene el diccionario creado por el usuario. Fonemas0.mlf es el archivo de salida de esta herramienta. A continuación se presenta el archivo de salida al utilizar Hled, el cual se puede observar en la Figura 42.
Figura 42. Transcripciones de Nivel fonético.
Palabras.mlf es un archivo introducido por el usuario el cual debe contener un listado de las palabras existentes en cada archivo de voz, guiándose por un formato especial de los archivos mlf. Mkfonemas0.led es un archivo de texto que contiene una serie de comandos. Este archivo contiene los siguientes comandos:
EX IS
sil
DE
sp
sil
El comando de expansión EX, reemplaza cada palabra contenida en el archivo MLF, el cual contiene el listado de las palabras utilizadas por su correspondiente pronunciación descrita en el diccionario. El comando IS coloca el modelo de silencio al inicio y al final de cada
83
expresión. Debido a que la cadena de números, se reconocerá después de un silencio de inicio y un silencio final. Finalmente el comando DE borra todas las etiquetas de silencio corto sp, las cuales no se necesitan en estos archivos de transcripción por el momento.
A.2.5. Codificación de los Datos.
La codificación se llevo a cabo con la herramienta Hcopy, la cual debe ser configurada correctamente para convertir la entrada en vectores MFCC.
HCopy -T 1 -C configuracion1.txt –S archivo_ruta.scp
Configuracion1.txt es el mismo archivo que se utilizó al invocar la herramienta Hslab. Archivo_ruta.scp es un archivo de texto el cual contiene el nombre de los archivos de voz, e inmediatamente después de un espacio el nombre del archivo destino .mfc.
A.2.6. Creación de los Modelos de los Monofonemas.
El usuario debe crear un archivo que contenga la definición de la arquitectura de los modelos (proto). A continuación en la Figura 43. se puede observar el contenido del archivo prototipo utilizado en este proyecto:
84
Figura 43. Topología de los HMMs Utilizados.
Luego se inicializan con la siguiente herramienta.
HCompV –C configuracion2.txt –f 0.01 -m -S entrenamiento.scp -M hmm0 proto
Donde configuracion2.txt es un archivo fijo, diferente a configuracion1.txt que contiene la configuración necesaria para obtener los coeficientes MFCC, la ventana de hamming, etc. Este archivo se puede observar en la Figura 44.
85
Figura 44. Contenido de Archivo configuracion2.txt.
Entrenamiento.scp debe contener un listado de todos los archivos .mfc, puede introducirlo el usuario o se pueden leer todos los archivos con la extensión .scp, y listarlos en este archivo automáticamente. Hmm0 es el directorio de salida en donde se creara el archivo de salida de la herramienta. Proto es el nombre del archivo prototipo de los modelos. Después de la ejecución de esta herramienta, hcompv también tiene como salida un archivo llamado Vfloors, el cual se utilizará en los pasos subsecuentes.
Luego se debe crear un archivo de etiqueta maestro con extensión .mmf. El cual es un archivo de texto que tiene que ser creado por el usuario, debe contener una copia del archivo que se encuentra en el directorio HMM0 (archivo del modelo prototipo ya inicializado), para cada modelo de fonema. En vez de tener el apuntador ~h “proto”, este, se debe cambiar por ~h “xxx”, donde xxx es el nombre del modelo a utilizar. El apuntador se debe copiar con toda la información del modelo dentro del archivo. Se deben utilizar todos los modelos existentes. En la Figura 45. se presenta la forma en como se deben encadenar los modelos de los fonemas:
86
Figura 45. Creación del Archivo de Descripción de los HMMs con extensión MMF.
Antes de invocar esta herramienta se debe crear un nuevo archivo llamado macros, el cual debe contener las llamadas opciones globales y las varianzas que se van a utilizar como piso para estimar los modelos, esta información se encuentra en el archivo vFloors. Las opciones globales, simplemente son los parámetros de los HMMs y el tamaño de los vectores. Al combinar la siguiente línea con el contenido del archivo vFloors, se podrá crear el archivo macros:
~o 39
De igual forma a como se hizo en la aplicación anterior, entonces de manera general Cabecera + Vfloors = Macros, como se puede observar a continuación en la Figura 46.
Figura 46. Contenido del Archivo Macros.
Luego se ejecuta la herramienta Hrest para entrenar los modelos, como se muestra a continuación:
87
HERest -C
configuracion2.txt
-I
fonemas0.mlf
-t
250.0 150.0 1000.0
-S
entrenamiento.scp -H hmm0/macros -H hmm0/hmmdefs -M hmm1 monofonemas0
Configuracion2.txt, Fonemas0.mlf, Entrenamiento.scp son los mismos archivos utilizados anteriormente. HMM0/macros y HMM0/hmmdefs son los archivos creados anteriormente. HMM1 es el directorio de salida, en el cual se grabaran los archivos macros y hmmdefs entrenados. Monofonemas0 es un archivo que debe contener el listado total de los monofonemas que hacen parte de las palabras utilizadas.
Otros 2 pasos de entrenamiento utilizando la herramienta herest se deben implementar. Cambiando solamente los directorios de lectura y de salida. Como se ve a continuación.
HERest -C
configuracion2.txt
-I
fonemas0.mlf
-t
250.0 150.0 1000.0
-S
entrenamiento.scp -H hmm1/macros -H hmm1/hmmdefs -M hmm2 monofonemas0
HERest -C
configuracion2.txt
-I
fonemas0.mlf
-t
250.0 150.0 1000.0
-S
entrenamiento.scp -H hmm2/macros -H hmm2/hmmdefs -M hmm3 monofonemas0
A.2.7. Arreglando los Modelos de Silencio.
El usuario debe utilizar un editor de texto para copiar el estado central del modelo de silencio, para crear un nuevo modelo sp, y guardar el resultado en el directorio HMM4, donde estarán los modelos anteriores y el nuevo modelo sp.
Ahora se debe implementar el siguiente comando de línea para crear el modelo sp.
HHEd –H hmm4/macros -H hmm4/hmmdefs -M hmm5 sil.hed monofonemas1
88
Sil.hed es un archivo fijo que debe contener una serie de comandos. El conjunto de comandos utilizados se presenta a continuación:
AT
2
4
0.2
{sil.transP}
AT
4
2
0.2
{sil.transP}
AT
1
3
0.3
{sp.transP}
TI
silst
{sil.state[3],sp.state[2]}
Donde el comando AT añade transiciones a las matrices de transiciones propuestas. De acuerdo con la siguiente sintaxis de funcionamiento del comando AT:
AT
i
j
Prob
{mod.transP}
Donde i y j son estados del modelo “mod”. El comando AT añade una transición de salto del estado i al estado j, con el valor de la magnitud de probabilidad “prob”, para las transiciones en la matriz de probabilidad del modelo “mod”.
Las transiciones que
permanecieron fuera del estado i son recalculadas para que:
El comando final TI crea un estado atado llamado silst. Este coma ndo se ejecuta de acuerdo a la sintaxis que se presenta a continuación:
TI
macro
{mod1.state[i],mod2.state[j],…]
Este comando ata y asigna los estados i y j de los modelos mod1 y mod2, al nombre especificado “macro”.
89
Monofonemas1 es un archivo con igual contenido al archivo monofonemas0 pero con el nuevo modelo sp. HMM5 es el directorio de salida y deberá contener los archivos macros y hmmdefs.
Ahora se debe crear el nuevo archivo de transcripción de las etiquetas, utilizando nuevamente la herramienta Hslab para adjuntar la etiqueta de sp en todos los archivos:
Hslab –C configuracion1.txt archivo_de_audio.wav
Luego se deben entrenar dos veces más los modelos de la siguiente manera:
HERest -C
configuracion2.txt
-I
fonemas1.mlf
-t
250.0 150.0 1000.0
-S
entrenamiento.scp -H hmm5/macros -H hmm5/hmmdefs -M hmm6 monofonemas1
HERest -C
configuracion2.txt
-I
fonemas1.mlf
-t
250.0 150.0 1000.0
-S
entrenamiento.scp -H hmm6/macros -H hmm6/hmmdefs -M hmm7 monofonemas1
A.2.8. Realineamiento de los Datos de Entrenamiento.
Este proceso se realizó con la herramienta Hvite, la cual ejecuta el alineamiento utilizando el algoritmo de Viterbi. El comando de línea utilizado fue el siguiente:
HVite -l '*' -o SWT -b silencio -C configuracion2.txt -a -H hmm7/macros -H hmm7/hmmdefs -i alineados.mlf -m -t 250.0 -y lab -I palabras.mlf -S entrenamiento.scp diccionario.txt monofonemas1
Los comandos antes del símbolo –C son para evitar el modelo de silencio en el alineamiento de los datos, debido a que el silencio no es relevante en este proceso. Alineados.mlf es la salida de la herramienta
90
Otros dos pasos de entrenamiento se deben realizar de la siguiente manera:
HERest -C
configuracion2.txt
-I
fonemas1.mlf
-t
250.0 150.0 1000.0
-S
entrenamiento.scp -H hmm7/macros -H hmm7/hmmdefs -M hmm8 monofonemas1.txt
HERest -C
configuracion2.txt
-I
fonemas1.mlf
-t
250.0 150.0 1000.0
-S
entrenamiento.scp -H hmm8/macros -H hmm8/hmmdefs -M hmm9 monofonemas1.txt
A.2.9. Creación de los Trifone mas desde los Monofone mas.
Este proceso se realizó con la herramienta editora Hled como se muestra a continuación:
HLEd -n trifonemas1 -l '*' -i wintri.mlf mktri.led alineados.mlf
Las salidas del sistema son los archivos wintri.mlf y trifonemas1, los cuales contienen los trifonemas existentes en las palabras y el listado de estos respectivamente. El archivo mktri.led es un archivo el cual contiene una serie de comandos que se muestran a continuacion.
WB
sp
TC
Los dos comandos WB definen los modelos sp y sil como Word boundary simbols. Estos bloquearan la adición del contexto en el comando TI (explicado anteriormente), donde convierte todos los fonemas (excepto los modelos sp) a trifonemas.
Luego se debe realizar la clonación de los modelos
HHEd -H hmm9/macros -H hmm9/hmmdefs -M hmm10 mktri.hed monofonemas1
Hmm10 es el directorio de salida.
91
También se creará un archivo llamado trifonemas1. Que se utilizará más adelante. Mktri.hed es un archivo creado por el usuario que contiene los siguientes comandos:
CL triphones1 TI
T_u
{(*-u+*,u+*,*-u).transP}
TI
T_n
{(*-n+*,n+*,*-n).transP}
TI
T_o
{(*-o+*,o+*,*-o).transP}
TI
T_d
{(*-d+*,d+*,*-d).transP}
Etc….
El comando clon CL, toma como argumento el nombre de el archivo que contiene el listado de los trifonemas y difonemas, generados anteriormente. Para cada modelo de la forma ab+c en esta lista, el comando busca el monofonema b y hace una copia de el.
Cada comando TI toma como argumento el nombre de la macro y además el listado de los componentes de los HMMs.
Utiliza una notación la cual intenta imitar la estructura
jerárquica del conjunto de los parámetros de los HMMs, en la cual la transición de la matriz Transp. puede ser considerada como un sub-componente de cada HMM. La lista que se encuentra dentro de los paréntesis esta diseñada para coincidir con el conjunto de trifonemas, difonemas derechos y difonemas izquierdos para cada fonema.
Las transcripciones de los trifonemas no existen, deben ser creadas por el usuario al manipular manualmente los archivos .lab, para poder crear las transcripciones de los trifonemas. Esto se realiza con cualquier editor de texto.
Luego de esto los modelos se deben entrenar de nuevo 2 veces:
HERest -C configuracion2.txt -I wintri.mlf -t 250.0 150.0 1000.0 -s stats -S entrenamiento.scp -H hmm10/macros -H hmm10/hmmdefs -M hmm11 trifonemas1
92
HERest -C configuracion2.txt -I wintri.mlf -t 250.0 150.0 1000.0 -s stats -S entrenamiento.scp -H hmm11/macros -H hmm11/hmmdefs -M hmm12 trifonemas1
El archivo stats es un archivo de salida de la herramienta el cual contiene una serie de estadísticas del sistema.
A.2.10. Creando Estados Atados de los Trifone mas.
Para atar los estados de los trifonemas se utilizó la herramienta editora Hhed ejecutando el siguiente comando de línea:
HHEd -H hmm12/macros -H hmm12/hmmdefs -M hmm13 arbol.hed trifonemas1 > log
Log es un archivo de salida el cual contiene información de la verosimitlitud de los modelos. Este archivo se utilizará más adelante. Arbol.hed es un archivo creado por el usuario con un listado de comandos. A continuación se presenta el conjunto de comandos utilizado:
RO
100.0 stats
TR
0
QS
"L_u"
{ u-* }
QS
"R_u"
{ *+u }
QS
"L_n"
{ n-* }
QS
"R_n"
{ *+n }
QS
"L_o"
{ o-* }
QS
"R_o"
{ *+o }
….
TR
2
TB
350.0 "u_s2"
{(u, *-u, *-u+*, u+*).state[2]}
93
TB
350.0 "n_s2"
{(n, *-n, *-n+*, n+*).state[2]}
TB
350.0 "o_s2"
{(o, *-o, *-o+*, o+*).state[2]}
TB
350.0 "u_s4"
{(u, *-u, *-u+*, u+*).state[4]}
TB
350.0 "n_s4"
{(n, *-n, *-n+*, n+*).state[4]}
TB
350.0 "o_s4"
{(o, *-o, *-o+*, o+*).state[4]}
….
….
TR
1
AU
"lista_total"
CO
"lista_atados"
ST
"árbol"
El comando RO es utilizado para colocar el umbral a 100.0 y cargar el archivo de estadísticas generado al final del numeral anterior. El umbral determina la ocupancia mínima de cualquier grupo y evita un sólo estado de salida, formando solamente un grupo de ocurrencias porque es acústicamente diferente a todos los otros estados.
El comando TR coloca el nivel de trazado a cero para la preparación de la carga de las preguntas.
Cada comando QS carga una sola pregunta y cada pregunta es definida por un conjunto de contextos. Por ejemplo, el primer comando QS define la pregunta llamada L_u la cual es verdadera si el contexto de izquierda tiene alguna ocurrencia con otro fonema.
El segundo comando TR coloca el nivel intermedio de reportes de progreso, reportando que cada uno de los siguientes comandos TB puede ser monitoreado.
Cada uno de esos
comandos TB agrupa un conjunto especifico de estados. Por ejemplo, el primer comando TB se aplica al primer estado emisor de todos los modelos contexto dependientes del fonema u. Cada comando TB trabaja de la forma siguiente. Primero, cada conjunto de los
94
estados definidos por el argumento final es combinado para formar un sólo estado. Cada interrogante en el conjunto de preguntas cargadas por el comando QS, es usada para dividir la combinación en dos conjuntos. En conclusión, los estados en cualquier grupo i están atados para formar un sólo estado compartido con el nombre macro xxx_i donde xxx es el nombre dado por el segundo argumento de los comandos TB.
El comando AU toma como argumento un nuevo listado de trifonemas expandidos para incluir a todos los que se necesitan para el reconocimiento.
Los comandos CO son utilizados para compactar el conjunto de modelos al encontrar los modelos idénticos y atarlos conjuntamente, produciendo un nuevo listado de los modelos llamado lista_atados.
Se entrenan de nuevo 2 veces los modelos:
HERest
-C configuracion2.txt -I wintri.mlf -t 250.0 150.0 1000.0 -s stats -S
entrenamiento.scp -H hmm13/macros -H hmm13/hmmdefs -M hmm14 lista_atados
HERest
-C configuracion2.txt -I wintri.mlf -t 250.0 150.0 1000.0 -s stats -S
entrenamiento.scp -H hmm14/macros -H hmm14/hmmdefs -M hmm15 lista_atados
A.2.11 Reconocimiento.
Para el reconocimiento de las señales se deben extraer los parámetros MFCC de los archivos de pruebas. Esto se realizo con el siguiente comando de linea:
HCopy -T 1 -C configuracion1.txt -S archivo_ruta2.scp
Archivo_ruta2.scp contiene el listado de los archivos de voz .wav de prueba e inmediatamente después el nombre del archivo destino con extensión .mfc, los cuales van a contener la información de la parametrización.
95
Se utilizó la herramienta Hvite para generar el resultado de reconocimiento de las señales de prueba:
HVite -H hmm15/macros -H hmm15/hmmdefs -S test.scp -l '*' -i recout.mlf -w red -p 0.0 -s 5.0 diccionario.txt lista_atados
El archivo test.scp contiene el listado de los archivos de prueba con extensión mfc obtenidos anteriormente. El archivo recout.mlf es el archivo de salida de la herramienta, el cual deberá contener las palabras reconocidas. El archivo red es el que contiene la red de la gramática.
Las estadísticas se obtuvieron con la herramienta Hresults. El formato básico de HTK se obtuvo con el siguiente comando de línea:
HResults -I testref.mlf lista_atados recout.mlf > resultado.txt
Donde el archivo testref.mlf contiene el listado de las palabra que van a ser reconocidas y que se compararan con la salida del reconocedor para obtener las tasas de reconocimiento.
El formato NIST, las transcripciones alineadas en tiempo y las matrices de confusión se generaron con el siguiente comando de línea:
HResults –h –p –t -I testref.mlf lista_atados recout.mlf > resultado.txt
96
ANEXO B. RECONOCIMIENTO DE SEÑALES RUIDOSAS
B.1 TASAS DE RECONOCIMIENTO OBTENIDAS
Antes de entrar en la evaluación de la tasa de reconocimiento de los siste mas propuestos, es necesario definir las clases de errores que pueden presentar estos reconocedores.
La tarea de la evaluación o medida del rendimiento de un sistema de reconocimiento de palabras aisladas, es realmente sencilla: se puede presentar reconocimiento correcto, reconocimiento incorrecto el cual se llama error por sustitución, también puede suceder la situación en la que el sistema no reconoce palabra alguna ante una señal de entrada, lo cual se llama error por omisión y finalmente el reconocedor puede proporcionar una palabra cuando no se introdujo ninguna en ese espacio de tiempo lo cual se define error por inserción..
En los sistemas de palabras conectadas, en los que su entrada consiste en secuencias de palabras sin pausas apreciables entre ellas, la interpretación de su salida es más complicada. Los errores cometidos por estos reconocedores también se asignan, generalmente a las tres categorías mencionadas anteriormente. También pueden ocurrir errores que no encajen en ninguna de estas categorías, pero la mayoría de los esquemas de evaluación utilizados hacen la hipótesis de que todos los errores caen en una de las tres categorías anteriores, despreciando otros tipos de errores.
También se realizaron pruebas con señales “reales” o ambientes ruidosos, para analizar la robustez de los sistemas frente al ruido. Debido a esto, a las bases de datos de prueba para las dos aplicaciones se les sumó ruido blanco con diferentes SNRs. Los SNRs sumados
97
fueron: 5, 15, 20, 25, 30, 35 y 40 db, utilizando el programa Matlab con la herramienta de adición de ruido blanco llamada Awgn.
A continuación se presentará el análisis realizado de las tasas de reconocimiento para cada una de las aplicaciones realizadas.
B.1.1 Aplicación de Palabras Aisladas.
El rendimiento del sistema reconocedor de palabras aisladas frente a señales ruidosas puede ser observado en la Tabla 4:
Tasa de Error de
Tasa de
Errores por
Errores por
Errores por
Reconocimiento.
Reconocimiento.
sustitución.
inserción.
omisión.
(%)
(%)
#
%
#
%
#
%
15
100.00
0.00
0
0.00
0
0.00
100
100.00
20
99.00
1.00
0
0.00
0
0.00
99
99.00
25
98.00
2.00
2
2.00
0
0.00
96
96.00
30
72.00
28.00
9
9.00
0
0.00
63
63.00
35
42.00
58.00
14
14.00
0
0.00
28
28.00
40
3.00
97.00
3
3.00
0
0.00
0
0.00
SNR Decibeles
Tabla 4. Comportamiento del Reconocedor de Palabras aisladas Frente al Ruido.
Con la información de la tabla se puede obtener la gráfica de las tasas de reconocimiento vs los SNRs de las señales, la cual se puede observar en la Figura 47.
98
Figura 47. Gráfica de las Tasas de Reconocimiento vs. SNR de la Aplicación de Palabras Aisladas.
Para poder observar el porcentaje de aparición de los errores encontrados en el reconocimiento de las bases de datos con los SNRs propuestos se presenta la gráfica de Tasa de los tipos de Errores vs. Ruido, la cual se puede observar en la Figura 48.
Tasa de Error (%)
Tasa de los Tipos de Errores vs. SNR 100 90 80 70 60 50 40 30 20 10 0
Errores por Inserción Errores por Omisión Errores por Sustitución
15 db 20 db 25 db 30 db 35 db 40 db SNR
Figura 48. Tasa de los Tipos de Errores vs. SNR Aplicación Palabras Aisladas.
La información de las matrices de confusión generadas por HTK se pueden resumir en la Tabla 5:
99
Palabras
N°. Reconocimientos
N° de Err por Omisión en las
N° de Err por Inserción en
Bases de Datos SNR db
Bases de Datos.
las Bases de Datos.
15
20
25
30
35
40
15
20
25
30
35
40
15
20
25
30
35
40
SI
0
0
0
3
8
20
20
20
20
17
12
0
0
0
0
0
0
0
NO
0
0
0
0
7
20
20
20
20
20
13
0
0
0
0
0
0
0
PRENDER
0
0
0
0
4
17
20
20
18
11
2
0
0
0
0
0
0
0
APAGAR
0
1
2
16
20
20
20
19
18
4
0
0
0
0
0
0
0
0
CANCELAR
0
0
0
9
19
20
20
20
20
11
1
0
0
0
0
0
0
0
Tabla 5. Número de Palabras Correctamente Reconocidas, Errores por Inserción y por Omisión de las Bases de Datos con SNRs en la Aplicación de Palabras Aisladas..
B.1.2 Aplicación de Dígitos Conectados.
A continuación en la tabla se presentará el resultado obtenido en las bases de datos de prueba con los diferentes SNRs. En la Tabla 6, Rec significa reconocimiento:
Tasa de SNR
Error de
Decibeles
Rec. de Oraciones.
Tasa
Errores por
Errores por
Errores por
sustitución.
inserción.
omisión.
Tasa de Rec.
de
Tasa
de
Error
de
Oraciones.
de
Rec.
#
%
#
%
#
%
Rec. 15
100.00
0.00
93.48
11.59
115
83.33
7
5.07
7
5.07
20
100.00
0.00
92.75
15.94
104
75.36
12
8.70
12
8.70
25
100.00
0.00
89.13
18.84
101
73.19
11
7.97
11
7.97
30
100.00
0.00
89.86
22.46
90
65.22
17
12.32
17
12.32
35
100.00
0.00
88.41
24.64
86
62.32
18
13.04
18
13.04
40
100.00
0.00
86.96
25.36
86
62.32
17
12.32
17
12.32
Tabla 6. Comportamiento del Reconocedor de Dígitos Conectados Frente al Ruido.
Con la información de la tabla se obtuvo la gráfica de la tasa de reconocimiento frente a la relacion señal a ruido, la cual se puede observar en la Figura 49.
100
Figura 49. Gráfica de las Tasas de Reconocimiento vs. SNR de la Aplicación Dígitos Conectados.
A continuación en la Figura 50. se puede observar el comportamiento de la tasa de los errores frente a la SNR:
Tipo de Errores vs. SNR 120 100 80 Número de Errores
Número de Errores por Sustitución
60
Número de Errores por Inserción
40 20 0 15 dB
20 dB
25 dB
30 dB
35 dB
40 dB
Número de Errores por Omisión
SNR
Figura 50. Tipo De Errores vs. SNR Aplicación Dígitos Conectados.
B.1.3 Reconocimiento a Nivel de Fonemas
El reconocimiento a nivel de fonemas permite observar cuales fueron los modelos que presentaron dificultad en su reconocimiento.
El reconocimiento a nivel de palabras,
101
demostró que las palabras que presentaron problemas para su reconocimiento fueron: UNO y OCHO.
El reconocimiento a nivel de fonemas, presentó una tasa mayor que la de reconocimiento de palabras, debido a la mayor cantidad de “datos”. El número total de fonemas es de 617 fonemas.
El rendimiento del sistema reconocedor a nivel de fonemas se puede resumir en la Tabla 7:
N° de Veces que fue Rec. Fonemas
Correctamente/N° total del fonema.
Número de Errores
Número de Errores
por Omisión.
por Inserción.
u
10/18
7
1
n
31/34
1
1
o
84/91
0
1
d
15/15
0
2
s
98/98
0
0
t
37/37
0
0
r
34/34
0
0
e
100/100
0
5
kk
23/23
0
0
w
27/27
0
5
a
11/11
0
0
i
12/12
0
0
N
12/12
0
0
j
31/31
0
0
c
10/12
2
0
b
16/16
0
5
Tabla 7. Fonemas Reconocidos Correctamente, Errores por Inserción y Omisión,
102
Al realizar el análisis del rendimiento del reconocedor frente a señales ruidosas, se encontraron los resultados que se pueden observar en la gráfica de la tasa de reconocimiento vs. SNR, que se puede observar en la Figura 51.
Figura 51. Gráfica de las Tasas de Reconocimiento de fonemas vs. SNR de la Aplicación de Dígitos Conectados.
También se obtuvo la gráfica del comportamiento de la tasa de los tipos de errores frente a la SNR de las bases de datos de prueba que se puede observar en la Figura 52.
Tasa de los Tipos de Errores vs. SNR 90 80 70 60 Tasa de Error 50 40 (%) 30 20 10 0
Tasa de Errores por Sustitución Tasa de Errores por Omisión 15 db
20 db
25 db
30 db
35 db
40 db
Tasa de Erorres por Inserción
SNR
Figura 52. Gráfica de la Tasa de los Tipos De Errores vs. SNR Aplicación Dígitos Conectados a Nivel de Fonemas.
103
B.2. Conclusiones de los Sistemas Reconocedores
A continuación se mencionarán las conclusiones en forma individual de los sistemas reconocedores:
B.2.1. Palabras Aisladas •
Con las señales de voz libres de ruido, se obtuvo un resultado de la totalidad de las palabras reconocidas correctamente.
•
Debido a que el sistema no es robusto, el reconocedor genera tasas de reconocimiento muy bajas ante señales ruidosas, con SNR menores a 35 db.
•
Algunos modelos presentaron mayor grado de robustez en presencia de ruido, con respecto a otros, como fue el caso del modelo de la palabra apagar. Esto se debe posiblemente a características propias de la voz del locutor.
B.2.2. Dígitos Conectados •
Se demostró que el reconocimiento de habla conectada a nivel de fonemas, difonemas y trifonemas (fonemas dependientes del contexto) genera una tasa de reconocimiento bastante alta ante entradas libres de ruido, obteniéndose un resultado de 92.75% de reconocimiento.
•
Se evaluó el rendimiento de los reconocedores frente a señales ruidosas, obteniendo resultados poco satisfactorios.
Estas pruebas demostraron la deficiencia del
reconocedor frente ambientes ruidosos. •
El reconocimiento a nivel de fonemas presentó una tasa de reconocimiento mayor con respecto a la tasa de reconocimiento de palabras, debido a la gran cantidad de fonemas existentes en las señales de voz, los cuales sirvieron como datos de entrenamiento de los modelos.
104
•
Algunos modelos de los fonemas presentaron mayor robustez ante señales ruidosas, como es el caso del modelo de los fonemas t, r, s y e, debido a esto la palabra que fue reconocida mayor número de veces fue la palabra TRES.
105
ANEXO C. LIBRETO DE GRABACION DE LAS BASES DE DATOS
C.1. GRABACIONES BASE DE DATOS DE ENTRENAMIENTO Y PRUEBA DE LA APLICACIÓN DE PALABRAS AISLADAS
En esta aplicación se grabaron la palabras PRENDER, APAGAR, CANCELAR, SI Y NO. Por cada archivo, se grabó una palabra. Se siguió la secuencia indicada anteriormente hasta el archivo número 200, es decir 60 repeticiones por palabra, para la base de datos de entrenamiento. Para la base de datos de prueba, se repitió el proceso hasta el archivo número 300, es decir 20 repeticiones por palabra.
C.2. GRABACIONES BASE DE DATOS DE ENTRENAMIENTO APLICACIÓN DE DIGITOS CONECTADOS 1. NUEVE UNO OCHO TRES CERO CERO 2. SEIS CERO TRES DOS DOS CINCO 3. SIETE SEIS SEIS UNO NUEVE TRES 4. CERO CERO CUATRO SEIS CERO DOS 5. CINCO DOS UNO OCHO DOS DOS 6. SEIS CERO TRES CERO UNO CINCO 7. DOS CERO CERO TRES SEIS TRES 8. CERO DOS SEIS SIETE OCHO SIETE 9. OCHO SIETE CUATRO CINCO TRES OCHO 10. TRES CERO SIETE UNO SEIS SEIS 11. CERO OCHO TRES CERO SIETE TRES 12. UNO OCHO CUATRO DOS UNO TRES 13. DOS NUEVE NUEVE CERO DOS TRES 14. OCHO UNO CUATRO DOS CUATRO CINCO
106 15. DOS CERO SEIS CUATRO CINCO UNO 16. CERO NUEVE SEIS CINCO CUATRO NUEVE 17. CINCO CERO DOS UNO DOS CUATRO 18. SEIS DOS CERO TRES TRES CUATRO 19. TRES NUEVE TRES CINCO DOS CUATRO 20. OCHO SIETE CUATRO NUEVE UNO DOS 21. SEIS DOS OCHO TRES NUEVE CERO 22. DOS SIETE DOS DOS TRES CUATRO 23. DOS UNO UNO UNO CERO SEIS 24. SIETE SIETE NUEVE CERO SEIS CERO 25. SIETE TRES OCHO SEIS NUEVE DOS 26. SIETE UNO UNO CERO UNO SIETE 27. NUEVE SIETE UNO SIETE NUEVE CINCO 28. TRES DOS CERO OCHO CINCO NUEVE 29. CERO NUEVE OCHO SIETE NUEVE TRES 30. SIETE SIETE CUATRO CUATRO DOS OCHO 31. SEIS NUEVE CERO CINCO CUATRO SIETE 32. UNO NUEVE CERO DOS UNO CERO 33. SEIS CINCO SIETE TRES UNO SEIS 34. SEIS DOS SEIS DOS CERO CUATRO 35. CINCO DOS DOS SIETE SEIS SIETE 36. OCHO SIETE DOS UNO CUATRO TRES 37. TRES CUATRO SEIS TRES SEIS SEIS 38. OCHO CERO UNO DOS SEIS CUATRO 39. UNO CERO NUEVE SIETE UNO TRES 40. UNO OCHO CERO CERO CINCO DOS 41. CERO CERO SIETE NUEVE CERO NUEVE 42. CINCO CERO SIETE DOS NUEVE CERO 43. CERO OCHO CUATRO SEIS SIETE NUEVE 44. DOS TRES DOS UNO OCHO CUATRO 45. SEIS OCHO UNO UNO CERO SEIS 46. NUEVE SEIS UNO NUEVE SIETE CUATRO 47. CINCO CERO UNO SIETE DOS OCHO 48. DOS CUATRO SIETE TRES CERO OCHO 49. DOS DOS CUATRO SEIS CUATRO CERO 50. CINCO DOS CINCO CERO SIETE DOS 51. NUEVE CINCO OCHO CINCO CUATRO CINCO 52. DOS UNO SEIS DOS TRES CINCO
107 53. CUATRO NUEVE DOS SEIS NUEVE SIETE 54. TRES SEIS CINCO NUEVE SEIS NUEVE 55. CERO CERO SEIS UNO CERO TRES 56. UNO TRES TRES OCHO TRES CUATRO 57. CINCO NUEVE CERO CUATRO DOS SEIS 58. OCHO OCHO NUEVE NUEVE CINCO CERO 59. CERO DOS DOS SIETE SEIS DOS 60. OCHO OCHO OCHO CINCO SEIS CERO 61. OCHO CERO TRES NUEVE UNO TRES 62. SIETE TRES OCHO SIETE TRES UNO 63. DOS TRES CERO CUATRO CINCO SEIS 64. SEIS CUATRO SEIS CINCO SIETE SEIS 65. CUATRO CINCO OCHO CINCO CINCO OCHO 66. SIETE CINCO CINCO TRES SEIS SIETE 67. CERO OCHO SEIS TRES SIETE SIETE 68. CERO CUATRO OCHO OCHO DOS SIETE 69. NUEVE NUEVE CERO SIETE UNO SEIS 70. CUATRO UNO OCHO UNO OCHO OCHO 71. CERO SIETE UNO SIETE CUATRO CERO 72. TRES CERO OCHO UNO UNO UNO 73. CUATRO OCHO UNO SEIS CINCO TRES 74. SEIS UNO SEIS CUATRO CUATRO NUEVE 75. UNO SEIS OCHO TRES SEIS CUATRO 76. CINCO CINCO OCHO UNO CINCO UNO 77. OCHO SIETE SEIS DOS DOS TRES 78. SEIS OCHO OCHO NUEVE UNO UNO 79. DOS CINCO TRES SIETE CERO NUEVE 80. SEIS SEIS UNO SIETE DOS TRES 81. CINCO SEIS SIETE UNO CINCO CINCO 82. SIETE TRES UNO CERO SIETE TRES 83. NUEVE CINCO SEIS DOS SIETE TRES 84. NUEVE SEIS SEIS CERO SIETE OCHO 85. TRES NUEVE SEIS TRES OCHO SIETE 86. DOS CINCO TRES CINCO CUATRO NUEVE 87. CINCO NUEVE NUEVE UNO CERO OCHO 88. SEIS UNO TRES OCHO UNO CINCO 89. SIETE CUATRO CINCO OCHO CERO OCHO 90. DOS CERO TRES CINCO OCHO CINCO
108 91. CUATRO CERO CINCO DOS TRES SEIS 92. UNO NUEVE NUEVE CINCO CINCO CUATRO 93. UNO OCHO SIETE SIETE SEIS UNO 94. DOS CUATRO CINCO CERO NUEVE NUEVE 95. CERO SEIS TRES SIETE NUEVE CINCO 96. SIETE NUEVE CUATRO CUATRO CUATRO CERO 97. TRES UNO CERO TRES CINCO CERO 98. CINCO TRES TRES CERO SIETE CINCO 99. NUEVE UNO CUATRO DOS SEIS CINCO 100. CINCO NUEVE NUEVE DOS UNO SIETE 101. UNO DOS DOS SIETE NUEVE SEIS 102. SIETE SEIS CUATRO SIETE SEIS DOS 103. TRES NUEVE TRES TRES CUATRO CERO 104. SEIS DOS CUATRO SIETE SIETE CERO 105. UNO SIETE NUEVE NUEVE DOS UNO 106. CERO DOS DOS NUEVE TRES CERO 107. NUEVE CINCO CINCO NUEVE SEIS SEIS 108. SIETE OCHO NUEVE UNO OCHO CERO 109. SEIS UNO CUATRO DOS DOS OCHO 110. SEIS CERO TRES SEIS CUATRO CINCO 111. NUEVE NUEVE CERO CUATRO SIETE OCHO 112. OCHO SEIS SIETE SEIS TRES OCHO 113. SIETE CUATRO NUEVE SEIS SIETE TRES 114. NUEVE CERO NUEVE NUEVE CERO UNO 115. SIETE TRES CUATRO CERO UNO TRES 116. SIETE SIETE NUEVE CINCO SEIS DOS 117. OCHO SEIS DOS CUATRO SEIS CUATRO
C.3. GRABACIONES BASE DE DATOS DE PRUEBA APLICACIÓN DE DIGITOS CONECTADOS 118. SIETE NUEVE CERO OCHO SIETE SEIS 119. SIETE SIETE OCHO CUATRO DOS SIETE 120. SEIS UNO CINCO TRES CUATRO CINCO 121. CUATRO CINCO TRES TRES NUEVE SEIS 122. DOS DOS SIETE DOS SEIS SEIS 123. TRES CERO UNO NUEVE UNO SIETE
109 124. TRES UNO NUEVE NUEVE OCHO NUEVE 125. OCHO SEIS SEIS SEIS SEIS SEIS 126. CERO SIETE DOS DOS NUEVE CERO 127. CINCO OCHO DOS DOS SIETE SEIS 128. NUEVE CERO CERO CUATRO CINCO UNO 129. SEIS TRES DOS CUATRO CERO TRES 130. UNO SIETE SIETE TRES CERO UNO 131. NUEVE NUEVE NUEVE NUEVE CERO CERO 132. UNO NUEVE CINCO UNO OCHO DOS 133. CINCO CINCO SIETE SEIS OCHO SEIS 134. SEIS TRES DOS UNO OCHO DOS 135. UNO CINCO OCHO SEIS SEIS CERO 136. CINCO UNO SIETE CUATRO UNO UNO 137. TRES NUEVE CUATRO CUATRO CUATRO CINCO 138. DOS TRES CUATRO OCHO UNO CINCO 139. OCHO UNO CUATRO NUEVE UNO DOS 140. SIETE NUEVE UNO OCHO TRES DOS
110
ANEXO D. RECURSOS DE MEMORIA UTILIZADOS POR LA HERRAMIENTA HVITE
D.1. ORGANIZACIÓN DE LA MEMORIA UTILIZADA POR HVITE
Estado de la Memoria Antes de la Inicialización.
Figura 53. Estado de la Memoria Antes de la Inicialización.
Estado de la Memoria Después del Reconocimiento.
111
Figura 54. Estado de la Memoria Después del Reconocimiento
Estado Final de la Memoria
Figura 55. Estado Final de la Memoria
Cada línea describe el estatus de todas las memorias asignadas y presenta el número de bloques adjudicados, el tamaño del bloque actual (numero de elementos en el bloque por el
112
numero de bytes en cada elemento), el numero total de bytes que usa la herramienta Hvite y el numero total de bytes actuales colocados al asignador. El final de cada línea presenta el nombre del asignador y su tipo: Stack[S], Mheap[M] or C-heap[M].