APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Transcript of APLICACIONES EN RECONOCIMIENTO T.G. 0446

Page 1: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 2: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 3: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 4: APLICACIONES EN RECONOCIMIENTO T.G. 0446

iv

TABLA DE CONTENIDO

INTRODUCCIÓN................................................................................................................ 1

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

2. ESPECIFICACIONES .......................................................................................... 15

2.1 PALABRAS AISLADAS .............................................................................. 15

2.2 DÍGITOS CONECTADOS. ........................................................................... 17

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

Page 5: APLICACIONES EN RECONOCIMIENTO T.G. 0446

v

3.1.6 Diccionario y Gramática. ....................................................................... 29

3.1.6.1 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

3.2 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

3.3 INTERFAZ GRÁFICA DE HTK........................................................................... 46

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

4.3 EVALUACIÓN DEL PROCESO DE RECONOCIMIENTO.......................................... 60

4.4 EVALUACIÓN DE LA COMPLEJIDAD EN LA EJECUCIÓN DE LAS HERRAMIENTAS 61

5. CONCLUSIONES .................................................................................................. 64

5.1 POSIBLES MEJORAS ......................................................................................... 66

5.2 TRABAJOS FUTUROS ....................................................................................... 67

Page 6: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 7: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 8: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 9: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 10: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 11: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 12: APLICACIONES EN RECONOCIMIENTO T.G. 0446

1

INTRODUCCIÓN

Durante las últimas décadas se ha estudiado la posibilidad de desarrollar interfaces hombre-

má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

Page 13: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 Software HTK. 2 http://htk.eng.cam.ac.uk. 3 Reconocimiento automático de habla.

Page 14: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 sistemas

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

Page 15: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 16: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 AISLADAS4

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 Referencia [Fernandez01]. 5 Figura tomada de HTKbook. [Young02]

Page 17: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 CONECTADA6

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

Page 18: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

( )∑=

−=

N

jji j

Ni

mN

c1

5.0cos2 π

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

Page 19: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 20: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

( ) ( )∑ ∑=

=M

mjmjmtjmtj oNcob

1

,;µ (1.2)

8 Figura tomada de HTKbook. [Young02]

Page 21: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 22: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 Esperanza-

Maximizació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( λ ,^

λ )∆

= ∑∈Ss

P(O, s| λ ) log P(O, s|^

λ ) (1.3)

La convergencia del anterior algoritmo fue probada en primer lugar por Baum [Baum66].

Page 23: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

ti

T

ttik

tL

otL

1

1^

)(

)(µ (1.4)

∑∑

=

=

−−=

^

1

1

)(

))()((

T

ti

T

t

Tiktiktik

tL

ootL µµ (1.5)

=

== T

t

T

tik

ik

tLi

tL

1

1^

)(

)(ω (1.6)

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:

Page 24: APLICACIONES EN RECONOCIMIENTO T.G. 0446

13

( ){ }OP ii

|maxarg ω (1.7)

Donde, de acuerdo a Bayes:

( ) ( ) ( )( )OP

POPOP ii

i

ωωω

|| = (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:

( ) ( )ii OPOP λω || = (1.9)

Xmaxarg= ( )∏

=−

T

ttxxxxx obaob

ttt2

1 )(.111

π (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) = j

max {δ j(t - 1)aji}bi(ot) (1.11)

Las condiciones iniciales en este caso son:

δ 1(1) = 1 (1.12)

Page 25: APLICACIONES EN RECONOCIMIENTO T.G. 0446

14

δ i(1) = a1ibi(o1) 2 ≤ i ≤ N – 1 (1.13)

El paso de terminación, la máxima verosimilitud, es

δ N(T) =j

max {δ j(T)ajN} (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].

Page 26: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

Page 27: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 28: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

Page 29: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 re-

estimaciones de los parámetros fue de cuatro. En el caso de la aplicación de dígitos

Page 30: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 31: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 32: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

HERRAMIENTAS DE PREPARACION DE

DATOS HSLAB, HCOPY, HLED.

HERRAMIENTAS DE ENTRENAMIENTO 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.

Page 33: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 34: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 35: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 36: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 37: APLICACIONES EN RECONOCIMIENTO T.G. 0446

26

El modelo consiste realmente de 4 estados “activos”, {S2, S3, S4, 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.

Page 38: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 39: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 40: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 41: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

Page 42: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 43: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 44: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 45: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 46: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 47: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 48: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 49: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 50: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 51: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 52: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 re-

alineamiento 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 trifonemas.

Page 53: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Se convirtió en,

Sil sil-u+n u-n+o n-o sp s+e s-e+r e-r+o r-o sp ……..

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.

Page 54: APLICACIONES EN RECONOCIMIENTO T.G. 0446

43

Una vez que los modelos dependientes del contexto11 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 Mirar HTKbook para más información de estos Modelos. 12 Este mecanismo se explica en el HTKBook.

Page 55: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

Page 56: APLICACIONES EN RECONOCIMIENTO T.G. 0446

45

Figura 20. Diagrama en bloques del Entrenamiento de los Trifonemas.

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

Page 57: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 58: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 59: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 60: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

• Evaluación de la complejidad en la ejecución de las herramientas.

4.1 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

Page 61: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 62: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 63: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Tasa de Reconocimiento %100% ×=NH

Corr

Tasa de Reconocimiento de Oraciones %100% ×=NH

Correct , N de la primera Fila

Exactitud %100×−

=N

IHAcc

Tasa de Error por Sustitución NS

Sub =

Tasa de Error por Inserción NI

Ins =

Tasa de por Omisión ND

Del =

Tasa Total de los Errores InsDelSubErr ++=

Tasa de Error de Oraciones NS

ErrS =. , N de la primera Fila

Tabla 2. Calculo de los resultados Obtenidos en Formato Básico de HTK y NIST.

Page 64: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 fonemas de la Aplicación de Dígitos Conectados.

Page 65: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

fila laen muestras de totalNúmerofila laen n Sustituciópor Errores

% =c (4.1)

La tasa de error en la fila, se calcula de la siguiente forma:

Page 66: APLICACIONES EN RECONOCIMIENTO T.G. 0446

55

N muestras de totalNúmerofila laen n Sustituciópor Errores

% =e (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.

Page 67: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 ejemplo13 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 doce quinientos

REC: siete cien dos cuatro dos seis 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]

Page 68: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 69: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 70: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 re-

estimació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 re-

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

Page 71: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 72: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 73: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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. Sólo una

herramienta posee una interfaz gráfica como es el caso de Hslab. 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

Page 74: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 75: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 sistemas

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.

Page 76: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 77: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 78: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 79: APLICACIONES EN RECONOCIMIENTO T.G. 0446

68

Estudiar el uso de la herramienta Hadapt de HTK, en la adaptación de los sistemas

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.

Page 80: APLICACIONES EN RECONOCIMIENTO T.G. 0446

69

6. BIBLIOGRAFÍA

6.1 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

Page 81: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 Speaker-

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

Page 82: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Laboratory Ltd (2002).

Page 83: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 84: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 85: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

Page 86: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 87: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 88: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 89: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

Page 90: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 91: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 92: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 93: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 94: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 sil

DE sp

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

Page 95: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

Page 96: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 97: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

Page 98: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 <MFCC_0_D_A> <VecSize> 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:

Page 99: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 100: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 101: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 102: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 103: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 a-

b+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

Page 104: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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]}

Page 105: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 106: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 107: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 108: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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 sistemas 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

Page 109: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

Errores por

sustitución.

Errores por

inserción.

Errores por

omisión. SNR

Decibeles

Tasa de Error de

Reconocimiento.

(%)

Tasa de

Reconocimiento.

(%) # % # % # %

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

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.

Page 110: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

0102030405060708090

100

Tas

a d

e E

rro

r (%

)

15 db 20 db 25 db 30 db 35 db 40 db

SNR

Tasa de los Tipos de Errores vs. SNR

Errores por Inserción

Errores por Omisión

Errores por Sustitución

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:

Page 111: APLICACIONES EN RECONOCIMIENTO T.G. 0446

99

N°. Reconocimientos

Bases de Datos SNR db

N° de Err por Omisión en las

Bases de Datos.

N° de Err por Inserción en

las Bases de Datos. Palabras

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:

Errores por

sustitución.

Errores por

inserción.

Errores por

omisión. SNR

Decibeles

Tasa de

Error de

Rec. de

Oraciones.

Tasa de Rec.

de

Oraciones.

Tasa

de

Error

de

Rec.

Tasa

de

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.

Page 112: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

0

20

40

60

80

100

120

Número de Errores

15dB

20dB

25dB

30dB

35dB

40dB

SNR

Tipo de Errores vs. SNR

Número de Errores porSustitución

Número de Errores porInserción

Número de Errores porOmisión

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,

Page 113: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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:

Fonemas

N° de Veces que fue Rec.

Correctamente/N° total del

fonema.

Número de Errores

por Omisión.

Número de Errores

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,

Page 114: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

0102030405060708090

Tasa de Error (%)

15db

20db

25db

30db

35db

40db

SNR

Tasa de los Tipos de Errores vs. SNR

Tasa de Errores porSustitución

Tasa de Errores porOmisión

Tasa de Erorres porInserción

Figura 52. Gráfica de la Tasa de los Tipos De Errores vs. SNR Aplicación Dígitos Conectados a Nivel de

Fonemas.

Page 115: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 116: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 117: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 118: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 119: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 120: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 121: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 122: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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.

Page 123: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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

Page 124: APLICACIONES EN RECONOCIMIENTO T.G. 0446

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