desarrollo de un segmentador fonético automático para...

292
UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS DE TELECOMUNICACIÓN PROYECTO FIN DE CARRERA Desarrollo de un segmentador fonético automático para habla expresiva basado en modelos ocultos de Markov JUAN CARMONA MARISCAL Ingeniero de Telecomunicación Madrid, 2012

Upload: duongphuc

Post on 18-Jan-2019

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

UNIVERSIDAD POLITÉCNICA DE MADRID

ESCUELA TÉCNICA SUPERIOR DE INGENIEROS

DE TELECOMUNICACIÓN

PROYECTO FIN DE CARRERA

Desarrollo de un segmentador

fonético automático

para habla expresiva basado en

modelos ocultos de Markov

JUAN CARMONA MARISCAL

Ingeniero de Telecomunicación

Madrid, 2012

Page 2: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior
Page 3: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

UNIVERSIDAD POLITÉCNICA DE MADRID

DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA

ESCUELA TÉCNICA SUPERIOR DE INGENIEROS

DE TELECOMUNICACIÓN

PROYECTO FIN DE CARRERA

Desarrollo de un segmentador

fonético automático

para habla expresiva basado en

modelos ocultos de Markov

JUAN CARMONA MARISCAL

Ingeniero de Telecomunicación

Tutor del Proyecto

JUAN MANUEL MONTERO MARTÍNEZ

Doctor Ingeniero de Telecomunicación

2012

Page 4: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior
Page 5: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

PROYECTO FIN DE CARRERA

Título: Desarrollo de un segmentador fonético automático

para habla expresiva basado en modelos ocultos de Markov.

Autor: Juan Carmona Mariscal

Tutor: Dr. Ingeniero Juan Manuel Montero Martínez

Departamento: Ingeniería Electrónica de la Escuela Técnica

Superior de Ingenieros de Telecomunicación de

Madrid de la Universidad Politécnica de Madrid

Grupo: Tecnología del Habla

MIEMBROS DEL TRIBUNAL

Presidente: D. Rubén San Segundo Hernández Firma:

Vocal: D. Juan Manuel Montero Martínez Firma:

Secretario: D. Roberto Barra Chicote Firma:

Suplente: D. Fernando Fernández Martínez Firma:

Fecha de Lectura:

Calificación:

Page 6: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior
Page 7: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

AGRADECIMIENTOS

En primer lugar tengo que dar gracias a Juancho por su enorme

paciencia al explicarme tantas cosas acerca de un campo que de

entrada desconocía, por tantos viernes por la tarde que me ha dedicado

en exclusiva, y por la inmensa ayuda que me ha prestado a lo largo de

todo el proyecto.

Gracias a todos los compañeros y amigos que me han acompañado

durante la carrera, Javi, Cristina, Beatriz, Miriam, Rocío y tantos otros

que me han hecho esta etapa de mi vida más agradable y feliz; y en

especial a Rosi, por ser la que me animó a hacer este proyecto y por

haber estado siempre cerca de mí a lo largo de los años.

Gracias a Marta, por animarme siempre en casa a que termine este

proyecto, por querer compartir su vida conmigo, por el buen equipo que

hacemos, y sobre todo por creer en mí y hacerme sentir un hombre

capaz de conseguir cualquier cosa que me proponga.

Y dejo para el final a los más importantes. Gracias a mis padres, por

tantas noches en vela, por preocuparse de mí a todas horas, por darme

constantemente su confianza y apoyo, y por conseguir, a pesar de llevar

tantos años fuera, que con ellos me siga sintiendo como en casa. Con el

fin de mi carrera creen haber cerrado un ciclo, tras haber dejado a sus

cuatro hijos preparados para enfrentarse al mundo, pero en realidad me

queda tanto por aprender de ellos... Espero, si Dios me ayuda, poder

llegar algún día a ser tan buen padre como ellos lo han sido para mí.

Page 8: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior
Page 9: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

RESUMEN

Una de las principales áreas de estudio dentro de las Tecnologías del Habla es

la síntesis de habla expresiva, puesto que las emociones pueden dotar de

naturalidad y variabilidad a la voz sintetizada. El uso de estrategias basadas

en la concatenación de unidades de voz pregrabada permite obtener una alta

calidad en la voz sintetizada si se dispone de múltiples versiones de cada

unidad, si bien son muy costosas debido a la necesidad de contar con un gran

conjunto de unidades segmentadas y etiquetadas con precisión. Una manera

de reducir los costes del segmentado y etiquetado manual es utilizar

herramientas de segmentación automática como la que se propone en este

proyecto. Las emociones alteran las principales características de la voz, por lo

que pueden tener una cierta influencia en el proceso de segmentación del

habla expresiva. Cuando se dispone de la transcripción fonética, uno de los

principales métodos para abordar el problema de la segmentación fonética

automática es el uso de técnicas basadas en los Modelos Ocultos de Markov

(Hidden Markov Models). Estas técnicas generan la segmentación automática

mediante la comparación recurrente entre los datos procedentes de la voz

grabada y la transcripción fonética de la locución a segmentar, por medio del

algoritmo de Viterbi. Nuestro sistema de segmentación se basará en los

Modelos Ocultos de Markov y se implementará mediante el uso de las

herramientas HTK (Hidden Markov Model Toolkit).

PALABRAS CLAVE

Segmentación automática de voz, habla expresiva, modelos ocultos de Markov,

HMM, HTK.

Page 10: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior
Page 11: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

ÍNDICE DE CONTENIDOS

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

1.1 BREVE HISTORIA DE LAS TECNOLOGÍAS DEL HABLA............................................................................ 3

1.2 ESTRUCTURA GENERAL DE UN SISTEMA DE RECONOCIMIENTO Y SEGMENTACIÓN DEL HABLA ............ 7

1.3 ALGORITMOS DE EXTRACCIÓN DE CARACTERÍSTICAS DE VOZ ............................................................. 9

1.3.1 ANÁLISIS POR BANCO DE FILTROS DIGITALES .......................................................................... 10

1.3.2 TRANSFORMADA DISCRETA DE FOURIER ................................................................................. 11

1.3.3 PREDICCIÓN LINEAL ................................................................................................................ 12

1.3.4 ANÁLISIS CEPSTRAL ................................................................................................................ 13

1.3.5 PREDICCIÓN LINEAL PERCEPTUAL .......................................................................................... 16

1.4 LOS MODELOS OCULTOS DE MARKOV .............................................................................................. 17

2. SÍNTESIS DE VOZ Y SEGMENTACIÓN AUTOMÁTICA DE UNIDADES ..................... 20

2.1 LA SÍNTESIS DE VOZ .......................................................................................................................... 20

2.2 LA SÍNTESIS POR CONCATENACIÓN DE UNIDADES ............................................................................. 22

2.3 LA SEGMENTACIÓN AUTOMÁTICA DE UNIDADES ............................................................................... 24

3. EL HABLA CON EMOCIONES .................................................................................................... 27

3.1 EL CONCEPTO DE EMOCIÓN Y SUS FUNCIONES ................................................................................... 27

3.2 COMPONENTES DE LA EMOCIÓN ........................................................................................................ 30

3.3 LA EMOCIÓN Y SU EFECTO EN EL HABLA ........................................................................................... 31

3.3.1 EL PITCH ................................................................................................................................. 32

3.3.2 LA DURACIÓN.......................................................................................................................... 32

3.3.3 LA CALIDAD DE VOZ ................................................................................................................ 33

3.4 LA CLASIFICACIÓN DE LAS EMOCIONES ............................................................................................. 34

3.5 LAS EMOCIONES ESTUDIADAS CON NUESTRO SEGMENTADOR FONÉTICO AUTOMÁTICO ..................... 38

4. DESCRIPCIÓN DE LAS HERRAMIENTAS EMPLEADAS ................................................. 40

4.1 HTK ................................................................................................................................................. 40

4.1.1 FUNCIONAMIENTO GENERAL DE HTK ..................................................................................... 41

4.1.2 PARAMETRIZACIÓN CON HTK ................................................................................................. 45

4.1.3 CREACIÓN DE MODELOS DE MARKOV..................................................................................... 52

4.1.4 ENTRENAMIENTO DE LOS HMM .............................................................................................. 58

4.1.5 RED GRAMATICAL Y DICCIONARIO.......................................................................................... 63

4.1.6 RECONOCIMIENTO Y EVALUACIÓN DE RESULTADOS................................................................ 65

4.2 EL LENGUAJE DE SCRIPTS ......................................................................................................... 67

4.2.1 GESTIÓN DE ARGUMENTOS EN LOS PROCESOS POR LOTES ....................................................... 68

Page 12: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

4.2.2 COMANDOS ESPECÍFICOS PARA PROCESOS POR LOTES ............................................................. 68

4.3 EL LENGUAJE PERL ..................................................................................................................... 75

4.3.1 ESTRUCTURA DEL LENGUAJE................................................................................................... 76

5. IMPLEMENTACIÓN DEL SEGMENTADOR: ESTRUCTURA DEL PROGRAMA Y

SUS SCRIPTS ........................................................................................................................................ 82

5.1 LA ESTRUCTURA DE DIRECTORIOS DEL SEGMENTADOR ................................................. 83

5.2 LOS SCRIPTS DEL SEGMENTADOR .......................................................................................... 86

5.2.1 FULL.BAT ................................................................................................................................ 87

5.2.2 EXPERIM.BAT .......................................................................................................................... 90

5.2.3 SETBD.BAT ............................................................................................................................. 92

5.2.4 PARAM.BAT ........................................................................................................................... 106

5.2.5 TRAIN_MONOPHONES.BAT .................................................................................................... 109

5.2.6 TRAIN_AUTO.BAT ................................................................................................................. 118

5.2.7 RECO_MONOPHONES.BAT ..................................................................................................... 122

5.2.8 RECO_GAUSS.BAT ................................................................................................................. 123

5.2.9 SEGM_MONOPHONES.BAT ..................................................................................................... 127

5.2.10 SEGM_GAUSS.BAT ............................................................................................................... 127

5.2.11 EVAL_MONOPHONES.BAT ................................................................................................... 131

5.2.12 EVAL_GAUSS.BAT ............................................................................................................... 131

5.3 SCRIPTS AUXILIARES ............................................................................................................... 133

5.3.1 LIMPIA.BAT ........................................................................................................................... 134

5.3.2 MI_TYPE.BAT ........................................................................................................................ 134

5.3.3 SUMMARY.BAT ...................................................................................................................... 135

5.4 PROGRAMAS EN PERL USADOS EN EL SEGMENTADOR ................................................... 136

5.4.1 GENPROTO.PER ..................................................................................................................... 137

5.4.2 BLANCOS2RETORNOS.PER ..................................................................................................... 140

5.4.3 MLF2FON.PER ....................................................................................................................... 140

5.4.4 MLF2C.PER ............................................................................................................................ 141

5.4.5 CUENTALINEAS.PER .............................................................................................................. 142

5.4.6 AUTOTRAIN.PER ................................................................................................................... 143

6. DESCRIPCIÓN DE LA BASE DE DATOS SES .................................................................... 145

6.1 LA BASE DE DATOS SES .................................................................................................................. 145

6.1.1 LAS FRASES CORTAS .............................................................................................................. 146

6.1.2 LOS PÁRRAFOS ...................................................................................................................... 147

6.2 LA GRABACIÓN DE LA BASE DE DATOS ............................................................................................ 148

6.3 ETIQUETADO Y MARCADO DE SES .................................................................................................. 149

6.4 LA BASE DE DATOS SES EN NUESTRO SISTEMA ............................................................................... 149

Page 13: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

7. DESCRIPCIÓN DE LA BASE DE DATOS SEV.................................................................... 152

7.1 LA BASE DE DATOS SEV ................................................................................................................. 152

7.1.1 EL CONTENIDO DE VOZ DE LA BASE DE DATOS ...................................................................... 153

7.2 ETIQUETADO Y MARCADO DE SEV ................................................................................................. 154

7.3 LA BASE DE DATOS SEV EN NUESTRO SISTEMA .............................................................................. 155

8. EJECUCIONES Y RESULTADOS ............................................................................................ 158

8.1 ELECCIÓN DE LA VERSIÓN DE HTK ....................................................................................... 158

8.2 DETERMINACIÓN DEL NÚMERO ÓPTIMO DE ESTADOS, ITERACIONES Y GAUSSIANAS

............................................................................................................................................................. 160

8.3 COMBINACIONES DE COEFICIENTES .................................................................................... 170

8.4 COMBINACIONES DE FRASES Y PÁRRAFOS COMO GRUPOS DE ENTRENAMIENTO Y

EVALUACIÓN ................................................................................................................................... 179

8.5 SEGMENTACIÓN INTEREMOCIONES ..................................................................................... 184

8.6 SEGMENTACIÓN CON NORMALIZACIÓN CEPSTRAL ........................................................ 194

8.7 VARIACIÓN DEL NÚMERO DE CANALES .............................................................................. 198

8.8 VARIACIÓN DEL DESPLAZAMIENTO DE TRAMAS Y DEL TAMAÑO DE LA VENTANA

DE ANÁLISIS ..................................................................................................................................... 200

8.9 INCLUSIÓN DE FILTRADO ........................................................................................................ 204

8.10 DETERMINACIÓN DEL NÚMERO ÓPTIMO DE ESTADOS, ITERACIONES Y

GAUSSIANAS CON SEV ................................................................................................................... 207

8.11 COMBINACIONES DE COEFICIENTES CON SEV ................................................................ 211

8.12 SEGMENTACIÓN INTEREMOCIONES CON SEV ................................................................. 215

8.13 SEGMENTACIÓN CON EL LOCUTOR MASCULINO DE SEV ............................................. 220

8.14 SEGMENTACIÓN CON LA BASE DE DATOS UPC................................................................ 221

9. CONCLUSIONES Y LÍNEAS FUTURAS DE INVESTIGACIÓN ....................................... 224

9.1 CONCLUSIONES ............................................................................................................................... 224

9.1.1 CONCLUSIONES ACERCA DEL SISTEMA .................................................................................. 224

9.1.2 CONCLUSIONES ACERCA DE LOS EXPERIMENTOS REALIZADOS .............................................. 229

9.2 LÍNEAS FUTURAS DE INVESTIGACIÓN .............................................................................................. 235

10. BIBLIOGRAFÍA ........................................................................................................................... 237

11. PLIEGO DE CONDICIONES ................................................................................................... 241

11.1 CONDICIONES GENERALES ............................................................................................................ 241

11.2 CONDICIONES GENERALES A TODOS LOS PROGRAMAS .................................................................. 243

11.3 CONDICIONES GENERALES DE PRUEBA .......................................................................................... 243

11.4 RECURSOS MATERIALES ................................................................................................................ 244

11.5 RECURSOS LÓGICOS ...................................................................................................................... 244

Page 14: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

12. PRESUPUESTO ........................................................................................................................... 245

12.1 PRESUPUESTO DE EJECUCIÓN MATERIAL ....................................................................................... 245

12.1.1 RELACIÓN DE SALARIOS ...................................................................................................... 246

12.1.2 RELACIÓN DE OBLIGACIONES SOCIALES .............................................................................. 246

12.1.3 RELACIÓN DE SALARIOS EFECTIVOS TOTALES ..................................................................... 246

12.1.4 COSTE DE LA MANO DE OBRA .............................................................................................. 247

12.1.5 COSTE TOTAL DE MATERIALES ............................................................................................ 247

12.1.6 IMPORTE TOTAL DEL PRESUPUESTO DE EJECUCIÓN MATERIAL ............................................ 248

12.2 IMPORTE DE EJECUCIÓN POR CONTRATA ....................................................................................... 248

12.3 HONORARIOS FACULTATIVOS ....................................................................................................... 249

12.4 IMPORTE TOTAL DEL PROYECTO ................................................................................................... 250

ANEXO 1. PROGRAMAS AJENOS EMPLEADOS ................................................................... 251

A.1.1 MACRO.EXE ................................................................................................................................ 251

A.1.2 COPIAMODELOS.EXE .................................................................................................................. 253

A.1.3 SCORE_MONO.EXE ...................................................................................................................... 259

ANEXO 2. FICHEROS DE CONFIGURACIÓN ......................................................................... 267

A.2.1 CONFIG_FILE_HCOPY : CONFIG_HCOPY_SES_MFCC_ .......................................................... 267

A.2.2 CONFIG_FILE_HCOPY : CONFIG_HCOPY_SES_PLP_ .............................................................. 268

A.2.3 CONFIG_FILE_HCOMPV : CONFIG_HCOMPV_MFCC_ ............................................................. 269

A.2.4 CONFIG_FILE_HCOMPV : CONFIG_HCOMPV_PLP_ ................................................................ 270

A.2.5 CONFIG_FILE_CMN : CONFIG_MFCC_CMN_CVN.CMN ............................................................ 270

A.2.6 CONFIG_FILE_CMN : CONFIG_PLP_CMN_CVN.CMN................................................................ 270

A.2.7 CONFIG_FILE_CVN : CONFIG_MFCC_CMN_CVN.CVN ............................................................. 270

A.2.8 CONFIG_FILE_CVN : CONFIG_PLP_CMN_CVN.CVN ................................................................. 271

A.2.9 CONFIG_FILE_TRAIN : CONFIG_TR_MFCC_ ........................................................................... 271

A.2.10 CONFIG_FILE_TRAIN : CONFIG_TR_MFCC_CMN_CVN ......................................................... 271

A.2.11 CONFIG_FILE_TRAIN : CONFIG_TR_PLP_ ............................................................................. 272

A.2.12 CONFIG_FILE_TRAIN : CONFIG_TR_PLP_CMN_CVN ............................................................. 272

ANEXO 3. TEXTOS DE LAS BASES DE DATOS EMPLEADAS ........................................ 274

A.3.1 BASE DE DATOS SES: PÁRRAFOS (R) ................................................................................. 274

A.3.2 BASE DE DATOS SES: FRASES (F) ........................................................................................ 275

A.3.3 BASE DE DATOS SEV: FRASES PROVENIENTES DE SES (F) ........................................... 276

A.3.4 BASE DE DATOS SEV: FRASES PROVENIENTES DEL QUIJOTE (Q)............................... 277

A.3.5 BASE DE DATOS SEV: FRASES PROVENIENTES DE PROSODIA (P) .............................. 277

Page 15: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 1

1. INTRODUCCIÓN

Una de las principales áreas de estudio dentro de las Tecnologías del

Habla es la síntesis de habla expresiva, puesto que las emociones

pueden dotar de naturalidad y variabilidad a la voz sintetizada.

El uso de estrategias basadas en la concatenación de unidades de voz

pregrabada permite obtener una alta calidad en la voz sintetizada si se

dispone de múltiples versiones de cada unidad, si bien son muy

costosas debido a la necesidad de contar con un gran conjunto de

unidades segmentadas y etiquetadas con precisión. Una manera de

reducir los costes del segmentado y etiquetado manual es utilizar

herramientas de segmentación automática como la que se propone en

este proyecto.

Las emociones alteran las principales características de la voz, por lo

que pueden tener una cierta influencia en el proceso de segmentación

del habla expresiva.

Cuando se dispone de la transcripción fonética, uno de los principales

métodos para abordar el problema de la segmentación fonética

automática es el uso de técnicas basadas en los Modelos Ocultos de

Markov (Hidden Markov Models). Estas técnicas generan la

segmentación automática mediante la comparación recurrente entre los

Page 16: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 2

datos procedentes de la voz grabada y la transcripción fonética de la

locución a segmentar, por medio del algoritmo de Viterbi.

Nuestro sistema de segmentación se basará en los Modelos Ocultos de

Markov y se implementará mediante el uso de las herramientas HTK

(Hidden Markov Model Toolkit).

En este primer capítulo realizaremos una breve introducción al

panorama general en el que se inscribe nuestro proyecto.

Comenzaremos situando con una breve historia el reconocimiento

automático de voz como base de conocimiento que se encuentra en los

orígenes de las tecnologías del habla, y que más adelante dio lugar al

estudio de la síntesis de voz y a la propia segmentación, y que por tanto

comparte principios teóricos con ellas. Pasaremos entonces a ver cuál

es la estructura general de un sistema de reconocimiento y

segmentación automática del habla. A continuación resumiremos los

algoritmos de extracción de características, prestando especial atención

a los dos que utilizaremos en los experimentos con nuestro

segmentador, el basado en coeficientes cepstrales en frecuencia MEL

(MFCC) y el basado en predicción lineal perceptual (PLP). Por último

dedicaremos un apartado a los Modelos Ocultos de Markov como

modelo de encaje de patrones en el que se basa nuestro segmentador.

Los dos capítulos siguientes los dedicaremos a la síntesis de voz y la

segmentación automática, y al habla con emociones, al ser éstas

determinantes para el proceso de segmentación automática del habla.

Page 17: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 3

1.1 Breve historia de las tecnologías del habla

En los orígenes de las tecnologías del habla se encuentra el interés

científico por conseguir que un ordenador entendiera la voz humana y

fuera capaz de convertir a texto las locuciones dictadas o de realizar

acciones en consonancia con la interpretación de dichas locuciones. Es

lo que denominamos reconocimiento automático del habla. Más

adelante surge el interés por realizar la conversión inversa texto-voz,

denominada síntesis de voz y que está estrechamente relacionada con

nuestro problema de segmentación automática, por lo que dedicaremos

el siguiente capítulo a su descripción. Aunque en este proyecto nos

centraremos en el problema de la segmentación automática, nuestro

sistema también realiza reconocimiento automático del habla. Veamos

una breve introducción a la historia de esta rama de la ciencia.

Durante las últimas décadas, la investigación en el campo del

reconocimiento automático del habla se ha venido desarrollando de una

forma intensa, empujada, a juicio del profesor Álvarez Marquina

[Álvarez 2001], por los avances en procesamiento de señal, algoritmos,

arquitecturas y plataformas de cómputo. La historia de la investigación

en este campo se ha venido llevando a cabo durante un periodo que

abarca la segunda mitad del siglo XX y principios del XXI.

Los primeros intentos por construir máquinas que realizaran tareas de

reconocimiento se remontan a la década de los 50, cuando diversos

investigadores trataban de explotar los principios fundamentales de la

fonética acústica. En 1952, en los laboratorios Bell, K. Davis, R.

Biddulph y S. Balashek crearon un sistema electrónico que permitía

Page 18: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 4

identificar para un solo hablante, pronunciaciones de los 10 dígitos

realizadas de forma aislada. El fundamento de esta máquina se basaba

en medidas de las resonancias espectrales del tracto vocal para cada

dígito. Las medidas se obtenían mediante el uso de bancos de filtros

analógicos. En 1959, en la University College de Londres, P. Denes

trataba de desarrollar un sistema para reconocer 4 vocales y 9

consonantes. El aspecto más novedoso de su trabajo era el uso de

información estadística, acerca de las secuencias válidas de fonemas en

inglés, con el objetivo de mejorar el rendimiento de la tarea para

palabras que contuvieran dos o más fonemas. Éste constituye el primer

intento de incorporar conocimiento lingüístico en este tipo de sistemas.

Hasta este momento, todos los sistemas son dispositivos electrónicos.

Los primeros experimentos de reconocimiento desarrollados en

ordenadores tienen lugar al final de los años 50 y principios de los 60,

principalmente en el Lincoln Laboratory a cargo de J. Forgie y C. Forgie.

En los años 60 se generaliza el uso de ordenadores en este campo. En

estos años, se inician 3 proyectos que modifican el curso de la

investigación y desarrollo en el área del reconocimiento de voz de

manera notable. El primero de ellos lo realizan T. Martin, A. Nelson y H.

Zadell en los RCA Laboratories (1964). Su objetivo fundamental era

desarrollar soluciones realistas para los problemas asociados con la

falta de uniformidad de las escalas de tiempo en los hechos de habla.

Como consecuencia de este trabajo, los autores diseñaron un conjunto

de métodos elementales de normalización en el tiempo, que se basaban

en la detección fiable de los puntos de principio y fin de discurso. De

esta forma conseguían reducir la variabilidad en las tasas de

Page 19: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 5

reconocimiento. Al mismo tiempo en la Unión Soviética, T. K. Vintsyuk,

propone la utilización de métodos de programación dinámica para

conseguir el alineamiento temporal de pares de realizaciones de habla.

El tercer trabajo lo realiza D. R. Reddy (Stanford University, 1966) en el

campo del reconocimiento de habla continua mediante el seguimiento

dinámico de fonemas.

Los años 70 representan un periodo muy activo para esta disciplina,

distinguiéndose dos tipos de actividades principales: el reconocimiento

de palabras aisladas, que comienza a ser viable y utilizable en la

práctica; y los primeros intentos de construir reconocedores de habla

continua y de grandes vocabularios, basados en el uso de conocimiento

de alto nivel, fundamentalmente de tipo sintáctico.

Si en la década de los 70 los sistemas de reconocimiento de vocablos

aislados alcanzan una cierta madurez, los años 80 se caracterizan por

la generalización en la construcción de sistemas de reconocimiento, que

ahora serán capaces de tratar cadenas de palabras pronunciadas de

una manera fluida. Se extienden las técnicas de programación dinámica

al reconocimiento de palabras conectadas.

En estos años se produce un giro metodológico como consecuencia de

pasar de métodos basados en comparación de plantillas a métodos

basados en modelado estadístico. Esto es debido a la extensión en el

uso de los Modelos Ocultos de Markov (HMM). Estos métodos habían

sido desarrollados en la década anterior para tratar con problemas de

habla continua, pero su aceptación generalizada no sucedió hasta unos

10 años después. A partir de entonces se han desarrollado numerosas

Page 20: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 6

mejoras y actualmente constituyen los mejores modelos disponibles

para capturar y modelar la variabilidad presente en el habla.

La década de los 90 supone en cierta manera la continuidad en los

objetivos ya propuestos, ampliando, eso sí, el tamaño de los

vocabularios a la vez que se diversifican los campos de aplicación. Se

dedican muchos estudios a los servicios sobre la línea telefónica y a

disponer de sistemas capaces de enfrentarse a situaciones cada vez más

reales, al mismo tiempo que crece el interés por el estudio de los

procesos de reconocimiento en condiciones de ruido y adversas en

general.

El profesor Álvarez Marquina [Álvarez 2001] marca como conclusiones

de las experiencias acumuladas a lo largo de estas décadas de estudio

las siguientes:

Los sistemas del presente y, presumiblemente, los que puedan

venir en el futuro se basarán al menos en parte, en modelos y

técnicas que aparecieron relativamente pronto en la historia del

reconocimiento automático del habla.

La transformación de un prototipo de laboratorio de excelentes

prestaciones en un sistema comercial fiable es un proceso arduo

y no dominado en su totalidad.

Las prestaciones del mejor sistema construido en la actualidad,

en lo relativo a las tasas de reconocimiento, están por debajo en

Page 21: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 7

un orden de magnitud respecto a las que serían atribuibles al ser

humano.

La solución global al problema no se encontrará de manera

inmediata por el trabajo de un investigador ingenioso, sino como

consecuencia de un trabajo continuado, que incorpore

conocimientos multidisciplinares, incluyendo trabajos de

investigación básica en los campos de producción y percepción

del habla.

1.2 Estructura general de un sistema de

reconocimiento y segmentación del habla

El esquema general que debe seguir un sistema automático de

reconocimiento y segmentación del habla como el nuestro comprende

las siguientes etapas [Álvarez 2001]:

Representación de la señal: Tras obtener los datos de entrada al

sistema por medio de la digitalización de la señal de voz, las

muestras del paso anterior se transforman en un conjunto de

medidas o características útiles. La realización de esta tarea se

lleva a cabo a un ritmo constante, usualmente de entre 10 y 20

ms. Como producto de salida se obtienen una serie de vectores

que de alguna manera contienen en esencia la señal original, pero

con un tamaño mucho menor. Un vector de características deberá

contener toda la información relevante para realizar el proceso de

Page 22: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 8

reconocimiento y segmentación, eliminando el resto de contenidos

redundantes o que no sean útiles para el sistema.

Búsqueda de patrones: En la fase de búsqueda de patrones las

medidas de la etapa anterior se emplean para encontrar la

palabra candidata que proporcione el mejor encaje. Para ello se

tienen en cuenta las restricciones impuestas por los modelos

acústico, léxico y de lengua (gramática) disponibles.

Modelado y clasificación: Los sistemas de reconocimiento

intentan estimar y configurar las fuentes de variación descritas

anteriormente de diversas formas en lo que constituye la fase de

modelado y clasificación. En el nivel de representación de la

señal, los desarrolladores emplean representaciones que enfaticen

las características importantes desde un punto de vista

perceptual; por otra parte se intenta desenfatizar aquellas otras

que son dependientes de determinados hablantes. La adaptación

a un determinado hablante o a las condiciones del entorno de

funcionamiento del sistema se realiza a través de un conjunto de

procesos de normalización. La normalización tiene como finalidad

restaurar las características del vector, es decir, conseguir

medidas con valores lo más próximos posibles a los que se

obtendrían en condiciones neutras o a las presentes cuando se

entrenó el reconocedor.

Proceso de entrenamiento: El entrenamiento constituye una

etapa previa a la entrada en funcionamiento del conjunto y tiene

Page 23: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 9

como finalidad establecer los diferentes conjuntos de modelos

empleados durante el proceso de búsqueda:

o Modelos acústicos, que recojan realizaciones dependientes

del género del locutor, entonaciones, variantes dialectales,

etc.

o Modelos léxicos, que contemplen pronunciaciones

alternativas de las palabras, con objeto de permitir que los

algoritmos de búsqueda encuentren diferentes caminos.

o Modelos de lengua, que permitan estimar la frecuencia de

ocurrencia de determinadas secuencias de palabras.

Además durante el entrenamiento se puede obtener también la

información necesaria para ajustar los procesos de modelado y

normalización.

1.3 Algoritmos de extracción de características de

voz

Como acabamos de ver, el objetivo de la etapa de representación de la

señal será parametrizarla, esto es, transformar la información presente

en la traza de voz en un conjunto reducido de valores. Este conjunto

reducido de valores será de dos tipos:

Coeficientes estáticos, obtenidos a partir del análisis de pequeños

fragmentos de la señal de voz (5- 20 ms), y

Coeficientes dinámicos, producto de la combinación de

componentes de diversos vectores.

Page 24: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 10

Los principales métodos de extracción paramétrica son [Álvarez 2001]:

1.3.1 Análisis por banco de filtros digitales

El uso de bancos de filtros digitales, implementados inicialmente como

filtros analógicos, ha sido históricamente la primera aproximación al

procesamiento del habla. Un banco de filtros paso banda puede

entenderse como un modelo sencillo de las etapas iniciales del sistema

auditivo humano. La señal inicial se descompone en un conjunto

discreto de muestras espectrales, que contienen una información

similar a la que se presenta en los niveles superiores del sistema

auditivo.

Con objeto de aproximarse a la sensibilidad del oído humano, que no

tiene una respuesta lineal en frecuencia, existen diferentes escalas.

Algunos ejemplos expresados de forma analítica, siendo f el valor de

frecuencia en Hz, son la escala de Bark:

y la escala de Mel:

Ésta última es la más usual en aplicaciones de tratamiento de la voz, y

será la utilizada en una de las dos técnicas que emplearemos en

nuestros experimentos (MFCC).

Page 25: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 11

Un banco de filtros está constituido por un conjunto de filtros, cada uno

de los cuales retiene la información de una serie determinada de

frecuencias del espectro. A su vez cada filtro puede ponderar de manera

diferente las frecuencias que quedan bajo su ámbito. Este tipo de

técnica generalmente se emplea de manera conjunta con otros métodos

como son el cálculo de coeficientes cepstrales (la técnica MFCC que,

como hemos dicho, emplearemos en nuestros experimentos).

1.3.2 Transformada discreta de Fourier

La transformada discreta de Fourier o DFT (Discrete Fourier Transform)

se define como:

donde N es el número de muestras de la ventana que se va a analizar.

La DFT es periódica en la frecuencia con periodo fs (frecuencia de

muestreo).

La motivación del uso de la DFT parte del hecho de la utilidad que tiene

descomponer la señal de voz de partida en sus componentes en

frecuencia.

Un aspecto importante si queremos usar la DFT con señales de voz es

que debemos asumir que al menos en periodos cortos de tiempo se

cumple que la señal es estacionaria. En la realidad esto no es

estrictamente así aunque podemos suponerlo; la solución consiste en

multiplicar la señal por una función ventana que sea nula fuera de un

Page 26: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 12

determinado rango y reproducir el resultado de forma que tengamos un

número de bloques iguales. La ventana rectangular se define como:

Sin embargo la utilización de esta ventana trae consigo que en los

puntos de inicio y fin exista una fuerte discontinuidad. Para reducir el

efecto de discontinuidad al mínimo debemos emplear tipos de ventana

que tiendan a reducir a 0 los valores de las muestras en los extremos.

Aunque existe un buen número de tipos de ventana, la más común en

el análisis de la voz es la que se conoce como ventana de Hamming:

La complejidad de la DFT es alta y, con objeto de acelerar el cálculo de

este procedimiento, se emplea habitualmente lo que se conoce como

transformada rápida de Fourier o FFT (Fast Fourier Transform).

1.3.3 Predicción lineal

El método de predicción lineal o LP (Linear Prediction) es históricamente

uno de los métodos más importantes para el análisis de la voz. Su

fundamento se basa en establecer un modelo de filtro del tipo todo polo,

para la fuente de sonido. La principal motivación del modelo todo polo

viene dada porque permite describir la función de transferencia de un

tubo, que estuviese formado por diferentes secciones sin pérdidas.

Page 27: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 13

El método de predicción lineal constituye una aproximación razonable

al habla producida por la excitación del tracto vocal causada por el

conjunto de pulsos glotales. Con un número suficiente de parámetros el

modelo de predicción lineal puede constituir una aproximación

adecuada a la estructura espectral de todo tipo de sonidos.

El método de predicción lineal recibe este nombre porque pretende

extrapolar el valor de la siguiente muestra de voz x(n) como la suma

ponderada de muestras pasadas x(n-1), x(n-2), ..., x(n-K):

Para ello se debe realizar el cálculo de los coeficientes ai minimizando

alguna función de error E, concretamente de mínimos cuadrados, sobre

una ventana de tamaño N.

1.3.4 Análisis cepstral

Desde la introducción, en los primeros años de la década de los 70, de

las técnicas homomórficas de procesado de señal, su importancia

dentro del campo del reconocimiento de voz ha sido muy grande. Los

sistemas homomórficos son una clase de sistemas no lineales que

obedecen a un principio de superposición (los sistemas lineales

constituyen un caso especial).

Page 28: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 14

La motivación para realizar un procesado homomórfico del habla viene

de que estas técnicas pueden servir para separar la acción del tracto

vocal (filtro lineal variable en el tiempo) de la señal de excitación, como

se representa en la siguiente figura:

Figura 1.1: Técnica homomórfica de descomposición de la señal

de voz [Álvarez 2001]

La señal de voz s(n) se descompone en una parte de excitación e(n) y en

un filtro lineal H(eiθ). Así, en el dominio de la frecuencia tenemos:

Para la mayoría de las aplicaciones de voz sólo necesitamos la amplitud

espectral:

En el dominio logarítmico, las dos componentes anteriores pueden

separarse empleando técnicas convencionales de procesamiento de

señal.

Figura 1.2: Análisis cepstral partiendo de la transformada

discreta de Fourier [Álvarez 2001]

Page 29: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 15

En este caso, el valor c(n) se conoce como coeficientes cepstrales

derivados de la transformada de Fourier. Ns es el número de puntos con

los que se calculó la DFT.

A la hora de calcular un coeficiente cepstral es posible emplear bandas

definidas según escalas de Mel. Este tipo de parámetros se conoce como

coeficientes cepstrales con frecuencia en la escala de Mel o MFCC (Mel

Frequency Cepstral Coefficients), que será una de las dos técnicas

principales que emplearemos en nuestros experimentos. En la siguiente

figura se aprecia el esquema de parametrización con esta técnica.

Figura 1.3: Esquema de la parametrización para la obtención

de MFCC [Álvarez 2001]

Page 30: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 16

1.3.5 Predicción Lineal Perceptual

La técnica de predicción lineal perceptual o PLP (Perceptual Linear

Prediction), es en esencia una combinación de las técnicas de la

transformada discreta de Fourier y de predicción lineal como puede

verse en la figura:

Figura 1.4: Predicción lineal perceptual [Álvarez 2001]

Para obtener el análisis de banda crítica se utiliza primeramente la

transformada discreta de Fourier con una ventana de Hamming de 20

ms. Posteriormente se calcula el espectro de potencia y se transfiere a

una escala de Bark. El segundo paso consiste en la igualación de las

alturas perceptuales, lo que tiene su origen en la necesidad de

compensar la diferente percepción de alturas sonoras para diferentes

frecuencias. Tras la IDFT se calculan los coeficientes de autorregresión

Page 31: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 17

de un modelo todo polo. Adicionalmente se pueden calcular a partir de

éstos los coeficientes cepstrales.

Como hemos venido comentando, esta técnica PLP junto con la anterior

MFCC serán las dos que emplearemos al realizar la segmentación

automática con nuestro sistema.

1.4 Los Modelos Ocultos de Markov

Terminaremos este capítulo introductorio definiendo los Modelos

Ocultos de Markov, que se encuentran en la base de los métodos más

empleados para realizar reconocimiento y segmentación del habla.

Un modelo oculto de Markov o HMM (Hidden Markov Model) es un

modelo estadístico en el que se asume que el sistema a modelar es un

proceso de Markov de parámetros desconocidos. El objetivo es

determinar los parámetros desconocidos (u ocultos, de ahí el nombre)

de dicha cadena a partir de los parámetros observables. Los parámetros

extraídos se pueden emplear para llevar a cabo sucesivos análisis, por

ejemplo en aplicaciones de reconocimiento de patrones.

En un modelo de Markov normal, el estado es visible directamente para

el observador, por lo que las probabilidades de transición entre estados

son los únicos parámetros. En un modelo oculto de Markov, el estado

no es visible directamente, sino que sólo lo son las variables influidas

por el estado. Cada estado tiene una distribución de probabilidad sobre

los posibles símbolos de salida. Consecuentemente, la secuencia de

Page 32: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 18

símbolos generada por un HMM proporciona cierta información acerca

de la secuencia de estados.

Cuando se aplican los modelos ocultos de Markov al reconocimiento de

la voz:

Los estados se interpretan como modelos acústicos, indicando las

ocurrencias de sonidos que son más probables durante los

correspondientes segmentos de habla.

Las transiciones incorporan restricciones de tipo temporal acerca

de cómo son las secuencias de aparición de esos sonidos.

Estados y transiciones pueden ser utilizados para modelar distintas

jerarquías del proceso del habla: desde fonemas hasta oraciones

pasando por palabras.

La utilización de este tipo de estructuras debe resolver 3 problemas

básicos:

1. Problema de reconocimiento

Consiste en escoger aquel modelo de entre un grupo de éstos, que mejor

represente al conjunto de etiquetas obtenidas a partir de la

cuantificación de las correspondientes plantillas espectrales.

Formalmente, conocida una secuencia de observaciones O={o1, o2, ..., oT}

y el correspondiente modelo de Markov λ=(A, B, π), siendo A={aij} la

distribución de probabilidad para la transición entre los estados i y j,

B={bj(k)} la distribución de probabilidad para la observación k en el

Page 33: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

1. Introducción 19

estado j y π la distribución inicial de estados, se pretende calcular

Prob(O|λ). Una solución eficiente a este problema es el algoritmo hacia

adelante y atrás (algoritmo de forward-backward).

2. Problema de decodificación

Este problema consiste en descubrir la secuencia oculta de estados, es

decir, conocida una secuencia de observaciones O={o1, o2, ..., oT}

calcular la secuencia de estados I={i1, i2, ..., iT}, que sea óptima

siguiendo algún criterio. Este segundo problema puede resolverse a

partir del algoritmo de Viterbi.

3. Problema de aprendizaje o entrenamiento

Consiste en construir un modelo de manera que recoja el conocimiento

con el que se ha entrenado de forma óptima, es decir, construir el

modelo λ=(A, B, π) para que Prob(O|λ) sea máxima. El caso se resuelve a

través de un algoritmo iterativo que se conoce como algoritmo de Baum-

Welch. Este procedimiento proporciona un método para reestimar unos

nuevos valores de a'ij y b'j(k) de forma que se cumpla que Prob(O|λ´) ≥

Prob(O|λ).

No incluimos el desarrollo matemático de los tres algoritmos aquí

indicados (forward-backward, Viterbi y Baum-Welch) por considerar

que excede de los propósitos de este capítulo introductorio. No obstante,

una descripción detallada de los mismos puede encontrarse en [Young

2006].

Page 34: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

2. Síntesis de voz y segmentación automática de unidades 20

2. SÍNTESIS DE VOZ Y SEGMENTACIÓN

AUTOMÁTICA DE UNIDADES

Continuando con el panorama general en el que se enmarca nuestro

proyecto, en este capítulo hablaremos brevemente de la síntesis de voz,

particularizaremos en la síntesis por concatenación de unidades (que es

la que hace uso de la segmentación automática), y terminaremos

hablando de la segmentación automática de unidades y comentando un

experimento anteriormente realizado en este sentido.

2.1 La síntesis de voz

Como comenta Gerardo Martínez en [Martínez 1998] muchos sistemas

de laboratorio y dispositivos comerciales realizan la conversión

automática de un texto a voz sintetizada. El progreso en este área ha

sido posible debido a los avances en la teoría lingüística, en el modelo

de caracterización acústica-fonética de los sonidos, en el modelado

matemático, en la programación estructurada y en el diseño hardware

de los ordenadores.

Los pasos seguidos en todo proceso de síntesis son: primero, un

conjunto de módulos analiza el texto de entrada para determinar la

Page 35: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

2. Síntesis de voz y segmentación automática de unidades 21

estructura de la sentencia y la composición fonética de cada palabra y

un segundo conjunto de módulos transforma esta representación

lingüística abstracta en voz.

Los cuatro tipos principales en los que se pueden clasificar los sistemas

de síntesis de voz son:

Sintetizadores articulatorios. En éstos se realiza una analogía

entre parámetros relativos a los órganos articulatorios y sus

movimientos con parámetros circuitales. Pueden proporcionar

una calidad altísima, pero es muy difícil obtener y controlar

parámetros para un sintetizador de este tipo.

Sintetizadores por formantes. Son una serie de filtros que

modelan el tracto vocal, excitados por fuentes que simulan las

cuerdas vocales. Gozan de gran difusión.

Sintetizadores derivados de las técnicas de predicción lineal

(LPC). Son sintetizadores de análisis-síntesis, en los que los

parámetros que controlan la función de transferencia del filtro

que simula el tracto vocal son parámetros LPC.

Sintetizadores por concatenación de forma de onda.

Concatenan unidades pregrabadas para generar nuevas frases,

con lo que intentan aumentar la calidad de la señal generada

minimizando el ruido de codificación. La complejidad es alta, pero

la calidad obtenida es muy buena.

Page 36: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

2. Síntesis de voz y segmentación automática de unidades 22

Éste último tipo de sintetizador es el que está más íntimamente ligado a

nuestro proyecto, por lo que dedicaremos el siguiente epígrafe a su

descripción.

2.2 La síntesis por concatenación de unidades

Esta estrategia para sintetizar voz consiste en emplear trozos de voz

natural pregrabadas como bloques básicos que se concatenan para

reconstruir una expresión arbitraria [Martínez 1998].

El tipo de unidad a concatenar es un parámetro crítico para conseguir

una buena calidad de la voz sintetizada: hay que llegar a un

compromiso entre la calidad intersegmental posible (a mayor longitud

de los segmentos, menos puntos de concatenación y por lo tanto mayor

calidad) y la cantidad de memoria necesaria para almacenar las

unidades pregrabadas.

Los trozos grabados no pueden ser palabras por dos motivos

fundamentales. En primer lugar, la pronunciación de una frase es muy

diferente a la de una secuencia de palabras recitadas aisladamente, ya

que en una frase las palabras tienen una duración más corta que

cuando están aisladas y el ritmo, entonación y acentuación, que

dependen de factores semánticos y sintácticos, son totalmente

antinaturales cuando se concatenan palabras grabadas aisladamente.

Un segundo problema son las innumerables palabras existentes en un

idioma, si tenemos en cuenta por ejemplo los nombres propios, así

como la formación de palabras mediante sufijos, prefijos y

Page 37: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

2. Síntesis de voz y segmentación automática de unidades 23

conjugaciones. La sílaba es una unidad interesante lingüísticamente,

pero hay un gran número de ellas. Otra unidad posible es el fonema,

pero el resultado de concatenar fonemas no es satisfactorio debido a

efectos coarticulatorios entre fonemas adyacentes que producen

cambios de las manifestaciones acústicas de un fonema dependiendo

del contexto [Martínez 1998]. Los efectos coarticulatorios tienden a

minimizarse en el centro acústico de un fonema, lo cual llevó a Peterson

a proponer el difonema, el trozo de voz que va desde la mitad de un

fonema a la mitad del siguiente fonema, como la unidad más

satisfactoria para la concatenación. En castellano, donde se pueden

considerar unos 30 alófonos, el número máximo de difonemas sería de

302 = 900, pero no todos se utilizan. Además puede ser necesario

introducir alófonos diferentes para hacer la distinción entre las vocales

acentuadas y átonas o la inclusión de trifonemas, que son una

extensión a agrupaciones de tres fonemas cuando los efectos de

coarticulación son tan grandes que no es posible la segmentación en

difonemas.

Se puede reducir la longitud de la memoria necesitada para el

almacenamiento de las unidades evitando las unidades difonema

formadas por consonante + consonante que no se puedan dar en el

lenguaje, y tratando algunos alófonos en determinados contextos como

una unidad de tipo fonema, como por ejemplo los fricativos sordos.

Otra elección crítica es la de la extracción de las unidades y la selección

del punto de corte. Los difonemas deben ser grabados por un locutor

que sea capaz de controlar y mantener constante la calidad de la voz de

forma que no haya cambios repentinos en el espectro de la fuente en

Page 38: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

2. Síntesis de voz y segmentación automática de unidades 24

medio de las sílabas. La unidad (difonema, trifonema o fonema) debe ser

extraída de algún contexto puesto que no son unidades que puedan ser

grabadas aisladamente. Los contextos posibles son:

en frase natural: se graban frases diferentes que contienen al

menos una unidad.

en frase portadora: se graba una frase con una estructura fija

donde se cambia solamente una palabra o un par de palabras que

contienen la unidad a segmentar.

en palabra aislada

en logatomos: palabras cortas que incluyen la unidad requerida y

no tienen significado semántico.

Una vez obtenida la grabación se necesita marcar cada uno de los

fonemas (o difonemas) con sus fronteras (inicio y fin), marcaje que

resulta tremendamente laborioso para realizar de manera manual y que

puede dar lugar a errores, por lo que se hace necesario el uso de algún

sistema de segmentación automática como el que desarrollamos en

nuestro proyecto.

2.3 La segmentación automática de unidades

La segmentación consiste en delimitar mediante etiquetas la posición de

los fonemas dentro de las frases. Si dicho proceso de segmentación es

realizado manualmente por el usuario éste debe escuchar una a una las

locuciones, y colocar las etiquetas que aíslan cada uno de los fonemas

dentro de las mismas; este procesado manual requiere una gran

Page 39: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

2. Síntesis de voz y segmentación automática de unidades 25

cantidad de tiempo y además, en algunos casos, lleva asociado también

errores. Estos errores pueden venir derivados del cansancio que este

trabajo implica, o en otros casos, de que al ser realizada la

segmentación por varias personas con el objetivo de reducir el volumen

de trabajo, se producen errores de criterio en la segmentación (distinto

criterio a la hora de segmentar algunos fonemas) que llevan a una falta

de uniformidad en la base de datos.

Como se comenta en [González 2000], algunos de dichos errores pueden

ser corregidos mediante el etiquetado automático, ya que por un lado no

es necesaria la edición manual para generar el etiquetado (los

desarrolladores se pueden centrar así en otros aspectos), y por otro

lado, al ser realizado todo el marcado por un mismo programa, el

criterio de segmentación de unidades siempre será el mismo. Se puede

pensar que es posible que se produzcan también errores de marcado,

que en algunos casos podrán ser mayores que con la segmentación

manual, hecho que puede quedar compensado por la considerable

reducción en el tiempo de procesado.

En [González 2000] se describen una serie de experimentos que se

llevaron a cabo en el seno del Grupo de Tecnologías del Habla para

realizar la segmentación de las frases componentes de una base de

datos (NatVox) de una manera automática. Se empleó un reconocedor

de palabras aisladas (a diferencia del nuestro, que es a nivel de

fonemas). Se emplearon para el entrenamiento y la evaluación

locuciones que contenían un total de 16062 alófonos, y para la

evaluación de la segmentación automática se consideraron como

erróneas aquellas etiquetas en las cuales la posición de la marca difería

Page 40: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

2. Síntesis de voz y segmentación automática de unidades 26

en más de 20 milisegundos con respecto de la existente en el *.par que

había sido marcado manualmente (hay que tener en cuenta, que la

resolución del sistema, como ocurre con el nuestro, viene marcada por

el desplazamiento de tramas que se emplee, no pudiendo nunca ser

mayor que dicho desplazamiento, que tanto en su caso como en el

nuestro, es de 10 milisegundos). Con este umbral de 20 milisegundos

se obtuvo una tasa de acierto del 89% (tasa de error del 11%) y un error

medio cometido por marca del 9%.

A lo largo de los capítulos 4 a 7 se describirá nuestro sistema y las

bases de datos con las que trabajamos, y en el capítulo 8 describiremos

los experimentos realizados y las tasas de error que obtenemos con

nuestro sistema, considerando los mismos umbrales que acabamos de

comentar.

Page 41: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 27

3. EL HABLA CON EMOCIONES

Como se ha comentado en la introducción, las emociones alteran las

principales características de la voz, por lo que pueden tener una cierta

influencia en el proceso de segmentación del habla expresiva. En este

capítulo se estudiará el concepto de emoción, cuáles son los efectos que

las emociones pueden tener sobre las características de la voz, y los

rasgos distintivos de las distintas emociones, prestando especial

atención a aquellas que están presentes en las muestras de locuciones

de las bases de datos con las que trabajaremos.

3.1 El concepto de emoción y sus funciones

Existen numerosas maneras de definir y explicar el concepto de

emoción según los diferentes estudios que se han realizado sobre este

tema, pero en general la definición más ampliamente aceptada es la que

considera la emoción como un estado complejo del organismo que se

origina como respuesta a las informaciones que se reciben del entorno y

que predispone a una respuesta organizada.

Esta primera definición podría hacernos confundir el concepto de

emoción con el de estado de ánimo; no obstante, la diferencia entre

ambos es que mientras que las emociones surgen de forma repentina

Page 42: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 28

en respuesta a un determinado estímulo y duran unos segundos o

minutos, los estados de ánimo son más ambiguos en su naturaleza,

perdurando durante horas o días. Por otro lado, más allá de emociones

y estados de ánimo, está el rasgo a largo plazo de la personalidad, que

puede definirse como el tono emocional característico de una persona a

lo largo del tiempo.

La emoción no es un fenómeno simple ya que depende de múltiples

factores. Según Izard una definición completa de emoción debe tener

en cuenta el sentimiento consciente de la emoción, los procesos que

ocurren en el sistema nervioso y en el cerebro y los modelos expresivos

observables de la emoción [Izard 1971].

Scherer afirma [Scherer 2001] que la emoción puede describirse

también como la interfaz del organismo con el mundo exterior,

señalando tres funciones principales de las emociones:

Reflejan la evaluación de la importancia de un estímulo en

particular en términos de las necesidades del organismo,

preferencias, intenciones…

Preparan fisiológica y físicamente al organismo para la acción

apropiada.

Comunican el estado del organismo y sus intenciones de

comportamiento a otros organismos que lo rodean.

Reeve por su parte le da a estas tres funciones los nombres de

adaptativa, social y motivacional [Reeve 1994]:

Función adaptativa: La emoción se encarga de preparar al

organismo para la acción, facilitando la conducta apropiada a

Page 43: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 29

cada situación. Por tanto, las emociones desarrollan un papel

fundamental en lo que a la adaptación del organismo al entorno

se refiere.

Función social: Las emociones sirven para comunicar el estado

de ánimo de la persona. La expresión de las emociones permite a

los que nos rodean predecir el comportamiento asociado con las

mismas, de aquí el enorme valor que la emoción ostenta en los

procesos de relación interpersonal. Así, emociones como la

felicidad favorecen los vínculos sociales y las relaciones

interpersonales, mientras que otras como el enfado pueden

generar situaciones de confrontación. Por otro lado, la propia

represión de las emociones también tiene en ocasiones una

evidente función social, por cuanto que es socialmente necesaria

la inhibición de ciertas reacciones emocionales que podrían

alterar las relaciones sociales y afectar incluso a la propia

estructura y funcionamiento de grupos u otros sistemas de

organización social.

Función motivacional: La emoción dota de energía a la conducta

motivada. Una conducta "cargada" emocionalmente se realiza de

forma más vigorosa.

Page 44: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 30

3.2 Componentes de la emoción

Como ya hemos comentado, la emoción es un fenómeno complejo, y

esto implica que haya que tener en cuenta un gran número de factores

a la hora de su caracterización. Los principales componentes que debe

incorporar el estudio de una emoción son los siguientes [Fernández

2003]:

El componente fisiológico

Está relacionado con las respuestas psico-fisiológicas que tienen lugar

como resultado del fenómeno emocional. Son respuestas involuntarias.

Algunas de ellas pueden ser taquicardia, rubor, sudoración, sequedad

en la boca, variación en el tono muscular, etc.

El componente conductual-expresivo

Mediante la observación del comportamiento de un individuo se puede

deducir qué tipo de emociones está experimentando. Esto es debido a

que toda emoción lleva implícito un lenguaje no verbal que aporta

señales bastante precisas y que facilitan su identificación. Este lenguaje

no verbal viene dado en gran parte por las expresiones del rostro y el

tono de voz empleado. Esta componente de la emoción es en cierta

medida controlable y está muy influida por factores socioculturales.

Page 45: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 31

El componente experiencial - cognitivo

Este componente está relacionado con la vivencia afectiva, con el hecho

de sentir y de experimentar propiamente la emoción. Así, la experiencia

emocional puede variar en intensidad dependiendo de diversos factores,

como pueden ser la importancia que se le dé a la situación que genera

la emoción o su proximidad temporal.

3.3 La emoción y su efecto en el habla

Más allá de las componentes de la emoción, lo cierto es, como

afirmábamos al principio, que las emociones afectan al habla, como

apuntó por primera vez Darwin a finales del siglo XIX en su libro “La

Expresión de las emociones en el hombre y en los animales”, donde

describe las primeras investigaciones sobre cómo afectaban las

emociones al comportamiento y al lenguaje de los animales. A lo largo

de los años se ha avanzado en el estudio de los efectos de las emociones

en el habla, que han sido estudiados por investigadores acústicos que

han analizado la señal de voz, por lingüístas que han estudiado los

efectos léxicos y prosódicos, y por psicólogos. Gracias a estos esfuerzos

se ha conseguido identificar muchos de los componentes del habla que

se utilizan para expresar emociones, entre los que destacan el pitch o

frecuencia fundamental, la duración y la calidad de voz [Scherer 1979].

Page 46: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 32

3.3.1 El Pitch

El pitch o frecuencia fundamental (f0) es la frecuencia fundamental a la

que las cuerdas vocales vibran. Las características de la frecuencia

fundamental están consideradas una de las principales portadoras de la

información sobre las emociones:

El valor medio del pitch refleja el nivel de excitación del locutor.

Una media elevada de f0 indica un mayor grado de excitación.

El rango del pitch es la distancia entre el valor máximo y mínimo

de la frecuencia fundamental. Indica también el grado de

exaltación del locutor. Un rango más extenso que el normal refleja

una excitación emocional o psicológica.

Las fluctuaciones en el pitch, descritas como la velocidad de las

fluctuaciones entre valores altos y bajos y si son abruptas o

suaves, son producidas psicológicamente. En general, la curva de

tono es discontinua para las emociones consideradas como

negativas (miedo, enfado) y es suave para las emociones positivas

(como la alegría).

3.3.2 La duración

La duración es la componente prosódica descrita por la velocidad del

habla y la situación de los acentos, y cuyos efectos son el ritmo y la

velocidad. El ritmo en el habla deriva de la situación de los acentos y de

la combinación de las duraciones de las pausas y de los fonemas. Las

Page 47: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 33

emociones pueden distinguirse por una serie de parámetros que

conciernen a la duración, como son:

Velocidad de locución: Generalmente un locutor en estado de

excitación acortará la duración de las sílabas, con lo que la

velocidad de locución medida en sílabas por segundo o en

palabras por minuto se incrementará.

Número de pausas y su duración: Un locutor exaltado tenderá a

hablar rápidamente con menos pausas y más cortas, mientras

que un locutor deprimido hablará más lentamente, introduciendo

pausas más largas.

Cociente entre el tiempo de locución y el de pausas, como

medida que relaciona las dos variables anteriores.

3.3.3 La calidad de voz

La intensidad, las irregularidades en la voz, el cociente entre energías a

baja y alta frecuencia, el breathiness y la laringerización son algunas de

las características que diferencian la calidad de la voz.

Intensidad: Está relacionada con la percepción del volumen y se

refleja en la amplitud de la forma de onda.

Irregularidades vocales: Abarcan un gran rango de

características vocales. El jitter vocal refleja las fluctuaciones de

un pulso glotal al siguiente (como se observa en el enfado) o la

Page 48: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 34

desaparición de voz en algunas emociones como la pena, en la

que el habla se convierte en un simple susurro.

El cociente entre energía de alta y baja frecuencia: Gran

cantidad de energía en las frecuencias altas se asocia con

agitación (enfado), mientras que baja concentración de energía en

las frecuencias altas se relaciona con depresión o calma (pena).

Breathiness y laringerización: Reflejan las características del

tracto vocal y están más relacionados con la personalización de

cada voz. El Breathiness describe la generación de ruido

respiratorio de forma que la componente fundamental tiende a ser

más fuerte, mientras que las frecuencias altas son reemplazadas

por ruido aspiratorio. La laringerización se caracteriza por una

vibración aperiódica de las cuerdas vocales, con un pulso glotal

estrecho y pitch bajo, lo que se traduce en una voz chirriante.

3.4 La clasificación de las emociones

Según los autores Larsen, McGraw y Cacioppo, la clasificación de las

distintas emociones existentes se puede realizar en base a dos enfoques

diferentes, el que considera las emociones de forma individual, y el que

las considera de forma dimensional:

Estudio discreto o específico de las emociones

Page 49: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 35

Este enfoque se basa en el hecho de que algunas emociones poseen

unas características que las hace únicas y diferenciables del resto.

Siguiendo este criterio muchos analistas de las emociones han

distinguido entre emociones primarias y emociones secundarias.

Las emociones primarias vendrían determinadas por una expresión

facial característica y por una disposición típica de afrontamiento de las

situaciones. La mayoría de los analistas consideran sólo 6 emociones

primarias: alegría, tristeza, enfado (ira), sorpresa, miedo y asco.

Por su parte, las emociones secundarias no presentarían rasgos faciales

distintivos ni una tendencia específica a la acción, y derivarían de las

primarias, obteniéndose a veces como combinación de las mismas. Al

contrario que en el caso de las primarias, puede encontrarse un amplio

abanico de emociones secundarias como el aburrimiento, la

impaciencia, la ternura, la ironía, la queja, el anhelo, la satisfacción, el

ensueño, la coquetería…

Estudio dimensional de las emociones

Frente al enfoque anterior, este modo de clasificación tiene su

fundamento en la existencia de importantes diferencias individuales en

el modo en el que las personas pueden desarrollar una emoción, por lo

que se considera que el empleo de categorías discretas no es la mejor

forma de describir la realidad. En su lugar se utilizan unas dimensiones

generales que definen un mapa donde se sitúan todas las posibles

emociones que pueden tener lugar, incluidas las definidas en el método

anterior como primarias y secundarias.

Page 50: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 36

Entre las técnicas empleadas para la clasificación de las emociones

mediante este enfoque, la más utilizada es la desarrollada por Russell

[Russell 1980], que sugiere que todas las emociones pueden ser

ubicadas en el interior de un círculo definido en un espacio

bidimensional, siendo estas dimensiones:

La valencia afectiva: Permite diferenciar las emociones en función

de lo placenteras o agradables que sean (positivas versus

negativas). Así, un suceso desencadenará una emoción positiva

cuando favorezca el logro de determinados objetivos, mientras

que si el suceso aleja esos objetivos, la emoción que se

desencadenará tendrá valencia negativa. Así, podemos encontrar

la alegría y el enfado en los dos extremos del eje que representa la

valencia.

La actividad: Permite diferenciar las emociones por la presencia o

ausencia de energía y tensión.

Según este enfoque, la representación de las distintas emociones en

este plano bidimensional sería la siguiente:

Page 51: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 37

Figura 3.1: Representación bidimensional de las emociones

[Alcázar 2007]

En distintos estudios se ha demostrado que se confunden más entre sí

las emociones con un nivel similar de actividad (como por ejemplo

alegría y enfado) que las que presentan similitudes en el nivel de

valencia. Esto lleva a la conclusión de que la actividad como dimensión

está más correlacionada con las variables auditivas relativamente más

simples de la voz, como pueden ser el tono y la intensidad, mientras

que la valencia está probablemente relacionada con factores más sutiles

y complejos.

Page 52: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 38

3.5 Las emociones estudiadas con nuestro

segmentador fonético automático

Para el desarrollo de nuestro segmentador fonético automático se han

empleado dos bases de datos (se estudiarán en los capítulos La base de

datos SES y La base de datos SEV), que contienen locuciones con voz

neutra y con seis emociones primarias: alegría, tristeza, enfado,

sorpresa, asco y miedo. Las principales características de estas seis

emociones se enuncian a continuación:

El habla neutra suele caracterizarse por un tono con un rango de

variación estrecho y unas transiciones de f0 suaves, además de

una velocidad de locución alta.

La alegría se manifiesta en un incremento en el tono medio y en

su rango, así como un incremento en la velocidad de locución y

en la intensidad.

El habla triste exhibe un tono medio más bajo que el normal, un

estrecho rango y una velocidad de locución lenta.

El enfado se caracteriza por un tono medio alto (229 Hz), un

amplio rango de tono y una velocidad de locución rápida (190

palabras por minuto), con un 32% de pausas.

La sorpresa se caracteriza por un tono medio mayor que la voz

normal, una velocidad igual a la normal y un rango amplio.

Page 53: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

3. El habla con emociones 39

El miedo se caracteriza por un tono medio más elevado que la voz

neutral (254 Hz), un rango mayor, un gran número de cambios en

la curva de tono y una velocidad de locución rápida (202 palabras

por minuto).

El asco es la emoción que más difícilmente se puede caracterizar,

según los estudios realizados al respecto, aunque en la mayoría

de los casos suele presentar un tono medio más alto que la voz

neutral y una velocidad de locución más lenta.

Page 54: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 40

4. DESCRIPCIÓN DE LAS HERRAMIENTAS

EMPLEADAS

En este capítulo se describen las principales herramientas que se van a

emplear a lo largo del proyecto, fundamentalmente HTK y los lenguajes

de comandos y PERL.

4.1 HTK

Como se ha comentado en la introducción, nuestro sistema de

segmentación se basará en los Modelos Ocultos de Markov y se

implementará mediante el uso de las herramientas HTK (Hidden

Markov Model Toolkit).

HTK es un conjunto de herramientas de software para diseñar y

manipular modelos ocultos de Markov (HMM, Hidden Markov Models), y

se emplea en múltiples áreas del conocimiento cuando el problema a

resolver puede ser enfocado como un proceso de modelación Estocástico

Markoviano (Reconocimiento y síntesis de voz, reconocimiento de

caracteres y formas gráficas, análisis de vibraciones mecánicas,

determinación de secuencias válidas del ADN humano…), aunque su

uso principal y para el que fue diseñado es el desarrollo de sistemas de

Page 55: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 41

reconocimiento automático del habla. La mayoría de estos sistemas se

basan en la utilización de la técnica de análisis estocástico de los

Modelos Ocultos de Markov, lo que implica problemas de alto grado de

complejidad y el manejo de grandes bases de datos (archivos,

parámetros, modelos, diccionarios), por lo que se hace necesaria una

herramienta computacional efectiva, como HTK, para abordar dichos

problemas.

El desarrollo de HTK lo lleva a cabo el grupo del habla, visión y robótica

del Departamento de Ingeniería de la Universidad de Cambridge

(CUED). Actualmente HTK es de libre distribución y su código y librería,

programados en lenguaje C, pueden ser modificados en común acuerdo

con el CUED. Además la herramienta se encuentra disponible para

utilizarlo en diversas plataformas o sistemas operativos (Unix, Linux,

Windows y DOS).

4.1.1 Funcionamiento general de HTK

HTK dispone de una arquitectura flexible y autosuficiente. Es

controlado por módulos de librerías, que alimentan la interfaz de

funciones correspondiente: Manejo de archivos, operaciones

matemáticas, interacción con el sistema operativo... La utilización de

cualquier herramienta disponible depende de dos aspectos:

– Línea de comandos como interfaz con el sistema operativo.

Dispone de parámetros opcionales para controlar detalles

particulares en su ejecución.

Page 56: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 42

– Módulos de librerías: Gran parte de la funcionalidad de HTK se

encuentra en las librerías. Estos módulos presentan interfaces

que aseguran que cada herramienta se comporte de cara al

usuario de manera homogénea, y ofrecen el conjunto de

funciones más utilizadas.

La llamada a las herramientas

El volumen de archivos que HTK debe manejar y controlar es siempre

elevado, por lo que la utilización de comandos es fundamental; sólo así

será práctico de utilizar. La línea de llamada a comandos es como sigue:

herramienta [opciones] archivos

donde herramienta es cualquiera de las definidas en el paquete HTK

(HCopy, HLed, Hrest, etc.), archivos son los que se emplean en las

acciones llevadas a cabo por dicha herramienta, y [opciones] agrupa las

variables, parámetros del sistema y librerías.

Las opciones particulares son indicadas mediante un guión, seguido de

una letra, y acompañada del valor alfanumérico correspondiente, en su

caso. Las letras minúsculas indican opciones propias de la herramienta,

y el parámetro utilizado podrá tener diferentes significados, según la

herramienta a ejecutar. Las letras mayúsculas son utilizadas para

indicar opciones comunes a todas las herramientas del sistema, por

ejemplo: [Young 2006]

Page 57: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 43

Opción –C: Esta opción introduce ficheros de configuración. El

archivo indicado posee una lista de parámetros que serán

cargados durante la inicialización de la herramienta invocada.

Opción –S: Sirve para potenciar y flexibilizar el manejo de base de

datos (archivos). Por ejemplo: Indicará a la herramienta que el

archivo mencionado hace referencia a una lista de archivos (Muy

útil en etapas de entrenamiento).

Opción –A: Imprime la línea de comandos con sus argumentos.

Opción –D: Muestra por pantalla las variables de configuración

que se están utilizando.

Opción –T: Permite que durante la ejecución de la herramienta

aparezca información relativa a la ejecución de la misma (uso de

trazas).

Opción –L: Busca las etiquetas en el directorio especificado.

Opción –H: Carga el HMM como un archivo macro de extensión

mmf (Master Macro File).

Los valores para los parámetros pueden ser:

Números enteros o flotantes.

Strings.

Booleanos.

Las librerías en HTK Como acabamos de decir, cada librería es un conjunto de instrucciones

para lograr una función específica en las herramientas disponibles. Hay

librerías comunes a todos los comandos y otras son particulares. Para

controlar de manera más precisa el comportamiento de las librerías

haremos uso de variables de configuración.

Page 58: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 44

La siguiente figura muestra la estructura de software de una

herramienta típica de HTK:

Figura 4.1: Arquitectura de software en HTK [Young 2006]

Los principales módulos de librerías disponibles en HTK son los

siguientes:

HShell: Es la interfaz entre HTK y el sistema operativo.

HMem: Controla la gestión de memoria.

HMath: Ofrece funciones matemáticas, y maneja estructuras de

alto nivel como matrices y vectores.

HSigP: Ofrece operaciones de procesamiento de la señal

necesarias para el análisis de alocuciones.

HLabel: Módulo para el manejo de archivos de etiquetas.

HLM: Módulo para el manejo de archivos de modelos de

lenguajes.

Page 59: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 45

HNet: Módulo para el manejo de redes; soporta archivos con

formato Lattice y Networks, necesarios para la fase de

reconocimiento.

HDict: Módulo para el control del diccionario del sistema.

HVQ: Módulo para el manejo de codebook de vectores

cuantificados.

HModel: Módulo para la interpretación las definiciones de HMM.

HWave: Manejo de archivos de entrada y salida a nivel de señal

de audio.

HParm: Control de parametrización en señales de audio.

HAudio: Controla adquisición en vivo de señales de audio.

HGraf: Manejo gráfico de señales de audio.

HUtil: Provee rutinas de manipulación de HMM.

HTrain: Soporte para entrenamiento de modelos.

HAdapt: Provee soporte para las herramientas de adaptación del

reconocedor a uno o más locutores.

HRec: Conjunto de funciones para el procesado en etapa de

reconocimiento.

4.1.2 Parametrización con HTK

Dada una señal, debemos extraer su información, es decir, debemos

extraer los parámetros que caracterizan a la señal, los cuales nos

servirán para entrenar los HMM y efectuar el reconocimiento.

HTK acepta dos formatos de parametrización:

– Formato de parámetros HTK: Opción por defecto.

Page 60: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 46

– Formato de parámetros Esignal: Similar al formato HTK, sólo

presenta diferencias en las cabeceras de los archivos.

Existen tres posibilidades para la obtención de las muestras:

1. Archivos Parametrizados: Al experimentar con señales, lo primero

que debemos lograr es disponer de una base de datos parametrizada,

sólo así, posteriormente, podremos realizar múltiples experimentos.

Para construirla, HTK dispone de la herramienta HCopy. Las entradas

de HCopy son la señal en banda base (en formato wav) y un archivo de

configuración de la parametrización, el cual le indica a HTK la manera

de analizar los datos. HCopy entrega como salida un archivo de voz

parametrizada convertida en una matriz o vector de vectores.

2. Archivo de Señal: Para cualquier señal deberán tomarse las

muestras y parametrizarlas. Sólo así, HTK podrá interpretarlas.

3. Entrada Directa por Micrófono: Es especial para experiencias con

voz en vivo. Habrá que tener en cuenta el efecto del ruido ambiental y

obligatoriamente se debe filtrar.

En cuanto a la parametrización de la señal, como hemos comentado,

HTK soporta todo el proceso de parametrización por medio del comando

HCopy. Hcopy es una herramienta de propósito general que se emplea

para copiar, filtrar y extraer features de los ficheros de audio.

Por defecto HCopy realiza una simple copia del fichero de origen en el

fichero destino. Dicho comportamiento puede modificarse con las

opciones especificadas en el fichero de configuración. En este fichero

Page 61: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 47

pueden detallarse un conjunto de transformaciones que se aplican

sobre el fichero origen y se guardan en el fichero destino. La idea es que

exista un tipo de parámetros origen y un tipo de parámetros destino de

forma que, especificando dichos tipos en el fichero de configuración,

HCopy realice la conversión entre ambos formatos.

Este archivo de configuración al que hacemos referencia puede ser un

archivo de texto codificado en ANSI. En él se debe indicar el tipo de

algoritmo a aplicar: Banco de Filtros, Cepstrum y MEL Cepstrum. Los

parámetros para especificar el archivo de configuración son:

Formato de datos: SOURCEFORMAT=HTK

Tipo de algoritmo y análisis: TARGETKIND. tenemos las

siguientes posibilidades [Carrillo 2007]:

ALGORITMO TIPO DE ANÁLISIS

LPC Predicción Lineal

LPREFC Coeficientes de Reflexión para LPC

LPCEPSTRA LPC con Cepstrum

LPDELCEP LPC Cepstrum - Plus de Coeficientes

IREFC LPC - Coeficientes de Reflexión

MFCC Coeficientes MEL Cepstrum

FBANK Banco de filtros de MEL con salida LOG

MELSPEC Banco de filtros de MEL con salida Lineal

Tamaño de la ventana de análisis: WINDOWSIZE

Desplazamiento de tramas: TARGETRATE.

Número de coeficientes cepstrales: NUMCEPS.

Filtro de Preénfasis: PREEMCOEF.

Número de bancos de filtros: NUMCHANS.

Page 62: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 48

Ganancia Cepstral: CEPLIFTER. Se emplea para reescalar los

coeficientes cepstrales de modo que todos estén en el mismo

orden de magnitud.

Para afinar en el análisis se emplea un grupo finito de coeficientes

extras:

Cantidad de Energía: _E

Energía total Suprimida: _N

Coeficientes Delta: _D

Coeficientes de Aceleración: _A

Uso de compresión: _C

Valor medio nulo: _Z

Coeficiente Cepstral nulo: _0

Por poner un ejemplo que utilizaremos en nuestro segmentador, por

medio de la variable TARGETKIND=MFCC_E_D_A HTK sabrá del tipo de

análisis; significa que el algoritmo es un banco de filtros con

coeficientes cepstrales MFCC, al que se le añade la energía _E, los

coeficientes Delta _D y los de aceleración _A. Un ejemplo de archivo de

configuración de la parametrización usado en nuestro segmentador se

muestra a continuación (es un extracto del fichero

config_hcopy_ses_mfcc_). El tamaño de la ventana para el análisis es de

25 ms y el tiempo para cada muestra alcanza los 10 ms.

SOURCEFORMAT = NOHEAD SOURCERATE = 625.0

SOURCEKIND = WAVEFORM

TARGETFORMAT = HTK

TARGETRATE = 100000.0

TARGETKIND = MFCC_E_D_A

HPARM: WINDOWSIZE = 250000.0

Page 63: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 49

HPARM: NUMCEPS = 12 HPARM: USEHAMMING = T

HPARM: PREEMCOEF = 0.97

HPARM: NUMCHANS = 40

HPARM: CEPLIFTER = 22

La llamada para ejecutar HCopy es:

HCopy [opción] archivo_parametrización [opción] archivo

_salidaParametrizada.

Como las llamadas a las herramientas de HTK a veces pueden ser muy

complejas emplearemos de ahora en adelante diagramas en bloque que

ayuden a comprender el uso de la herramienta. Así, la llamada de

Hcopy respondería al siguiente diagrama de bloques:

Figura 4.2: Diagrama de bloques de la llamada a HCopy [Carrillo 2007]

El archivo_salidaParametrizada debe poseer extensión mfcc, indicando

con ello que los datos corresponden a vectores codificados según

coeficientes cepstrales de frecuencia MEL.

Para visualizar los resultados del proceso de parametrización, HTK

dispone del comando HList. Si el usuario desea conocer el vector de

Page 64: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 50

parametrización para alguna forma de onda en particular, la llamada

debe ser:

HList [opción] archivo_de_audio

Figura 4.3: Diagrama de bloques de la llamada a HList [Carrillo 2007]

La entrada es un archivo de audio, la señal de audio en formato wav.

HList entrega un archivo con el informe de la parametrización de las

muestras.

Análogamente, HTK dispone de recursos para realizar la cuantización

de los vectores (o etiquetado). Se puede optar por los modelos de

densidad discreta o continua; en estos últimos los vectores cuantizados

se agrupan como un codebook, lo cual permite acelerar el proceso de

reconocimiento reduciendo el tiempo de los cálculos, pero reduce la

precisión debido a que la tasa de error aumentará con facilidad, dando

lugar a reconocedores débiles. La herramienta HSlab es la encargada

de realizar el etiquetado en HTK. Se dispone para ello de una interfaz

gráfica que simplifica el proceso:

Page 65: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 51

Figura 4.4: Diagrama de bloques de la llamada a HSlab [Carrillo 2007]

Figura 4.5: Etiquetado de una señal de audio con HSlab [Carrillo 2007]

A pesar de su utilidad práctica, ni HList ni HSlab son necesarias para el

desarrollo de nuestro segmentador, por lo que se han descrito aquí

brevemente. En cambio HCopy sí es fundamental en nuestro proceso de

parametrización, por lo que volveremos a esta herramienta cuando

detallemos este proceso en el capítulo dedicado a los scripts del

segmentador.

Page 66: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 52

4.1.3 Creación de Modelos de Markov

El concepto de Modelo Oculto de Markov está ampliamente difundido;

su esquema se muestra en la siguiente figura:

Figura 4.6: Esquema de un HMM [Carrillo 2007]

Los elementos característicos de todo HMM, son:

Número de estados: N

Número de símbolos observables por estado: M

Probabilidad de transición entre estados: A={aij}

Distribución de Probabilidad de símbolos de observación: B=bj(k)

Distribución inicial de estados: Π={ πi}

Para que un HMM sea útil, deben responderse las tres preguntas

siguientes: [Carrillo 2007]

1.- ¿Para el modelo, cómo se evalúa la probabilidad de la secuencia

observada?

El algoritmo Fordward – Backward permite resolver este problema.

Consiste básicamente en un proceso que permite optimizar el cálculo de

la probabilidad, de lo contrario, el procesamiento (multiplicaciones y

adiciones) sería tan grande que no podría implementarse de manera

práctica. Con su aplicación, bastan 2TN2 operaciones de cómputo, en

Page 67: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 53

vez de 2TNT operaciones al no utilizar el algoritmo, siendo T el número

de observaciones realizadas.

2.- ¿Cómo elegir la secuencia óptima de estados?

Este problema se puede resolver abordando la técnica de programación

dinámica, específicamente utilizando el algoritmo de Viterbi.

3.- ¿Cómo ajustar los parámetros del modelo?

Basándonos en algún criterio de optimización podríamos responder a

esta pregunta, y para ello es necesario utilizar el algoritmo de Baum –

Welch.

Implementación de un HMM

Como paso previo al entrenamiento de modelos, es necesario definir la

topología requerida para cada HMM. Las definiciones de cada modelo se

almacenan en archivos de texto donde se recogen todos los parámetros

de cada uno de ellos. El objetivo es diseñar un único prototipo de HMM

para especificar las características generales de todos los modelos que

más adelante formen parte del sistema.

Deben indicarse los siguientes parámetros:

Tipo de vector de observación.

Número de estados.

Número de flujos de datos (data streams) y su ancho.

Cada estado emisor (de cada flujo) se indica con el número de

componentes mixtas (mixtures component) de la gaussiana y su

correspondiente peso. Los parámetros de cada componente son:

Media y covarianza.

Parámetros opcionales (duración del vector y peso del flujo).

Page 68: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 54

Matriz de transición.

El modelo más sencillo será aquel que no tiene ningún parámetro

global, es decir, que no comparte ninguna característica de las

anteriormente nombradas con ningún otro modelo. La complejidad de

los modelos puede ir aumentando según se vayan compartiendo más

características (requiere uso de macros). Una macro es cualquiera de

los grupos de parámetros del modelo almacenado externamente al

mismo. Así, para hacer uso en un modelo de un parámetro definido

mediante una macro, sólo habrá que incluir una línea en la que se

llame a esa macro.

El lenguaje de definición de modelos utiliza el mismo carácter clave

para indicar las macro de los distintos parámetros (~tipo de macro). Sin

embargo, se pueden distinguir dos tipos de macros (según su uso):

– Macro para un modelo: Los parámetros internos de un modelo

concreto se escriben como unidades separadas (como archivos

diferentes). Se pueden hacer macros de todos los parámetros

indicados en un modelo. Las macros más empleadas son las de

los parámetros correspondientes a cada uno de los estados. De

este modo se puede tener, por ejemplo, la misma varianza en

todos los estados de un modelo.

– Macros comunes para varios modelos: Idéntico al anterior, pero

habrá varios modelos compartiendo la misma macro. Se lograría,

por ejemplo, que todos los modelos tengan algún estado con un

mismo vector de varianza.

Page 69: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 55

Se ha discutido ampliamente sobre cómo generar un prototipo de HMM,

llegándose a la siguiente conclusión: es más sencillo realizar un modelo

con parámetros aislados, pero querer lograr una elevada tasa de

aciertos en el reconocedor requerirá enlazar estados o modelos. La

opción más útil parece ser partir de un modelo sencillo, donde se

encuentren todos los parámetros que se van a manejar de modo

aislado.

Lenguaje para definición de modelos

HTK usa un lenguaje propio para definir los modelos, así todas las

herramientas funcionarán correctamente con el mismo HMM. Conviene

conocer este lenguaje para poder editar un prototipo acorde con

nuestras necesidades.

El ejemplo siguiente está extraído de uno de nuestros ficheros (models

de hmm1m1) y corresponde a un modelo de cinco estados, tres son de

emisión (los estados de entrada y salida no emiten. Ver figura 3.5). La

primera línea indica el nombre del HMM, ~h “nombre”. Aquí se está

definiendo el modelo (o alófono) llamado “J”. En la siguiente línea hay

que poner la palabra clave <BeginHMM>, que indica el punto a partir

del cual se encuentran los parámetros del modelo. Al final de la

definición habrá otra palabra clave complementaria <EndHMM>.

~o

<STREAMINFO> 1 13

<VECSIZE> 13<NULLD><MFCC_0><DIAGC>

~h "J"

<BEGINHMM>

<NUMSTATES> 5

<STATE> 2

<MEAN> 13

-2.206162e+002 -5.421960e+001 [...]

Page 70: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 56

<VARIANCE> 13

3.833246e+004 3.632157e+004 [...]

<GCONST> 1.631388e+002

<STATE> 3

<MEAN> 13

-2.181095e+002 -5.599409e+001 [...]

<VARIANCE> 13

3.833246e+004 3.685270e+004 [...]

<GCONST> 1.632600e+002

<STATE> 4

<MEAN> 13

-2.145374e+002 -6.134979e+001 [...]

<VARIANCE> 13

3.833246e+004 3.796980e+004 [...]

<GCONST> 1.634138e+002

<TRANSP> 5

0.000000e+000 1.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000

0.000000e+000 6.734391e-001 3.265609e-001 0.000000e+000 0.000000e+000

0.000000e+000 0.000000e+000 6.734399e-001 3.265601e-001 0.000000e+000

0.000000e+000 0.000000e+000 0.000000e+000 6.734408e-001 3.265592e-001

0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000

<ENDHMM>

El orden dentro de la jerarquía es de mayor a menor importancia:

– <BeginHMM>, <EndHMM>

– Parámetros globales, número de estados, definición de cada

estado y matriz de transición entre estados.

– Número de flujos de dato y sus pesos.

– Número de componentes mixtas y sus pesos.

– Media y varianza de cada uno de las componentes mixtas.

Al principio se especifican los aspectos globales de todos los modelos

que conformen la base, los que suelen indicarse son: Tamaño de los

vectores de parámetros <VecSize> número entero y el algoritmo con el

que se han extraído la información de la forma de onda. El algoritmo se

pone entre llaves, como el resto de palabras clave. En este caso

Page 71: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 57

<MFCC_0>. Para no dar lugar a errores, el nombre del algoritmo será el

indicado durante el proceso de parametrización. En la siguiente línea se

deben indicar el número de estados que componen el modelo, 5 en

nuestro caso. A partir de este punto se encuentra la definición de cada

estado. La información recogida para cada estado depende de cuántos

flujos de datos se utilizan y del número de componentes de mezcla

gaussiana en cada flujo. Existen también casos que mezclan varios

flujos de datos y cada uno de ellos cuenta con diversas componentes de

mezcla. Una vez alcanzada la componente de mezcla gaussiana como

unidad fundamental, los parámetros serán:

– Vector de valores medios.

– Vector de varianza, en alguno de los siguientes formatos:

Varianza. El vector es la diagonal de la matriz.

Covarianza. La distribución gaussiana se indica como una

matriz completa. Estas son simétricas, por lo que sólo se

almacena la diagonal superior.

Una vez que se han definido todas las componentes de mezcla de todos

los flujos y para todos los estados, el prototipo de HMM se completa con

la matriz de transición de estados <TransP> tamaño. Esta debe ser una

matriz cuadrada, cuyo tamaño hay que indicar siempre de modo

explícito, y debe corresponder con el número de estados definidos

anteriormente. La suma de todas las componentes de cada fila debe

resultar la unidad, excepto para el último estado, cuya suma debe ser

siempre cero (no se permite ninguna transición que parta del estado

final hacia alguno de los estados anteriores). Finalmente el modelo se

termina con <EndHMM>.

Page 72: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 58

4.1.4 Entrenamiento de los HMM

El entrenamiento de los HMM consiste básicamente en actualizar los

valores de los parámetros mediante diferentes algoritmos y, con ello,

conseguir modelos más ajustados a la realidad o aplicación. Por lo

tanto, debe ser un proceso optimizado. Consta de dos fases:

i) Inicialización, que se consigue por medio de la herramienta

HInit.

ii) Aplicación del algoritmo de Baum-Welch.

También está disponible la posibilidad de realizar un entrenamiento

global, lo cual siempre se debería realizar. HTK dispone de la

herramienta HERest para dicha tarea. Veamos pues las herramientas

para el entrenamiento:

HInit aprovecha las facilidades del segmentado de etiquetas para

detectar los diferentes alófonos. Los busca en cada modelo y

posteriormente utiliza el algoritmo de Viterbi para la estimación de las

medias y varianzas. El proceso se repite hasta que el algoritmo ya no

pueda mejorar la semejanza, que es calculada en paralelo. La llamada

para inicializar cada modelo de cada alófono se hace de modo iterativo,

como se muestra en la siguiente figura:

Page 73: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 59

Figura 4.7: Diagrama de bloques de la llamada a HInit [Carrillo 2007]

HInit [opción] datos_parametrizados [opción] directorio_destino [opción] \

archivo_fuente [opción] etiqueta [opción] directorio_fuente_etiquetas

HRest utiliza el algoritmo de Baum - Welch (reestimación de los

parámetros de los modelos aislados). Este modo de entrenamiento debe

realizarse de modo iterativo, para cada alófono del conjunto. Las

opciones de esta herramienta son muy poderosas y su diagrama de

llamada se muestra en la figura:

Page 74: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 60

Figura 4.8: Diagrama de bloques de la llamada a HRest [Carrillo 2007]

HERest realiza un entrenamiento global actualizando simultáneamente

todos los modelos del sistema. Se ignora la información de segmentado

en las etiquetas, pues sólo interesa conocer el mensaje que contiene la

frase. Cada etiqueta usada en este entrenamiento acumula estadísticas

provenientes del algoritmo Forward - Backward. Su diagrama de

llamada es mostrado en la figura:

Page 75: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 61

Figura 4.9: Diagrama de bloques de la llamada a HERest [Carrillo 2007]

El significado de cada archivo en fase de entrenamiento que se anota en

los diagramas anteriores es el siguiente:

Datos_parametrizados: Son los archivos que conforman la base de datos

parametrizada (archivos con extensión mfcc), a entrenar. Generalmente

se indica la manera de cómo acceder a esos datos bajo opción S (script).

Archivos_salida_Estadística: Es el archivo que genera el proceso

HERest, como resultado estadístico del análisis del entrenamiento.

Directorio_fuente_etiquetas: Es la ruta para alcanzar el archivo que

contienen la lista con todas las etiquetas del proceso.

Lista_archivos_modelos_ocultos_de_markov: Es la ruta para ubicar al

archivo con todos los modelos de Markov actualizados.

Lista_nombre_sonidos_a_reconocer: Es la indicación que caracteriza al

archivo de entrada que contiene la lista de todos los HMM del proceso.

En nuestro proyecto emplearemos la tercera de las herramientas,

HERest, para llevar a cabo el entrenamiento. Adicionalmente a ésta,

emplearemos la herramienta HCompV para los casos de experimentos

de normalización cepstral.

HCompV calcula la media y la covarianza de un conjunto de datos de

entrenamiento. Lo emplearemos en la fase de normalización Cepstral ya

que trabajaremos con dos tipos de normalizaciones: normalización

cepstral de la media (CMN, Cepstral Mean Normalisation) y

normalización cepstral de la varianza (CVN, Cepstral Variance

Normalisation).

Page 76: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 62

CMN, Normalización cepstral de la media

En el dominio de la frecuencia, el efecto de insertar un canal de

transmisión es multiplicar el espectro de la voz por la función

de transferencia del canal. En el dominio logarítmico de los

coeficientes cepstrales esta multiplicación se convierte en una

sencilla suma, que puede ser aproximadamente compensada

restando la media cepstral a todos los vectores de parámetros.

En la práctica, la media se estima a partir de una cantidad

limitada de datos, de forma que la cancelación del efecto del

canal de transmisión no es perfecta. La media se estima

calculando el promedio de cada parámetro cepstral a lo largo

del fichero o agrupación de ficheros en cuestión. Es importante

destacar que CMN se aplica a los coeficientes estáticos, luego

se calculan los coeficientes delta y aceleración, y por último se

realiza CVN sobre los tres tipos de coeficientes.

Respecto a la aplicación de CMN, el resultado de la estimación

de las medias cepstrales de los coeficientes estáticos se guarda

en un fichero. De modo que las herramientas de HTK que

necesiten trabajar con CMN tendrán que restar a cada fichero

de parámetros su correspondiente fichero de medias durante la

ejecución.

CVN, Normalización cepstral de la varianza

Page 77: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 63

De un modo paralelo, también podemos normalizar la varianza

de los parámetros cepstrales. Con esto logramos que los

márgenes de variación de los parámetros en todos los ficheros

de la base de datos sean similares, hecho que favorecerá el

entrenamiento de los HMM. CVN se realiza normalizando a 1 la

varianza del fichero en cuestión dividiendo todos sus vectores

de parámetros por su varianza cepstral, y multiplicando

posteriormente por la varianza global.

2

2

fich

global

orignorm OO

La estimación de la varianza cepstral se obtiene calculando la

varianza de cada parámetro cepstral a lo largo de ese fichero o

agrupación de ficheros. Y por varianza global nos referimos a

la varianza de los parámetros cepstrales calculada a lo largo de

toda la base de datos. Al igual que CMN, CVN también se

realiza en tiempo de ejecución.

4.1.5 Red gramatical y Diccionario

Red gramatical es la secuencia de palabras que pueden reconocerse,

mientras que el término Diccionario describe los diferentes alófonos

que componen cada una de las palabras (red).

Pueden crearse distintos tipos de redes, dependiendo del modelo de

lenguaje utilizado. Si el problema consiste en reconocer señales de voz

Page 78: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 64

con nombre y apellido, entonces un ejemplo de red gramatical será la

mostrada en la figura 3.9. La sintaxis divide la red en tres partes:

cabecera, nodos y enlaces. Los enlaces pueden ser: unigrama

(probabilidad de una palabra) o bigrama (transiciones posibles entre

unas palabras hacia otras).

Figura 4.10: Estructura de una red gramatical [Carrillo 2007]

Los valores de probabilidad de los enlaces dependen del modelo de

lenguaje usado. Se definen tres tipos:

i) Wordloop: Todos los enlaces son equiprobables.

ii) Bigrama: Cada enlace tendrá una probabilidad que se ajusta

al número de ocurrencias de esa transición en el texto de

entrada.

iii) Modelo propio: No asignan probabilidades, indica cuáles son

los enlaces permitidos. Esta estructura resulta ideal cuando se

usan diccionarios con muy pocas palabras.

Page 79: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 65

4.1.6 Reconocimiento y evaluación de resultados

Una vez configurada la red gramatical debemos ingresar a la etapa de

reconocimiento y evaluación de resultados. Esta opción sólo requiere de

archivos parametrizados y de un repertorio de alocuciones (base de

datos para el reconocimiento). Los resultados los da a conocer un

archivo de salida, siendo fundamental el porcentaje de reconocimiento.

Archivos MLF: En el proceso de reconocimiento se generan etiquetas de

los distintos archivos que se han utilizado. Cuantos más archivos se

reconozcan, más fiable podrá ser la estadística de aciertos que se

calcule. La manera natural de almacenar las etiquetas es utilizando un

archivo de etiquetas maestro (Master Label File: MLF). Éste cumple una

función idéntica a las macros de los HMM, va almacenando dentro de

un único archivo todas las etiquetas (de ahí su nombre).

HVite: Es la herramienta que maneja el algoritmo de Viterbi. Debe

proporcionar el camino de mayor probabilidad para la secuencia óptima

de estados. Cuanto más grande sea la red, más procesamiento requerirá

el algoritmo y, por lo tanto, más lento resultará el reconocimiento. Su

llamada la indica el siguiente diagrama de bloques:

Page 80: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 66

Figura 4.11: Diagrama de bloques de la llamada a HVite [Carrillo 2007]

HResults: Es la herramienta de HTK que entrega los resultados del

proceso de evaluación. Compara las etiquetas de entrada y las de

salida, dando lugar a una matriz de confusión de los distintos HMM

(calidad del proceso). La salida de este comando se realiza por pantalla

y para guardar los resultados habrá que usar un redireccionamiento

adecuado hacia un archivo de texto.

Figura 4.12: Diagrama de bloques de la llamada a HResults [Carrillo

2007]

Page 81: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 67

4.2 EL LENGUAJE DE SCRIPTS

Gran parte del desarrollo de nuestro segmentador automático lo

realizaremos mediante el uso de archivos de procesos por lotes o

scripts, cuya extensión es .bat, y que nos permiten codificar grandes

cadenas de instrucciones y agruparlas según el uso que se le da en el

programa global, la etapa del proceso de segmentación de que se trate,

etc. Por ello es interesante hacer una breve introducción al lenguaje de

scripts y a alguna de las instrucciones del mismo que empleamos en

nuestro proyecto.

La shell que emplearemos es la de Windows, que se basa en la del

antiguo sistema operativo MS-DOS. Un proceso por lotes es un archivo

de texto formado por varios comandos de la shell de Windows. Esta

secuencia de comandos se ejecuta de uno en uno, línea a línea, en el

mismo orden en que aparecen en el programa, como si se tecleara cada

uno delante del símbolo del sistema.

En algunas ocasiones, como en las ejecuciones de experimentos con el

segmentador que nos ocupa, el usuario escribe repetidamente la misma

secuencia de comandos para realizar algunas tareas comunes. Para

evitar eso podemos colocar esta secuencia de comandos en un archivo

de procesamiento por lotes y ejecutar automáticamente toda esa

secuencia de comandos. Para que puedan ser reconocidos por el

sistema Windows como archivos especiales, los archivos de

procesamiento por lotes, también conocidos como ficheros BAT o

scripts, deben llevar la extensión .BAT.

Page 82: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 68

4.2.1 Gestión de argumentos en los procesos por lotes

Los argumentos son informaciones adicionales colocadas detrás del

nombre de una orden. Si la mayoría de las órdenes del sistema admiten

argumentos o modificadores, también será posible gestionar

argumentos en los ficheros por lotes.

Un ejemplo del uso de argumentos en los scripts del segmentador se

observa en las dos primeras líneas de nuestro fichero experim.bat:

echo on

set FICH_LOG=log_%1_%5_%6_states%2_iter%3_gauss%4.log

Si ejecutamos este proceso por lotes o script, de la siguiente manera:

C:\> experim.bat mfcc 4 6 30 _cmn D_A_Z_0 39

tendríamos que esa línea se transformaría en:

set FICH_LOG =log_mfcc_cmn_D_A_Z_0_iter6_states4_gauss30.log

En la línea de comandos, cada parámetro debe estar separado con un

espacio en blanco. De la forma anteriormente explicada podemos

gestionar hasta nueve parámetros (del %1 al %9).

4.2.2 Comandos específicos para procesos por lotes

Aparte de los comandos usuales de la shell de Windows, en los procesos

por lotes podemos usar algunos comandos especiales, que nos permiten

programar estructuras complejas usando procesos. La referencia

completa de todos los comandos puede encontrarse en [Microsoft 2012].

Page 83: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 69

Nosotros nos fijaremos especialmente en los comandos que empleamos

en nuestros scripts, describiendo la función que realizan, el formato con

el que se les debe llamar, y veremos un ejemplo de cada comando

sacado de nuestros scripts. De este modo, los comandos que

emplearemos son:

COMANDO CALL (llamar)

Función: Llama a un archivo de procesamiento por lotes desde

otro igual, sin salir del archivo que hizo la llamada. Es decir,

invoca la ejecución de otros archivos como una subrutina o una

función.

Formato: CALL nombre_del_script

Una vez terminada la ejecución del proceso por lotes llamado con

CALL, se reanuda la ejecución del archivo que hizo la llamada. Un

archivo de proceso por lotes, puede hacer una llamada repetitiva

a sí mismo (recursividad), siempre y cuando exista una condición

de finalización.

Ejemplo: Al estar nuestro segmentador programado de manera

modular, la gran mayoría de nuestros scripts llaman a otros, de

manera que la concatenación de los mismos da lugar al proceso

completo. Por ejemplo, en nuestro script full.bat encontramos

call limpia.bat

call experim.bat plp 5 5 5 _ 0_D_A 39

Page 84: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 70

que llama a los scripts limpia.bat y experim.bat, para que se

ejecuten, acompañados en su caso de sus correspondientes

argumentos.

COMANDO ECHO (eco)

Función: Este comando activa y desactiva la salida de comandos

por pantalla, o escribe un mensaje por pantalla.

Formato: ECHO [ON] [OFF] [MENSAJE]

Echo ON: Nos permite ver en pantalla los comandos de DOS que

están siendo ejecutados desde un archivo de proceso por lotes.

Echo OFF: Desactiva la visualización en pantalla de los comandos.

El valor por defecto es ECHO ON.

Echo mensaje: Este comando nos permite imprimir mensajes en

la pantalla.

Si escribimos simplemente ECHO, se nos presentará en pantalla

el estado actual de ECHO.

Podemos insertar el símbolo @ (arroba), antes de una línea de

comandos en un archivo de proceso por lotes, para que no se

haga ECO de dicha línea.

Si queremos dejar en pantalla una línea en blanco, se usa ECHO.

(ECHO y un punto sin dejar espacios en blanco entre la O y el

punto).

Ejemplo: en nuestro script segm_monophones.bat la línea

siguiente escribe un mensaje por pantalla, que nos ayuda a saber

por qué parte del proceso se encuentra en este momento la

ejecución del segmentador:

Page 85: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 71

echo "Segmentation with one mixture HMM"

COMANDO GOTO (transferencia de control)

Función: Transfiere el control del proceso a una línea con

etiqueta, dentro del script.

Formato: GOTO [:] etiqueta

Etiqueta puede ser cualquier palabra que deseemos y se

reconocen porque empiezan por “:”.

Ejemplo: en varias partes de nuestro programa se presenta la

instrucción:

goto :FINAL

Al encontrarse nuestro programa un comando GOTO, se buscará

la etiqueta :FINAL en el script; si se encuentra, nuestro programa

saltará a dicha etiqueta y continuará en la línea que sigue a la

misma.

COMANDO PAUSE (pausa)

Función: Suspende la ejecución de un archivo de procesamiento

por lotes.

Formato: PAUSE (comentario)

Cuando se está ejecutando un archivo de procesamiento por

lotes, puede ser necesario cambiar el disco o realizar alguna otra

operación, por lo cual debemos pausar el proceso hasta que el

Page 86: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 72

usuario pulse una tecla. El comando PAUSE suspende este

proceso temporalmente, hasta que se presione cualquier tecla; al

ejecutarse emite el siguiente mensaje: Pulse cualquier tecla

cuando esté listo(a)...

Pause comentario: Es útil cuando desea poner en pantalla un

mensaje especial. A menos que el ECHO esté desactivado, PAUSE

muestra ese comentario antes de pulsar tecla.

Ejemplo: en la implementación de nuestros scripts hemos

empleado en múltiples ocasiones el comando pause como forma

de establecer un punto de corte en el proceso, de modo que se

pueda revisar éste antes de pasar a la siguiente etapa.

COMANDO REM (recordatorio, comentario)

Función: Nos permite poner comentarios en el programa.

Formato: REM comentario

Ejemplo: en nuestro script segm_monophones.bat la línea

siguiente muestra un comentario, que nos servirá de control:

rem 1. SEGMENTATION with one mixture HMM

COMANDO IF (si)

Función: Desvía condicionalmente el proceso de ejecución de un

fichero por lotes.

Formato:

Page 87: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 73

IF [NOT] ERRORLEVEL número comando

IF [NOT] cadena1==cadena2 comando

IF [NOT] EXIST archivo comando

NOT especifica que Windows debe ejecutar el comando sólo si la

condición es falsa.

ERRORLEVEL número especifica una condición verdadera si el

último programa que se ejecutó devolvió un código de salida igual

o mayor que el número especificado.

cadena1==cadena2 especifica una condición verdadera si las

cadenas de texto especificadas coinciden.

EXIST archivo especifica una condición verdadera si el archivo

especificado existe.

comando especifica el comando que se ejecutará si se cumple la

condición. Comando puede ir seguido de la palabra clave ELSE y,

a continuación, un comando que se ejecutará si la condición

especificada es FALSA. La cláusula ELSE debe aparecer en la

misma línea que la del comando que sigue al IF.

También podemos realizar distintos tipos de comparaciones

usando el siguiente formato:

IF [/I] cadena1 comparación cadena2 comando

donde comparación puede ser:

EQU – igual (equal)

NEQ - no igual

LSS - menor que

LEQ - menor que o igual

GTR - mayor que

GEQ - mayor que o igual

Page 88: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 74

Y el modificador /I, si se especifica, realiza comparaciones de

cadena que no distinguen entre mayúsculas y minúsculas. El

modificador /I también puede usarse en la forma

cadena1==cadena2 de IF.

Ejemplo: en nuestro script train_monophones.bat la línea

siguiente introduce una condición con if, de modo que las líneas

que se encuentran entre paréntesis sólo se ejecutarán si se

cumple dicha condición (en este caso, que se haya especificado

que se realice la normalización cepstral):

if %TIPO%==%TIPO_BASE%_cmn_cvn (

"%HTK_DIR%\HCompV.exe" -A -D -C %CONFIG_FILE_CMN% -c ..\cmn -q

m -k "*%%%%%%%%%%%%%%%%%%%%%%%%."%TIPO_BASE% -S

%LIST_FILE_TRAIN% > ..\cmn\HCompv.cmn.log

)

Comando FOR

Formato: FOR %%variable IN (conjunto) DO orden

Función: Este comando repite la orden especificada para cada

valor del conjunto. Conjunto es una lista de datos. En ella, se

pueden establecer varios nombres separados por espacios y

también utilizar comodines para representar ficheros o

directorios.

Ejemplo: en nuestro script segm_monophones.bat la línea

siguiente introduce una iteración con for:

for /L %%i in (1,1,%NUM_GAUSSIANS%) do call segm_gauss.bat %%i

Page 89: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 75

Como se ve en el ejemplo, las variables del FOR no tienen un solo

% como los argumentos, ni están encerradas entre % como las

variables del sistema, sino que comienzan por %%.

4.3 EL LENGUAJE PERL

A lo largo de los distintos scripts fundamentales del segmentador

recurrimos en varias ocasiones al lenguaje de programación perl, para

realizar tareas de simplificación o automatización. Por ello, dedicaremos

ahora un apartado a realizar una breve descripción del mismo.

Perl (Practical Extraction and Report Language) es un lenguaje de

propósito general originalmente desarrollado para la manipulación de

texto y que ahora es utilizado para un amplio rango de tareas

incluyendo administración de sistemas, desarrollo web, programación

en red, desarrollo de GUI y más.

Se previó que fuera práctico (facilidad de uso, eficiente, completo) en

lugar de “bonito” (pequeño, elegante, mínimo). Sus principales

características son que es fácil de usar, soporta tanto la programación

estructurada como la programación orientada a objetos y la

programación funcional, tiene incorporado un poderoso sistema de

procesamiento de texto y una enorme colección de módulos disponibles

[Pérez 2008].

Page 90: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 76

4.3.1 Estructura del lenguaje

Perl se considera un lenguaje interpretado, es decir, no es necesaria

una previa compilación para poder ejecutarse, lo único que se necesita

es pasarle al intérprete, perl, el código que queremos que ejecute.

Puede encontrarse amplia información sobre el lenguaje Perl en

[Perldoc 2012] y [Lizama 2012]. Nosotros nos detendremos en realizar

una breve explicación tan sólo de los elementos que componen las

instrucciones que se han empleado en la implementación de los

programas en perl que se utilizan en este proyecto:

Tipos de datos

Perl tiene tres tipos de datos: escalares, listas y hashes.

Un escalar es un sólo valor; puede ser un número, un string

(cadena de caracteres) o una referencia

Una lista es una colección ordenada de escalares (una variable

que almacena una lista se llama array)

Un hash, o memoria asociativa, es un mapeo de strings a

escalares; los strings se llaman claves y los escalares valores.

Todas las variables están precedidas por un símbolo, que identifica el

tipo de dato que es accedido (no el tipo de dato de la misma variable).

Se puede usar el mismo nombre para variables de diferentes tipos, sin

que tengan conflictos.

$var # un escalar

@var # un array

Page 91: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 77

%var # un hash

Estructuras de control

Perl tiene estructuras de control orientadas a bloque, similares a las

que tienen los lenguajes de programación C y Java. Las condiciones

están rodeadas por paréntesis y los bloques subordinados mediante

llaves:

while (condición) {...}

while (condición) {...} continue {...}

for (expresión_inicial; expresión_condicional; expresión_incremental) {...}

if (condición) {...}

if (condición) {...} else {...}

if (condición) {...} elsif (condición) {...} else {...}

Nuestros programas en Perl hacen uso continuamente de las

estructuras de control, dado que son una buena manera de realizar

labores repetitivas de manera automatizada. Por ejemplo, en

GenProto.per tenemos este código:

if ($NumStates==1)

{

printf stdout "1.000e+0\n";

}

else

{

for ($i=0; $i<$NumStates; $i++)

{

que utiliza las estructuras de control if, else y for para ir creando la

matriz de transición de estados, según se explica en el apartado

dedicado a este programa (5.4.1).

Page 92: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 78

Expresiones regulares

El lenguaje Perl incluye una sintaxis especializada para escribir

expresiones regulares y el intérprete contiene un motor para emparejar

strings con expresiones regulares.

Existen tres operadores básicos en perl: el operador de cotejo (m//), el

de sustitución (s///) y el de traducción (tr///). El único empleado en el

desarrollo de este proyecto es el de sustitución.

El operador de sustitución (s///) es utilizado para sustituir alguna

cadena o expresión por otra. Su sintaxis es sencilla, basta con indicar

entre los dos primeros delimitadores (las barras) la cadena que

queremos que sea sustituida, y entre el segundo y el tercer delimitador

la cadena por la cual queremos sustituirla. Por ejemplo, el siguiente

comando convertiría la letra b en mayúscula:

$x =~ s/abc/aBc/;

En nuestro código encontramos un ejemplo del operador de sustitución

en el programa blancos2retornos.per:

s/[\s\t]+/\n/g;

que reemplaza lo que encuentra entre las dos primeras barras, [\s\t]+,

es decir, espacios y tabuladores, por lo que encuentra entre las últimas,

\n, esto es, retornos de carro. Estos indicadores con barra invertida son

llamados metasecuencias, que serán explicados a continuación. Antes

de ello sólo hay que indicar que el indicador g que se encuentra al final

de la línea es una opción, que sirve para indicarle a perl que repita la

sustitución en todas las ocurrencias de la cadena. Si no lo indicáramos

Page 93: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 79

sustituiría el primer espacio que encontrara por un retorno de carro y

dejaría de realizar sustituciones en el resto del fichero.

Metasecuencias

En Perl se emplean metasecuencias, principalmente en las expresiones

regulares, para especificar condiciones de las cadenas de caracteres que

queremos modificar o tratar. Algunas de estas metasecuencias son:

\d: Cualquier dígito del 0 al 9.

\D: La mayúscula indica lo contrario de la minúscula; en este

caso, simboliza cualquier no-dígito.

\s: Cualquier espacio en blanco.

\S: Cualquier no-espacio.

\t: Cualquier tabulador.

\n: Cualquier retorno de carro.

\w: Cualquier secuencia de caracteres de palabra, es decir, todos

los caracteres alfanuméricos y el guión.

\W: Todos los caracteres no alfanuméricos.

+: Indica que el elemento o patrón que lo precede puede aparecer

una o más veces.

Un ejemplo de expresión regular que utilice estas metasecuencias

puede ser el siguiente:

if (m/\*(\s+)(\d+)(\s+)(\d+)(\s+)([a-zA-Záéíóú])/)

En este caso, la condición se cumplirá si se encuentra un * seguido de

uno o más espacios, seguido de uno o más números, a los que siguen

Page 94: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 80

uno o más espacios seguidos de uno o más números y que termina con

uno o más espacios seguidos de un conjunto de letras.

Para finalizar veremos un ejemplo con todo lo que hemos explicado en

este apartado (estructuras de control, expresiones regulares y

metasecuencias). Está sacado de nuestro segmentador, lo encontramos

en el script setBD.bat, en el que se adaptan los ficheros de

configuración para que cambien la variable TARGETKIND por el tipo de

algoritmo y los coeficientes con los que se quiere llevar a cabo la

parametrización de los ficheros de voz. La instrucción es la siguiente:

while ($_=<stdin>) {

$v=uc\"%1_%6\";

s/TARGETKIND[\s\t]+=[\s\t]+[a-zA-z_0-9]+/TARGETKIND = $v/i;

print;

}

Como se observa con la estructura de control while se van recorriendo

todas las líneas del fichero de configuración y se ejecutan las sentencias

que van entre llaves hasta que no queda ninguna línea más en el

fichero. A continuación se guarda en la variable $v el contenido de los

argumentos 1 y 6 (tipo de algoritmo de parametrización y coeficientes

extras, como se verá en el capítulo siguiente). A continuación

encontramos una expresión regular que hace uso de metasecuencias; se

trata del operador de sustitución s///, que indica que se debe cambiar

TARGETKIND[\s\t]+=[\s\t]+[a-zA-z_0-9]+

por

TARGETKIND = $v

es decir, cuando encuentre una línea que contenga TARGETKIND

seguido de uno o más espacios/tabuladores, un signo =, uno o más

Page 95: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

4. Descripción de las herramientas empleadas 81

espacios/tabuladores, y una sucesión de letras, dígitos y guiones bajos,

sustituirá toda esa cadena por TARGETKIND = seguido del contenido de

la variable v que fue almacenado antes. La sentencia termina con la

opción i, que indica a perl que ignore el uso de mayúsculas y

minúsculas. Por último se imprime el contenido de la línea que se

estaba leyendo, con su correspondiente sustitución dado el caso.

Este ejemplo que contiene estructuras de control, expresiones regulares

y metasecuencias es muy representativo del tipo de labores que

realizaremos en perl para determinadas tareas de nuestro segmentador.

En el capítulo siguiente se explicarán los scripts del sistema, y se

dedicará un apartado especial a los programas desarrollados en perl.

Page 96: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 82

5. IMPLEMENTACIÓN DEL SEGMENTADOR:

ESTRUCTURA DEL PROGRAMA Y SUS

SCRIPTS

El segmentador fonético automático para habla expresiva está

desarrollado en una serie de scripts que se ejecutan desde la línea de

comandos de Windows o MS-DOS. Cada uno de estos scripts se

corresponde con una de las fases del proceso (acondicionamiento de

ficheros, parametrización, entrenamiento, reconocimiento,

segmentación y evaluación, entre otros) y en ellos se emplean las

herramientas que describíamos en el capítulo anterior, principalmente

aquellas proporcionadas por HTK.

En este capítulo haremos una descripción del programa completo,

analizando cada uno de estos scripts, así como los ficheros de

configuración empleados. Pero antes de nada, comenzaremos por

describir la estructura de directorios donde se encuentran ubicados

dichos scripts.

Page 97: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 83

5.1 LA ESTRUCTURA DE DIRECTORIOS DEL

SEGMENTADOR

La estructura de directorios del segmentador ha sido pensada para que

responda a los diferentes tipos de ficheros de los que se hace uso a lo

largo del programa, así como a las diferentes etapas por las que pasa el

proceso.

Siendo la carpeta base \usuarios_jcarmona\ la estructura de directorios

que se encuentran por debajo de éste es la siguiente:

\usuarios_jcarmona

\HMMs-CEU

\HTK

\htk 3.3

\segmentation

\experiments

\ses

\monophones

\sev

Page 98: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 84

\monophones

\UPC

\monophones

\mfcc_par

\ses

\sev

\UPC

\parrafosDivididos_Completos

\segmenter

\cmn

\cvn

\labels

\lib

\lists

\scripts

\src_c

Page 99: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 85

\gen_models

\score

\training

\SEV

\UPC

Page 100: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 86

5.2 LOS SCRIPTS DEL SEGMENTADOR

El programa del segmentador consta de una serie de scripts, que se

encuentran en la carpeta scripts, y que se van ejecutando en cadena de

acuerdo con la siguiente secuencia:

A continuación se describe cada uno de los scripts fundamentales del

sistema.

FULL.BAT

EXPERIM.BAT

SETBD.BAT

PARAM.BAT

TRAIN_MONOPHONES.BAT

RECO_MONOPHONES.BAT

EVAL_MONOPHONES.BAT

SEGM_MONOPHONES.BAT

TRAIN_AUTO.BAT

RECO_GAUSS.BAT

SEGM_GAUSS.BAT

EVAL_GAUSS.BAT

Page 101: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 87

5.2.1 Full.bat

El script que se debe ejecutar en primer lugar y que dará lugar a que

los demás lo vayan haciendo de forma consecutiva es full.bat. Contiene

tan sólo una llamada al siguiente script, experim.bat, con los siete

argumentos que se le deben pasar a dicho programa:

call experim.bat mfcc 5 5 10 _ 0_D_A 39

Dichos argumentos, cuyo uso iremos viendo más adelante, son los

siguientes:

[1]1: Tipo base del algoritmo de parametrización. Los valores

posibles son

- mfcc para bancos de filtros de coeficientes cepstrales con

frecuencias en la escala de Mel y

- plp para predicción lineal perceptual

[2]: Número de estados en los modelos ocultos de Markov

[3]: Número de iteraciones o reestimaciones de los modelos

[4]: Número de gaussianas con los que modelar cada estado

1 Nótese que comenzamos la numeración de los argumentos por [1], en lugar de por [0] como cabría

esperar al tratarse de una instrucción de lenguaje de comandos en la shell de Windows. Esto es así porque

la función principal de la instrucción es call, función que llama a otro script para ser ejecutado; este script

es precisamente el argumento [0] de la función principal, en nuestro caso, experim.bat.

Page 102: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 88

[5]: Indicador de si se va a emplear normalización cepstral en el

experimento o no, según se explicó en el capítulo anterior. Los valores

posibles son

- _ si no se va a emplear normalización cepstral

- _cmn_cvn para añadir al experimento normalización

cepstral de la media y de la varianza.

[6]: Indicadores del tipo de coeficientes que se añadirán en la

parametrización a los coeficientes cepstrales, separados por guión bajo.

De entre todos estos indicadores, que enumerábamos en el capítulo

anterior, los que emplearemos en nuestros experimentos serán:

- 0 para un primer coeficiente estático cero

- E para un coeficiente con la cantidad de energía media

- D para los coeficientes Delta

- A para los coeficientes de aceleración

- T para los coeficientes de tercera derivada

- Z para indicar valor medio nulo. Este coeficiente se emplea

en la normalización cepstral, por lo que si el indicador anterior fue

_cmn_cvn el sexto argumento debe contener por coherencia el indicador

_Z.

[7]: Número de coeficientes que contendrán los vectores de la

señal de audio parametrizada. Este número debe guardar relación con

el resto de argumentos del experimento que se quiere realizar. Tomemos

de nuevo la primera instrucción como ejemplo:

call experim.bat mfcc 5 5 10 _ 0_D_A 39

Page 103: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 89

Nuestra señal parametrizada constará de 12 coeficientes cepstrales de

frecuencia MEL (así lo parametrizaremos en la variable NUMCEPS del

fichero de configuración que le pasaremos al HCopy más adelante), a los

que habrá que añadir 1 coeficiente estático cero (_0), 12 coeficientes

derivados (_D) más su correspondiente cero, y 12 coeficientes acelerados

(_A) más su correspondiente cero; en total suman 39 coeficientes, que

será el número que pasaremos como argumento en séptima posición.

De este modo serán admisibles como sexto y séptimo argumento, por

ejemplo,

0_D_A 39

E_D_A 39

0_D 26

E 13

pero no lo serán combinaciones como

E 39

0_D_A 13 ó

0 12.

Además de la instrucción que llama al script experim.bat, en full.bat

hemos añadido un primer script auxiliar limpia.bat que limpia ciertos

directorios que se van utilizando durante el proceso. Su contenido se

explica en el epígrafe dedicado a los scripts auxiliares, apartado 5.3.1.

Dado que queremos realizar múltiples experimentos con

configuraciones distintas, la sencillez del fichero full.bat lo hace ideal

para que en él tengamos almacenados diferentes tipos de experimentos

que serán comentados y descomentados (con una pareja de dos puntos

::) a medida que queramos ejecutar experimentos de una u otra

Page 104: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 90

característica. De esta manera, un contenido habitual de full.bat es el

siguiente:

call limpia.bat

call experim.bat mfcc 5 5 10 _ 0 13

::call limpia.bat

::call experim.bat mfcc 5 5 10 _ D_0 26

::call limpia.bat

::call experim.bat mfcc 5 5 10 _ 0_D_A 39

::call limpia.bat

::call experim.bat plp 5 5 10 _ 0 13

::call limpia.bat

::call experim.bat plp 5 5 10 _ D_0 26

::call limpia.bat

::call experim.bat plp 5 5 10 _ 0_D_A 39

Lo que nos va a permitir hacer experimentos con 5 estados, 5

iteraciones y 10 gaussianas, utilizando los coeficientes _0, _D y _A de

forma acumulativa, tanto para la técnica mfcc como para plp. Con este

código ejecutaremos el primer experimento. Cuando éste haya acabado

bastará con comentar las dos primeras líneas, descomentar las dos

siguientes y volver a ejecutar full.bat, lo que dará lugar al comienzo de

nuevo de todo el proceso, esta vez con la segunda manera de definir el

proceso que hemos especificado.

5.2.2 Experim.bat

Este script es el corazón del segmentador, ya que es el que define la

estructura de las diferentes etapas del proceso, llamando a cada uno de

los scripts encargados de llevarlas a cabo.

Page 105: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 91

Experim.bat comienza definiendo el nombre del fichero de log:

echo on

set FICH_LOG=log_%1_%5_%6_states%2_iter%3_gauss%4.log

que en el caso del ejemplo que proponemos se convertirá en:

set FICH_LOG=log_mfcc_0_D_A_ states5_iter5_gauss10.log

A continuación experim.bat comienza a llamar a los diferentes scripts

del proceso, de manera que la ejecución pasará por el primero,

setbd.bat, volverá a experim.bat cuando termine, éste llamará al

segundo, param.bat, y así sucesivamente hasta haber pasado por todas

las etapas del proceso (setup y acondicionamiento de ficheros,

parametrización, entrenamiento, reconocimiento, segmentación y

evaluación):

call setBD.bat %1 %2 %3 %4 %5 %6 %7 > %FICH_LOG% 2>&1

call param.bat >> %FICH_LOG% 2>&1

call train_monophones.bat >> %FICH_LOG% 2>&1

call reco_monophones.bat >> %FICH_LOG% 2>&1

call segm_monophones.bat >> %FICH_LOG% 2>&1

call eval_monophones.bat >> %FICH_LOG% 2>&1

Las salidas por consola de los diferentes scripts las redireccionamos al

fichero de logs a través de los comandos > %FICH_LOG% 2>&1 (que crea

un fichero con el nombre que definimos en el primer set y lo rellena con

la salida de texto del primer script) y >> %FICH_LOG% 2>&1 (que

concatena la salida de los demás scripts a continuación de lo que ya

estaba escrito en el fichero). De esta manera conseguimos tener

guardado en un fichero de log el seguimiento de todas las instrucciones

que se han ido ejecutando en el proceso y los posibles resultados de

dichas instrucciones.

Page 106: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 92

5.2.3 SetBD.bat

El primero de los scripts a los que llama experim.bat es setBD.bat que

se corresponde con la primera etapa del proceso, la configuración del

sistema y el acondicionamiento de ficheros. En este script se elige la

base de datos con la que se va a trabajar, se define la estructura de

directorios, indicando los nombres de los que son fijos y creando los

necesarios para el experimento en curso, se crean los archivos de

etiquetas, etc. Veamos todas estas opciones de configuración del

sistema a medida que aparecen en el script.

En primer lugar definimos el entorno del ordenador sobre el que

ejecutaremos el segmentador, esto es, la unidad de disco. Al haber

estado realizando pruebas tanto en el ordenador portátil propio como en

una máquina del laboratorio tenemos en el código la opción de elegir

(comentando o descomentando) el entorno en el que nos encontramos:

set DISCO_BASE=c:

::set DISCO_BASE=h:

Indicamos al sistema mediante la variable IDENTIF si vamos a realizar

el proceso completo de segmentación (valor SEGMENTATION) o si por el

contrario sólo vamos a reconocer en el experimento actual (valor

IDENTIFICATION). En la mayoría de nuestros experimentos haremos

uso del proceso completo de segmentación:

::set IDENTIF=IDENTIFICATION

set IDENTIF=SEGMENTATION

En la mayoría de nuestros experimentos realizaremos entrenamiento de

los modelos, si bien en algún experimento nos podrá interesar utilizar

Page 107: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 93

modelos ya entrenados. Para indicarle al sistema si entrenaremos o no

los modelos empleamos la variable ENTRENAR_MODELOS:

set ENTRENAR_MODELOS=SI

::set ENTRENAR_MODELOS=NO

Elegimos la base de datos con la que trabajaremos en el experimento

actual mediante la variable BD. Las distintas bases de datos que

empleamos en este proyecto se describen en el capítulo

conrrespondiente:

set BD=SES

::set BD=SEV

::set BD=UPC

A continuación se indica cuál es la versión de HTK que se va a utilizar.

Se tienen disponibles las versiones 3.3 y 3.4 de esta herramienta, por lo

que se puede decidir entre emplear una y otra con tan sólo indicar en

este script de configuración la carpeta donde hay que buscar el kit de

herramientas:

:: Versión del HTK - Primera línea para versión 3.3, segunda para 3.4

:: set HTK_DIR=%DISCO_BASE%\usuarios_jcarmona\htk.3.3

set HTK_DIR=%DISCO_BASE%\usuarios_jcarmona\HMMs-CEU\HTK\bin.win32

La elección de la versión de HTK será objeto de uno de los primeros

experimentos que se describen en el capítulo de ejecuciones y

resultados.

El siguiente grupo de líneas se encarga de definir la estructura de

directorios del segmentador (ver apartado 5.1). En primer lugar se

define el directorio base de todo el sistema de segmentación:

set BASE_DIR=%DISCO_BASE%\usuarios_jcarmona\segmentation

Page 108: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 94

Este directorio base del sistema de segmentación incluye el

segmentador propiamente dicho y las carpetas que contienen los

archivos de sonidos y etiquetas de cada una de las bases de datos

empleadas. Así, se definen el directorio del segmentador

(SEGMENTER_DIR) y los subdirectorios que contienen las listas

(LISTS_DIR), las librerías (LIB_DIR), los archivos maestros de etiquetas

MLF (LABELS_DIR) y el código de dos programas empleados durante el

proceso y que serán explicados más adelante (BIN_DIR):

set SEGMENTER_DIR=%BASE_DIR%\segmenter

set BIN_DIR=%SEGMENTER_DIR%\src_c

set LISTS_DIR=%SEGMENTER_DIR%\lists

set LIB_DIR=%SEGMENTER_DIR%\lib

set LABELS_DIR=%SEGMENTER_DIR%\labels

Respecto a las etiquetas se define un directorio de entrada de las

mismas y uno de salida. Las etiquetas que se toman como entrada al

sistema procederán de un directorio u otro dependiendo de la base de

datos que se desee emplear, por lo que hemos hecho que esta variable

dependa en el código de la base de datos que hayamos elegido

anteriormente al dar valor a la variable BD:

if %BD%==SES (

set LABELS_IN_DIR=%BASE_DIR%\parrafosDivididos_Completos

)

if %BD%==SEV (

set LABELS_IN_DIR=%BASE_DIR%\SEV

)

if %BD%==UPC (

set LABELS_IN_DIR=%BASE_DIR%\UPC

)

set LABELS_OUT_DIR=%SEGMENTER_DIR%\labels

Page 109: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 95

Se define ahora el directorio donde se guardarán los modelos y los

resultados de los experimentos ejecutados. Se tiene definida una

carpeta por cada base de datos, y dentro de ellas un directorio

(monophones) que contiene todas las carpetas que se generan cuando se

crean los modelos, hmm:

set EXPERIMENT_DIR=%BASE_DIR%\experiments\%BD%

set BASE_HMM_DIR=%EXPERIMENT_DIR%\monophones

set HMM_DIR=%BASE_HMM_DIR%\hmm

Se toman ahora los argumentos que hemos pasado al llamar a

experim.bat para establecer el tipo de técnica, que está definido como la

técnica base (mfcc o plp como explicábamos en el punto 5.2.1) y el

indicador de si se va a utilizar normalización cepstral o no, recogido en

el quinto argumento. Se definen también los parámetros empleados y el

tipo base concatenado con los parámetros (PAR_TYPE). Estas cuatro

variables se definen así porque serán utilizadas más adelante como

argumentos a pasar a las distintas herramientas HTK que se

ejecutarán:

:: Elección de técnica MFCC/PLP y parametrización

set TIPO_BASE=%1

set TIPO=%TIPO_BASE%%5%

set PARAMETROS=%6

set PAR_TYPE=%TIPO_BASE%_%6%

A continuación se captura también de los argumentos iniciales los

valores que queremos dar a las variables que contienen el número de

estados, de iteraciones, de gausianas y de coeficientes:

:: Configuración de los HMM (TRAIN_MONOPHONES.BAT)

set NUM_ESTADOS=%2

set NUM_ITERACIONES=%3

Page 110: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 96

set NUM_GAUSSIANS=%4

set NUM_COEF=%7

En nuestro ejemplo estas variables habrían quedado configuradas de la

siguiente manera:

TIPO_BASE=mfcc

TIPO=mfcc_

PARAMETROS=0_D_A

PAR_TYPE=mfcc_0_D_A

NUM_ESTADOS=5

NUM_ITERACIONES=5

NUM_GAUSSIANS=10

NUM_COEF=39

El siguiente grupo de líneas está dedicado a definir los ficheros de

configuración que se pasarán a las diferentes herramientas de HTK que

emplearemos en el proceso. El primero de ellos es el archivo de

configuración de Hcopy, que será empleado durante la parametrización:

:: Fichero de configuración de HCopy (PARAM_MFCC.BAT)

set CONFIG_FILE_HCOPY=%LIB_DIR%\config_hcopy_%BD%_%TIPO%

copy %CONFIG_FILE_HCOPY% %LIB_DIR%\tmp.tmp

perl -e "while ($_=<stdin>){$v=uc \"%1_%6\";s/TARGETKIND[\s\t]+=[\s\t]+[a-zA-

z_0-9]+/TARGETKIND = $v/i;print;}" < %LIB_DIR%\tmp.tmp >%CONFIG_FILE_HCOPY%

Como se observa el nombre del fichero de configuración se define

conteniendo la base de datos elegida y el tipo de parametrización; en

nuestro caso de ejemplo se llamaría por tanto config_hcopy_SES_mfcc_.

Las dos líneas siguientes sirven para adaptar la variable TARGETKIND

contenida dentro de este fichero de configuración al tipo de

parametrización empleada en el experimento actual. Esto lo hace

copiando primero el archivo de configuración tal y como lo encuentre en

Page 111: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 97

un archivo temporal. Imaginemos que este archivo contenía

inicialmente TARGETKIND = PLP_0. En la siguiente línea, mediante una

instrucción perl cambiará el valor de esta variable al contenido de la

variable PAR_TYPE que ya hemos definido y sobrescribirá el archivo

config_hcopy_SES_mfcc_, de manera que al final éste contendrá el valor

TARGETKIND = MFCC_0_D_A. Este paso es necesario ya que es muy

importante que las herramientas de HTK reciban este parámetro por

medio del archivo de configuración de forma coherente con el

experimento actual, y mediante este acondicionamiento del fichero de

configuración se consigue dicha coherencia.

A continuación se definen y se acondicionan de la misma forma los

ficheros de configuración de HCompV, que se empleará en el

entrenamiento:

:: Ficheros de configuración de HCompV (TRAIN_MONOPHONES.BAT)

set CONFIG_FILE_HCOMPV=%LIB_DIR%\config_hcompv_%TIPO%

copy %CONFIG_FILE_HCOMPV% %LIB_DIR%\tmp.tmp

perl -e "while ($_=<stdin>){$v=uc \"%1_%6\";s/TARGETKIND[\s\t]+=[\s\t]+[a-zA-

z_0-9]+/TARGETKIND = $v/i;print;}" < %LIB_DIR%\tmp.tmp

>%CONFIG_FILE_HCOMPV%

set CONFIG_FILE_CMN=%LIB_DIR%\config_%TIPO%.cmn

copy %CONFIG_FILE_CMN% %LIB_DIR%\tmp.tmp

perl -e "while ($_=<stdin>){$v=uc \"%1_%6\";s/TARGETKIND[\s\t]+=[\s\t]+[a-zA-

z_0-9]+/TARGETKIND = $v/i;print;}" < %LIB_DIR%\tmp.tmp >%CONFIG_FILE_CMN%

set CONFIG_FILE_CVN=%LIB_DIR%\config_%TIPO%.cvn

copy %CONFIG_FILE_CVN% %LIB_DIR%\tmp.tmp

perl -e "while ($_=<stdin>){$v=uc \"%1_%6\";s/TARGETKIND[\s\t]+=[\s\t]+[a-zA-

z_0-9]+/TARGETKIND = $v/i;print;}" < %LIB_DIR%\tmp.tmp >%CONFIG_FILE_CVN%

Page 112: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 98

y de HERest, que se emplea en el entrenamiento, y Hvite, que se utiliza

durante el reconocimiento y segmentación. Para ambas herramientas el

archivo de configuración será común:

:: Fichero de configuración de HERest (TRAIN_MONOPHONES.BAT) y HVite

(RECO_MONOPHONES.BAT)

set CONFIG_FILE_TRAIN=%LIB_DIR%\config_tr_%TIPO%

copy %CONFIG_FILE_TRAIN% %LIB_DIR%\tmp.tmp

perl -e "while ($_=<stdin>){$v=uc \"%1_%6\";s/TARGETKIND[\s\t]+=[\s\t]+[a-zA-

z_0-9]+/TARGETKIND = $v/i;print;}" < %LIB_DIR%\tmp.tmp >%CONFIG_FILE_TRAIN%

A continuación se genera el fichero de prototipos que se empleará

durante el entrenamiento. Para ello se renombra el fichero de prototipos

existente con el número de estados y el tipo de parametrización (en el

ejemplo se llamaría proto_5states_mfcc_) y mediante un programa en

perl, genProto.per se adapta este fichero, recreando una estructura que

se corresponda con el número de estados y coeficientes y con el tipo de

parametrización empleados. La explicación de genProto.per se encuentra

en el epígrafe dedicado a los programas en perl, apartado 5.4.1.

::Genera el fichero de prototipos en LIB

set Fichero_Proto=proto_%NUM_ESTADOS%states_%TIPO%

perl genProto.per %NUM_ESTADOS% %NUM_COEF% %PAR_TYPE%

>%LIB_DIR%\%Fichero_Proto%

Se define ahora la ubicación de los programas en C que se encuentran

en el directorio especificado en BIN_DIR, copiaModelos y score, y que

serán útiles durante el entrenamiento y la evaluación respectivamente:

:: Definición del directorio del programa copiaModelos (TRAIN_MONOPHONES.BAT)

set BIN_DIR_TRAIN=%BIN_DIR%\gen_models

:: Definición del directorio del programa score (EVAL_MONOPHONES.BAT)

set BIN_DIR_EVAL=%BIN_DIR%\score

Page 113: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 99

Se definen a continuación los nombres de los ficheros de listas (.lis) que

contendrán las direcciones de todos los archivos parametrizados que se

emplearán como conjunto de datos para el entrenamiento (TRAIN), los

dos tipos de evaluaciones que realizaremos (TEST y TEST2) y el

conjunto total (TRAINTEST). Igualmente se definirán los ficheros de

script (.scp) que son los que relacionan las ubicaciones de los ficheros

de sonido originales con las de los archivos parametrizados (es decir, los

archivos de entrada y de salida del proceso de parametrización),

definidos también para esos cuatro conjuntos de datos:

:: Ficheros de listas

set LIST_FILE_TRAIN=%LISTS_DIR%\lab_htk_%BD%_train.lis

set LIST_FILE_TEST=%LISTS_DIR%\lab_htk_%BD%_test.lis

set LIST_FILE_TEST2=%LISTS_DIR%\lab_htk_%BD%_test2.lis

set LIST_FILE_TRAINTEST=%LISTS_DIR%\lab_htk_%BD%_traintest.lis

set SCP_FILE_TRAIN=%LISTS_DIR%\lab_htk_%BD%_train.scp

set SCP_FILE_TEST=%LISTS_DIR%\lab_htk_%BD%_test.scp

set SCP_FILE_TEST2=%LISTS_DIR%\lab_htk_%BD%_test2.scp

set SCP_FILE_TRAINTEST=%LISTS_DIR%\lab_htk_%BD%_traintest.scp

Definimos ahora los nombres de los ficheros maestros de etiquetas:

:: Ficheros de etiquetas

set LABEL_OUT_FILE_TRAIN=%LABELS_OUT_DIR%\%BD%_extracted_train.mlf

set

LABEL_OUT_FILE_TRAINTEST=%LABELS_OUT_DIR%\%BD%_extracted_traintest.mlf

set LABEL_OUT_FILE_TEST=%LABELS_OUT_DIR%\%BD%_extracted_test.mlf

set LABEL_OUT_FILE_TEST2=%LABELS_OUT_DIR%\%BD%_extracted_test2.mlf

Y definimos a continuación los nombres de la lista de fonemas, de la red

de fonemas, de la gramática empleada y del diccionario de fonemas:

:: Lista de fonemas

set PHONEME_LIST=%LIB_DIR%\phonemes_%BD%.lis

Page 114: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 100

:: Ficheros de diccionario y red de fonemas

set NET=%LIB_DIR%\phon_network_%BD%.nwk

set FICH_SYN=%LIB_DIR%\phon_network_%BD%.syn

set DICT=%LIB_DIR%\monophones_%BD%.dct

Pasamos ahora a definir el tipo de ficheros de sonido que queremos

incluir en cada uno de los cuatro grupos que se utilizarán en el

experimento. Imaginemos por ejemplo que queremos realizar el

entrenamiento con las alocuciones de párrafos de SES para todas las

emociones, y que queremos evaluar los ficheros de frases de SES con

los modelos resultantes. Tendríamos que indicar los cuatro sets de

ficheros que queremos emplear, y lo hacemos nombrando esas variables

con las iniciales de los ficheros que comparten la característica que

pretendemos emplear, es decir para que el conjunto de ficheros con los

que vamos a entrenar sean los de párrafos de todas las emociones

indicaremos “r_a r_n r_s r_t r_e” dentro de la variable TRAIN_SET. Si

sólo quisiéramos los párrafos con emoción neutra indicaríamos sólo

“r_n”, que es el comienzo de los nombres de los ficheros que contienen

esas características. Por tanto, definiríamos el experimento comentado

de la siguiente manera:

SET TRAIN_SET=r_a r_n r_s r_t r_e

SET TEST_SET=fa fn fs ft fe

SET TEST_SET2=fa fn fs ft fe

SET TOTAL_SET=r_a r_n r_s r_t r_e fa fn fs ft fe

set

RESULTS_DIR=%BASE_HMM_DIR%\%BD%__R_ANSTE__FANSTE__%TIPO%_%PARAMET

ROS%_%IDENTIF%_MIXED_ states%NUM_ESTADOS%_iter%NUM_ITERACIONES%_

gauss%NUM_GAUSSIANS%

Page 115: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 101

El directorio donde se almacenarán los resultados debe tener un

nombre que sea lo suficientemente identificativo para que podamos

saber a qué experimento corresponden los resultados que contiene. En

nuestro caso este directorio será:

\experiments\SES\monophones\SES__R_ANSTE__FANSTE__mfcc__0_D_A_SEGM

ENTATION_MIXED_ states5_iter5_ gauss10

que como se observa contiene todos los parámetros de configuración

que hemos ido viendo a lo largo de este script.

La última tarea que realiza el script setBD.bat es el acondicionamiento

de los ficheros de listas. Véamos a qué nos referimos.

Como comentábamos antes, los ficheros de listas (.lis) son los que

contienen las direcciones de todos los archivos parametrizados. Por

ejemplo, el fichero lab_htk_SES_mfcc_fa.lis contiene líneas del estilo:

..\..\mfcc_par\SES\F_A_0103.mfc

..\..\mfcc_par\SES\F_A_0104.mfc

..\..\mfcc_par\SES\F_A_0105.mfc

es decir, la ubicación de todos los ficheros parametrizados de frases

alegres de la base de datos SES. Habrá por tanto tantos ficheros de este

estilo como combinaciones de BD-técnica-frases/párrafos-emoción

existan, es decir tendremos

lab_htk_SES_mfcc_fa.lis

lab_htk_SES_mfcc_r_a.lis

lab_htk_SES_plp_fa.lis

lab_htk_SES_plp_r_a.lis

lab_htk_SEV_mfcc_f_n.lis

lab_htk_UPC_plp_se.lis

etc., lo que da lugar a una gran cantidad de ficheros de listas.

Page 116: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 102

Se observa por tanto la necesidad de reunir en una sola lista las

ubicaciones de aquellos ficheros que se emplearán como conjunto de

datos para el entrenamiento (TRAIN), los dos tipos de evaluaciones que

realizaremos (TEST y TEST2) y el conjunto total (TRAINTEST) del

experimento concreto que vamos a realizar.

Del mismo modo, y como comentábamos antes también, los ficheros de

script (.scp) son los que relacionan las ubicaciones de los ficheros de

sonido originales con las de los archivos parametrizados (es decir, los

archivos de entrada y de salida del proceso de parametrización). Por

ejemplo, el fichero lab_htk_SES_mfcc_fa.scp contiene líneas del estilo:

..\..\parrafosDivididos_Completos\F_A_0103.PCM

..\..\mfcc_par\SES\F_A_0103.mfc

..\..\parrafosDivididos_Completos\F_A_0104.PCM

..\..\mfcc_par\SES\F_A_0104.mfc

..\..\parrafosDivididos_Completos\F_A_0105.PCM

..\..\mfcc_par\SES\F_A_0105.mfc

es decir, la relación de las ubicaciones de todos los ficheros originales

de frases alegres de la base de datos SES y la de sus respectivos

ficheros parametrizados. Habrá por tanto tantos ficheros de este estilo

como combinaciones de BD-técnica-frases/párrafos-emoción existan, es

decir tendremos

lab_htk_SES_mfcc_fa.scp

lab_htk_SES_mfcc_r_a.scp

lab_htk_SES_plp_fa.scp

lab_htk_SES_plp_r_a.scp

lab_htk_SEV_mfcc_f_n.scp

lab_htk_UPC_plp_se.scp

etc., lo que da lugar a una gran cantidad de ficheros de script.

Page 117: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 103

Se observa de nuevo la necesidad de reunir en una sola lista las

relaciones de ubicaciones de aquellos ficheros que se emplearán como

conjunto de datos para el entrenamiento (TRAIN), los dos tipos de

evaluaciones que realizaremos (TEST y TEST2) y el conjunto total

(TRAINTEST) del experimento concreto que vamos a realizar.

Esos cuatro ficheros de listas a emplear en el experimento y los cuatro

de script se crean de la siguiente manera. Recordemos que ya antes

habíamos definido sus nombres, en las variables

LIST_FILE_TRAIN

LIST_FILE_TEST

LIST_FILE_TEST2

LIST_FILE_TRAINTEST

SCP_FILE_TRAIN

SCP_FILE_TEST

SCP_FILE_TEST2

SCP_FILE_TRAINTEST

Ahora pues entraremos en el directorio de listas donde se encuentran y

empezaremos borrando el contenido de los que pudieran existir:

cd ..\lists

copy vacio.lis %LIST_FILE_TRAIN%

copy vacio.lis %LIST_FILE_TEST%

copy vacio.lis %LIST_FILE_TEST2%

copy vacio.lis %LIST_FILE_TRAINTEST%

copy vacio.lis %SCP_FILE_TRAIN%

copy vacio.lis %SCP_FILE_TEST%

copy vacio.lis %SCP_FILE_TEST2%

copy vacio.lis %SCP_FILE_TRAINTEST%

Page 118: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 104

Cogemos el contenido de los conjuntos de experimentos tal como

acabamos de definir y lo escribimos en ficheros .dep:

echo %TRAIN_SET% >train_set.dep

echo %TEST_SET% >test_set.dep

echo %TEST_SET2% >test_set2.dep

echo %TOTAL_SET% >total_set.dep

Según nuestro ejemplo, por tanto, el contenido del fichero train_set.dep

será

r_a r_n r_s r_t r_e

Ahora pasamos estas cadenas a ficheros .dp, en los que habremos

sustuído espacios por retornos de carro mediante el programa en perl

blancos2retornos.per (véase su código en el apartado 5.4.2):

perl blancos2retornos.per <train_set.dep >train_set.dp

perl blancos2retornos.per <test_set.dep >test_set.dp

perl blancos2retornos.per <test_set2.dep >test_set2.dp

perl blancos2retornos.per <total_set.dep >total_set.dp

Según nuestro ejemplo el contenido del fichero train_set.dp que hemos

creado será

r_a

r_n

r_s

r_t

r_e

Ahora emplearemos el programa mi_type.bat, que tan sólo escribe lo

que se le pasa como primer argumento en el fichero que le indiquemos

como segundo argumento (véase código en el apartado 5.3.2). Con él

iremos rellenando nuestros ficheros de listas con cada una de las listas

Page 119: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 105

correpondientes a los conjuntos de datos que estén representados en el

archivo .dp anterior:

for /F %%i in (TRAIN_SET.dp) do call ..\scripts\mi_type.bat

lab_htk_%BD%_%TIPO_BASE%_%%i.lis %%LIST_FILE_TRAIN%%

for /F %%i in (TEST_SET.dp) do call ..\scripts\mi_type.bat

lab_htk_%BD%_%TIPO_BASE%_%%i.lis %%LIST_FILE_TEST%%

for /F %%i in (TEST_SET2.dp) do call ..\scripts\mi_type.bat

lab_htk_%BD%_%TIPO_BASE%_%%i.lis %%LIST_FILE_TEST2%%

for /F %%i in (TOTAL_SET.dp) do call ..\scripts\mi_type.bat

lab_htk_%BD%_%TIPO_BASE%_%%i.lis %%LIST_FILE_TRAINTEST%%

Esto es, para cada línea que se encuentre en el fichero TRAIN_SET.dp,

cogerá el fichero de listas del indicador de esa línea en concreto y lo

volcará en el fichero global. De esta manera, y teniendo en cuenta el

fichero .dp anterior en el archivo lab_htk_SES_train.lis tendremos

volcado el contenido de los ficheros

lab_htk_SES_mfcc_r_a.lis

lab_htk_SES_mfcc_r_n.lis

lab_htk_SES_mfcc_r_s.lis

lab_htk_SES_mfcc_r_t.lis

lab_htk_SES_mfcc_r_e.lis

con lo que habremos conseguido tener en un solo fichero de lista todos

los archivos que se emplearán para el entrenamiento. El mismo

razonamiento se puede aplicar a los otros tres conjuntos de datos,

TEST_SET, TEST2_SET y TOTAL_SET.

Exactamente de la misma manera procederemos a rellenar los cuatro

ficheros globales de script:

for /F %%i in (TRAIN_SET.dp) do call ..\scripts\mi_type.bat

lab_htk_%BD%_%TIPO_BASE%_%%i.scp %%SCP_FILE_TRAIN%%

Page 120: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 106

for /F %%i in (TEST_SET.dp) do call ..\scripts\mi_type.bat

lab_htk_%BD%_%TIPO_BASE%_%%i.scp %%SCP_FILE_TEST%%

for /F %%i in (TEST_SET2.dp) do call ..\scripts\mi_type.bat

lab_htk_%BD%_%TIPO_BASE%_%%i.scp %%SCP_FILE_TEST2%%

for /F %%i in (TOTAL_SET.dp) do call ..\scripts\mi_type.bat

lab_htk_%BD%_%TIPO_BASE%_%%i.scp %%SCP_FILE_TRAINTEST%%

Por último, y para terminar el script de configuración, se vuelve al

directorio de scripts y se crea el directorio de resultados, de manera que

la estructura está ya lista para que se pueda comenzar con la primera

fase del proceso después de la configuración, la parametrización:

cd ..\scripts

md %RESULTS_DIR%

5.2.4 Param.bat

El proceso de parametrización, explicado en el apartado 4.1.2 del

capítulo anterior se implementa en el script param.bat. La estructura de

este script es muy simple, ya que tan sólo se realizan cuatro llamadas a

la herramienta HCopy, que como indicamos en su momento es la que

realiza una simple copia del fichero de origen en el fichero destino, pero

transformándolo según la configuración establecida en el fichero de

configuración que se le pase. Estas cuatro llamadas a HCopy son:

"%HTK_DIR%\HCopy.exe" -A -D -V -C %CONFIG_FILE_HCOPY% -n 1 -1 -L

%LABELS_IN_DIR% -l * -i %LABEL_OUT_FILE_TRAIN% -S %SCP_FILE_TRAIN%

"%HTK_DIR%\HCopy.exe" -A -D -V -C %CONFIG_FILE_HCOPY% -n 1 -1 -L

%LABELS_IN_DIR% -l * -i %LABEL_OUT_FILE_TEST% -S %SCP_FILE_TEST%

"%HTK_DIR%\HCopy.exe" -A -D -V -C %CONFIG_FILE_HCOPY% -n 1 -1 -L

%LABELS_IN_DIR% -l * -i %LABEL_OUT_FILE_TEST2% -S %SCP_FILE_TEST2%

Page 121: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 107

"%HTK_DIR%\HCopy.exe" -A -D -V -C %CONFIG_FILE_HCOPY% -n 1 -1 -L

%LABELS_IN_DIR% -l * -i %LABEL_OUT_FILE_TRAINTEST% -S %SCP_FILE_TRAINTEST%

Analicemos la primera llamada, la que parametriza los ficheros que se

utilizarán para entrenar (las otras tres son iguales pero se realizan

sobre los otros tres conjuntos de datos).

En la llamada a HCopy indicamos con los parámetros comunes (que

fueron explicados en el capítulo anterior) que deseamos que se imprima

por línea de comandos los argumentos que se le pasan (-A), las

variables de configuración que se están utilizando (-D) y la versión de la

herramienta (-V).

Mediante la opción –C indicamos a HCopy el archivo de configuración

que debe emplear, CONFIG_FILE_HCOPY. En el caso de nuestro ejemplo

éste es en concreto config_hcopy_SES_mfcc_ (véase contenido de este

fichero de configuración en Anexo 2).

A continuación incluímos la opción -n 1 -1. En HCopy, -n i [j] extrae el

segmento de voz correspondiente a la etiqueta i-ésima en el fichero

fuente. Si se especifica j, se extrae el segmento correspondiente a la

secuencia de etiquetas de la i a la j. Las etiquetas se numeran según su

posición en el archivo de etiquetas. Para empezar a contar desde el final

del fichero se puede emplear como índice un número negativo. Por

tanto, -n 1 -1 indica que el segmento a considerar empieza en la primera

etiqueta y termina en la última, es decir, se considerarán todas las

etiquetas del fichero.

Page 122: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 108

La opción –L indica a HCopy el directorio donde tiene que buscar los

ficheros de etiquetas, LABELS_IN_DIR. Si no pusiéramos nada buscaría

por defecto en el directorio actual, que al ser la carpeta scripts no

obtendríamos nada. En el ejemplo esta carpeta de etiquetas es

\segmentation\parrafosDivididos_Completos\ ya que estamos

considerando la base de datos SES.

–i indica el archivo maestro de etiquetas donde se escribirán las

etiquetas de salida, LABEL_OUT_FILE_TRAIN (en este ejemplo su

nombre será SES_extracted_train.mlf). La opción –l indica el directorio

para las etiquetas de salida. Si no se indica nada se emplea por defecto

el directorio actual, pero como la salida se dirige a un fichero MLF esta

opción se emplea para añadir una ruta al nombre de cada fichero

incluído en el MLF. En nuestro caso la opción -l * hará que un fichero

de etiquetas llamado F_A_0103.lab aparezca con el asterisco como

prefijo, apareciendo en el fichero MLF como */F_A_0103.lab. De esta

manera conseguimos generar un MLF independiente de la ubicación de

los archivos de datos correspondientes.

Por último con –S indicamos el fichero de script (SCP_FILE_TRAIN) que

utilizará HCopy para relacionar los ficheros de sonido original que

deberá parametrizar, con las ubicaciones donde dejará los ficheros

parametrizados.

Para el ejemplo esta llamada habrá quedado de la siguiente forma:

c:\usuarios_jcarmona\HMMs-CEU\HTK\bin.win32\HCopy.exe -A -D -V -C

c:\usuarios_jcarmona\segmentation\segmenter\lib\config_hcopy_SES_mfcc_ -n 1 -1 -L

c:\usuarios_jcarmona\segmentation\parrafosDivididos_Completos -l * -i

Page 123: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 109

c:\usuarios_jcarmona\segmentation\segmenter\labels\SES_extracted_train.mlf -S

c:\usuarios_jcarmona\segmentation\segmenter\lists\lab_htk_SES_train.scp

y dará lugar a que HCopy coja de la carpeta

parrafosDivididos_Completos los ficheros incluídos en

lab_htk_SES_train.scp y los parametrice de acuerdo al archivo de

configuración, dejando los ficheros de salida en la carpeta mfcc_par que

le indica también lab_htk_SES_train.scp, así como todas las etiquetas

escritas en el archivo maestro de etiquetas SES_extracted_train.mlf.

El proceso es similar para los conjuntos de TEST, TEST2 y TRAINTEST.

A partir de ahora podemos dejar a un lado los ficheros de audio

originales, y trabajar tan sólo con los ficheros parametrizados en

formato HTK, que son los que entenderán el resto de herramientas HTK

que utilizaremos en las etapas subsiguientes, de las cuales la más

inmediata es el entrenamiento.

5.2.5 Train_monophones.bat

Este script lleva a cabo el proceso de entrenamiento mediante las

herramientas HCompV y HERest. Pero hay bastantes cosas que el script

tiene que hacer antes para poder llevar a cabo el entrenamiento.

La primera de ellas es crear una lista de fonemas. Para ello coge el

archivo maestro de etiquetas y le pasa el programa en perl mlf2fon.per

(véase explicación en el apartado 5.4.3), que lo que hace es recorrer el

Page 124: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 110

archivo línea por línea e ir copiando en el fichero fonemas.dep todos los

fonemas que se va encontrando:

perl %LABELS_DIR%\mlf2fon.per <%LABEL_OUT_FILE_TRAINTEST%

>%LABELS_DIR%\fonemas.dep

Con el programa cuentalineas.per (véase 5.4.5), que tan sólo cuenta las

líneas existentes en un fichero dado, anotamos en el fichero

fonemas_totales.dep el número total de líneas (y por tanto de fonemas) a

modo de estadística; guardamos también este fichero en la carpeta de

resultados, ya que nos hará falta cuando cuantifiquemos la finura de

los resultados obtenidos por un experimento.

perl %LABELS_DIR%\cuentalineas.per <%LABELS_DIR%\fonemas.dep

>%LABELS_DIR%\fonemas_totales.dep

perl %LABELS_DIR%\cuentalineas.per <%LABELS_DIR%\fonemas.dep

>%RESULTS_DIR%\fonemas_totales.dep

Mediante el programa sort ordenamos el contenido del fichero

fonemas.dep por orden alfabético y lo escribimos en el fichero

fonemas.ord:

sort <%LABELS_DIR%\fonemas.dep >%LABELS_DIR%\fonemas.ord

Con el comando uniq eliminaremos de la lista ordenada todos los

fonemas repetidos, con lo que nos habremos quedado ya con la lista

definitiva de fonemas.

uniq <%LABELS_DIR%\fonemas.ord >%PHONEME_LIST%

Ahora repetimos todos los pasos pero obteniendo una lista adaptada

para ser utilizada como string por un programa en C:

perl %LABELS_DIR%\mlf2c.per <%LABEL_OUT_FILE_TRAINTEST% | rpsort /A |

uniq >%LABELS_DIR%\fonemas.c

Page 125: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 111

TYPE %LABELS_DIR%\fonemas.c

La diferencia entre fonemas.c y la lista de fonemas creada

anteriormente es que en fonemas.c los fonemas van todos entre comillas

dobles y las líneas terminan con comas (para esto se emplea el

programa mlf2c.per, en lugar de mlf2fon.per; su código se encuentra en

el apartado 5.4.4).

A continuación, lo primero que se hace es la fase de normalización

cepstral, si el experimento ha sido definido para que se realice:

::Entramos en la fase de normalizacion Cepstral

cd ..\training

::Generamos los ficheros para CMN (~~GLOBAL~~)

if %TIPO%==%TIPO_BASE%_cmn_cvn (

"%HTK_DIR%\HCompV.exe" -A -D -C %CONFIG_FILE_CMN% -c ..\cmn -q m -k

"*%%%%%%%%%%%%%%%%%%%%%%%%."%TIPO_BASE% -S %LIST_FILE_TRAIN% >

..\cmn\HCompv.cmn.log

)

if %TIPO%==%TIPO_BASE%_cmn_cvn (

"%HTK_DIR%\HCompV.exe" -A -D -C %CONFIG_FILE_CMN% -c ..\cmn -q m -k

"*%%%%%%%%%%%%%%%%%%%%%%%%."%TIPO_BASE% -S %LIST_FILE_TEST% >

..\cmn\HCompv.TEST.cmn.log

)

::Generamos los ficheros para CVN~(~~GLOBAL~~)

if %TIPO%==%TIPO_BASE%_cmn_cvn (

"%HTK_DIR%\HCompV.exe" -A -D -C %CONFIG_FILE_CVN% -c ..\cvn -q nmv -k

"*%%%%%%%%%%%%%%%%%%%%%%%%."%TIPO_BASE% -S %LIST_FILE_TRAIN% >

..\cvn\HCompv.cvn.log

)

if %TIPO%==%TIPO_BASE%_cmn_cvn (

Page 126: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 112

"%HTK_DIR%\HCompV.exe" -A -D -C %CONFIG_FILE_CVN% -c ..\cvn -q nmv -k

"*%%%%%%%%%%%%%%%%%%%%%%%%."%TIPO_BASE% -S %LIST_FILE_TEST% >

..\cvn\HCompv.TEST.cvn.log

)

Como se observa se llama dos veces a HCompV si se ha parametrizado

el experimento para que se realice normalización cepstral de la media y

de la varianza. El proceso de normalización en sí se explicó en el

capítulo anterior por lo que sólo veremos aquí el funcionamiento de la

llamada a HCompV.

Con la opción –C pasamos a HCompV el fichero de configuración

CONFIG_FILE_CMN ó CONFIG_FILE_CVN respectivamente.

La opción –c habilita el cálculo de estimaciones basadas en clusters de

las medias o varianzas, e indica el directorio donde deben almacenarse,

bien sea ..\cmn o bien ..\cvn.

Para la estimación de la media/varianza se pueden obtener diferentes

tipos de salidas, dependiendo de la combinación de valores nmv que se

le pueda dar a la opción –q. Así, n hace que se escriba en el fichero de

salida el número de frames en un clúster; m y v hacen que se incluyan

en el fichero de salida los vectores de media y varianza,

respectivamente.

La opción –k indica una máscara para la estimación basada en clústers

de las medias o varianzas. El nombre de cada archivo de sonido se

compara con la máscara y los caracteres que vayan en el lugar de un

Page 127: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 113

símbolo % se usarán como nombre del clúster. Se estimará un vector de

media/varianza por cada clúster.

La opción –S indica el fichero de lista, LIST_FILE_TRAIN o

LIST_FILE_TEST, para indicarle a HCompv cuáles deben ser los ficheros

parametrizados que utilice.

Por último indicamos en la instrucción que se guarden las salidas por

pantalla en un fichero de log, para poder seguir aparte la marcha de la

normalización.

A continuación el script train_monophones.bat continúa con las

funciones que son comunes a todos los experimentos, incluyan

normalización o no. En primer lugar se inicializa el fichero de prototipos

para el experimento a partir del que se creó en el script setBD.bat, que

era una especie de plantilla vacía para los ficheros de prototipos. La

llamada a HCompV es la siguiente:

:: genera el fichero de prototipos en el directorio %HMM_DIR%1m0 a partir del

generado en %LIB_DIR%

:: genera el fichero vfloors

"%HTK_DIR%\HCompV.exe" -C %CONFIG_FILE_HCOMPV% -f 1.0 -m -S

%LIST_FILE_TRAIN% -M %HMM_DIR%1m0 %LIB_DIR%\%Fichero_Proto%

A pesar de que se emplea la misma herramienta, al ser distintas las

opciones que se le pasan en la instrucción, el comportamiento de

HCompV será ahora diferente al que presentaba durante la

normalización cepstral. HCompV calculará la media y la varianza

globales del conjunto de datos contenido en los ficheros que se indican

en la lista de archivos de entrenamiento, lista que se le pasa con la

Page 128: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 114

opción –S, LIST_FILE_TRAIN, y utilizará dichos cálculos para que todas

las gaussianas del modelo concreto HMM tengan la misma media y la

misma varianza. El fichero inicial de prototipos, Fichero_Proto, contenía

todas las medias a 0 y todas las varianzas a 1; HCompV creará una

nueva versión del fichero de prototipos en la carpeta especificada por la

opción –M, %HMM_DIR%1m0, donde las medias cero y las varianzas

unitarias habrán sido sustituídas por la media y varianza globales. Esta

manera de inicializar los modelos es lo que se conoce como un esquema

de flat start.

En el fichero de configuración que se le pasa a HCompV con la opción –

C, CONFIG_FILE_HCOMPV (véase Anexo 2), el parámetro TARGETKIND

debe ser coherente con el que se haya definido en el prototipo. Es decir,

si el fichero de prototipos del modelo es del tipo MFCC_0_D_A, HCompV

deberá calcular las medias y las varianzas teniendo en cuenta también

los coeficientes delta y los acelerados que son añadidos a los estáticos.

Es por esta necesidad de que exista coherencia entre la definición del

modelo y la configuración de HCompV por lo que en setBD.bat, como

comentamos en su apartado correspondiente, se reescriben el fichero de

prototipos y el fichero de configuración para que el valor del parámetro

TARGETKIND sea igual, el que se haya definido para el experimento en

cuestión.

Hemos utilizado otras dos opciones al invocar a HCompV. –f hace que

durante el proceso se cree un fichero de suelos de varianzas llamado

vFloors. Éste será un vector con tantos elementos como el vector de

varianzas globales y cuyo valor será tantas veces el de éste último como

se indique a continuación de –f; en nuestro caso es 1, por lo que vFloors

Page 129: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 115

será igual al vector de varianzas globales. Este vector se empleará, como

su propio nombre indica, para establecer un mínimo a las varianzas

calculadas en los siguientes pasos.

Por su parte la opción –m hace que se calculen las medias así como las

varianzas.

A partir del fichero vFloors obtenido tras invocar a HCompV como

acabamos de ver, y haciendo uso del programa macro.exe (véase Anexo

1), construímos un fichero de macros necesario para el entrenamiento

posterior de HMMs:

:: genera el fichero de macros a partir de vfloors generado por HCOMPV

%BIN_DIR_TRAIN%\macro.exe %NUM_COEF% %PAR_TYPE%

%HMM_DIR%1m0\vFloors %HMM_DIR%1m0\macros

A este programa se le pasa el número de coeficientes o tamaño del

vector, el tipo de parametrización, el archivo vFloors como fichero de

entrada, y la ubicación y nombre del archivo de salida, macros.

Como ejemplo, el fichero vFloors será de la forma:

~v varFloor1

<Variance> 39

5.518626e+001 4.687965e+001 7.382014e+001…

Mientras que macros contendrá:

~o

<STREAMINFO> 1 39

<VECSIZE> 39

<NULLD>

<mfcc_0_D_A>

Page 130: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 116

~v varFloor1

<Variance> 39

5.518626e+001 4.687965e+001 7.382014e+001…

Dado el nuevo modelo prototipo que se crea en la carpeta definida por –

M, se debe crear también un archivo macro maestro (MMF, Master

Macro File) llamado models que contenga una copia de cada uno de los

HMMs requeridos. Su estructura es similar a la de los archivos

maestros de etiquetas MLF y trata de la misma manera de evitar tener

una gran cantidad de archivos de definición de HMMs individuales.

Mediante el uso del programa copiaModelos.exe (véase Anexo 1) se crea

el fichero de modelos models (que se construye copiando el prototipo y

reetiquetándolo para cada uno de los alófonos), el modelo de lenguaje y

el diccionario de test:

:: genera el fichero models en el directorio %HMM_DIR%1m0

:: genera el modelo de lenguaje y el diccionario de test en %LIB_DIR%

%BIN_DIR_TRAIN%\copiaModelos.exe %HMM_DIR%1m0\%Fichero_Proto%

%HMM_DIR%1m0\models %LIB_DIR%\phon_network_%BD%.syn

%LIB_DIR%\monophones_%BD%.dct %IDENTIF%

Tras la ejecución de la sentencia obtendríamos además del fichero de

modelos, un fichero de modelo de lenguaje, que en el caso de

phon_network_SES.syn sería:

$phon = \'a | \'a~ | \'e | \'e~ | \'i | \'i~ | \'o | \'o~ | \'u | B1 | CH | COMA |

D1 | DOS_PUNTOS | G1 | J | J\/ | LL | NN | N~ | PUNTO_Y_COMA | RR | R_f |

R_gru | X | a | a~ | b | d | e | e~ | f | g | i | j_c | j_d | k | l | m | n | o | o~ | p | r |

s | t | u | u~ | w_c | w_d | z;

(

< $phon >

)

Page 131: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 117

y un fichero con el diccionario de fonemas de los ficheros de

entrenamiento. En el caso de monophones_SES.dct el resultado sería:

\'a \'a

\'a~ \'a~

\'e \'e

\'e~ \'e~

\'i \'i

\'i~ \'i~

\'o \'o

\'o~ \'o~

\'u \'u

B1 B1

[…]

Una vez tenemos los archivos de inicialización macros y models en la

carpeta %HMM_DIR%1m0, comenzaremos un proceso de reestimaciones

de manera iterativa, proceso mediante el cual iremos afinando el modelo

HMM, y para el cual emplearemos la herramienta de reestimación

embebida HEREst. Realizaremos tantas reestimaciones (y por tanto,

tantas llamadas a HERest) como haya sido definido en el experimento, y

haremos esas reestimaciones para el modelo con 1, 2, 3... gaussianas

hasta llegar al número de gaussianas que haya sido definido. Como este

número puede ser variable, ya que se define individualmente para cada

experimento, en train_monophones.bat se crea otro script que repetirá el

proceso tantas veces como número de gaussianas se indiquen. De esta

manera conseguimos independizar la parte fija del proceso de

entrenamiento (en el fichero train_monophones.bat) de aquella que será

variable para cada experimento (y que se generará cada vez en el script

train_auto.bat). Este último script se genera mediante el programa en

perl autoTrain.per (que se explica en el apartado 5.4.6), al que se le

Page 132: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 118

pasan el número de gaussianas, iteraciones y estados del experimento

para que cree correctamente el script train_auto.bat, que será el

siguiente en ejecutarse:

echo on

perl autoTrain.per %NUM_GAUSSIANS% %NUM_ITERACIONES%

%NUM_ESTADOS% >train_auto.bat

call train_auto.bat

:FINAL

5.2.6 Train_auto.bat

Este script “hijo” que se genera desde el script “padre”

train_monophones.bat comienza creando en la carpeta de librerías un

fichero de tipo .hed para cada número de mezclas que se van a estimar;

su contenido será el comando que se le pasará al editor de modelos

HHEd para su correcta actualización:

MU %NUM_GAUSSIANS% {*.state[2-%NUM_STATES% -1].mix}

Por ejemplo, para la sexta mezcla gaussiana, con 5 estados, tendríamos

el fichero mix6.hed, cuyo contenido sería:

MU 6 {*.state[2-4].mix}

A continuación se crean tantos directorios de modelos hmm como

combinaciones se puedan dar entre el número de gaussianas y el

número de iteraciones, ya que estos directorios se definen como:

hmmimj

donde i es el número de gaussianas (i mezclas) y j es el número de

iteraciones. Así las instrucciones serán de este tipo:

mkdir ..\..\experiments\%BD%\monophones\hmm1m0\

Page 133: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 119

mkdir ..\..\experiments\%BD%\monophones\hmm1m1\

mkdir ..\..\experiments\%BD%\monophones\hmm1m2\

mkdir ..\..\experiments\%BD%\monophones\hmm1m3\

mkdir ..\..\experiments\%BD%\monophones\hmm1m4\

mkdir ..\..\experiments\%BD%\monophones\hmm2m0\

mkdir ..\..\experiments\%BD%\monophones\hmm10m3\

mkdir ..\..\experiments\%BD%\monophones\hmm10m4\

Ahora es cuando empieza el proceso real de reestimación. Se trata de

llamar a la herramienta HERest tantas veces como número de

iteraciones se hayan definido, y repetir el experimento para los distintos

números de mezclas deseados. Por ejemplo, si hemos definido 10

gaussianas y 4 iteraciones, comenzaríamos por realizar el experimento

para 1 mezcla y se realizarían 4 reestimaciones del modelo:

:: 2. Entrenamiento del HMM con 1 mezclas

echo "Inicialización del HMM con 1 mezclas"

"%HTK_DIR%\HERest.exe" -C %CONFIG_FILE_TRAIN% -I

%LABEL_OUT_FILE_TRAIN% -S %LIST_FILE_TRAIN% -H "%HMM_DIR%1m0\macros" -H

"%HMM_DIR%1m0\models" -M "%HMM_DIR%1m1" %PHONEME_LIST%

"%HTK_DIR%\HERest.exe" -C %CONFIG_FILE_TRAIN% -I

%LABEL_OUT_FILE_TRAIN% -S %LIST_FILE_TRAIN% -H "%HMM_DIR%1m1\macros" -H

"%HMM_DIR%1m1\models" -M "%HMM_DIR%1m2" %PHONEME_LIST%

"%HTK_DIR%\HERest.exe" -C %CONFIG_FILE_TRAIN% -I

%LABEL_OUT_FILE_TRAIN% -S %LIST_FILE_TRAIN% -H "%HMM_DIR%1m2\macros" -H

"%HMM_DIR%1m2\models" -M "%HMM_DIR%1m3" %PHONEME_LIST%

"%HTK_DIR%\HERest.exe" -C %CONFIG_FILE_TRAIN% -I

%LABEL_OUT_FILE_TRAIN% -S %LIST_FILE_TRAIN% -H "%HMM_DIR%1m3\macros" -H

"%HMM_DIR%1m3\models" -M "%HMM_DIR%1m4" %PHONEME_LIST%

echo " Entrenamiento del HMM con 1 mezclas realizado: 4 iteraciones

completadas”

Page 134: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 120

Mediante la primera instrucción se cargarán todos los modelos (los

ficheros macros y models contenidos en la carpeta hmm1m0 indicados

con la opción –H) de los fonemas indicados en la lista de fonemas

PHONEME_LIST, realizará una reestimación empleando los datos

indicados en el fichero de script que sigue a la opción –S, es decir,

LIST_FILE_TRAIN, y los nuevos modelos se guardarán en la carpeta

indicada por –M, en este caso, hmm1m1. Cada vez que se ejecuta

HERest se consigue una nueva reestimación, por lo que el proceso se

debe repetir tantas veces como iteraciones se deseen para el

experimento actual, tomando en cada reestimación como modelos de

entrada (-H) los que resultaron como salida (-M) de la iteración anterior.

De esta manera se creará un nuevo conjunto de modelos por cada

iteración, almacenados en su carpeta correspondiente, y la última de

éstas, en nuestro caso hmm1m4, contendrá el conjunto final de HMMs

reestimados tantas veces como iteraciones se hayan definido.

Una vez hemos realizado todas las iteraciones deseadas sobre los

modelos con una sóla mezcla, repetimos el proceso para 2 mezclas. Para

ello, lo primero que debemos hacer es actualizar los estados de los

modelos para que incluyan 2 mezclas. Esto lo conseguimos mediante el

editor de modelos HHEd:

:: 3. Entrenamiento del HMM con 2 mezclas

"%HTK_DIR%\HHEd.exe" -T 2 -H %HMM_DIR%1m%NUM_ITERACIONES%\macros -

H %HMM_DIR%1m%NUM_ITERACIONES%\models -M %HMM_DIR%2m0

%LIB_DIR%\mix2.hed %PHONEME_LIST%

Mediante esta instrucción HHEd cargará todos los modelos contenidos

en la última carpeta de 1 gaussiana (en nuestro caso hmm1m4)

realizará las transformaciones que le solicitamos y volverá a dejar los

Page 135: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 121

modelos en la primera carpeta de 2 gaussianas, hmm2m0. Usamos de

nuevo los indicadores -H y -M para indicar el origen y el destino,

respectivamente.

En cuanto a las transformaciones que le solicitamos, lo hacemos

mediante un fichero de comandos de edición con extensión .hed, que

como vimos antes contiene un solo comando de tipo MU, en nuestro

caso:

MU 2 {*.state[2-4].mix}

Con este comando le indicamos a HHEd que queremos incrementar el

número de mezclas de todos los estados válidos (2 a 4) de cada modelo

a 2.

Una vez tenemos en hmm2m0 los modelos con 2 gaussianas se procede

a reestimar de la misma manera que se hizo con los modelos con 1

mezcla:

echo "Inicialización del HMM con 2 mezclas"

"%HTK_DIR%\HERest.exe" -C %CONFIG_FILE_TRAIN% -I

%LABEL_OUT_FILE_TRAIN% -S %LIST_FILE_TRAIN% -H "%HMM_DIR%2m0\macros" -H

"%HMM_DIR%2m0\models" -M "%HMM_DIR%2m1" %PHONEME_LIST%

"%HTK_DIR%\HERest.exe" -C %CONFIG_FILE_TRAIN% -I

%LABEL_OUT_FILE_TRAIN% -S %LIST_FILE_TRAIN% -H "%HMM_DIR%2m1\macros" -H

"%HMM_DIR%2m1\models" -M "%HMM_DIR%2m2" %PHONEME_LIST%

"%HTK_DIR%\HERest.exe" -C %CONFIG_FILE_TRAIN% -I

%LABEL_OUT_FILE_TRAIN% -S %LIST_FILE_TRAIN% -H "%HMM_DIR%2m2\macros" -H

"%HMM_DIR%2m2\models" -M "%HMM_DIR%2m3" %PHONEME_LIST%

"%HTK_DIR%\HERest.exe" -C %CONFIG_FILE_TRAIN% -I

%LABEL_OUT_FILE_TRAIN% -S %LIST_FILE_TRAIN% -H "%HMM_DIR%2m3\macros" -H

"%HMM_DIR%2m3\models" -M "%HMM_DIR%2m4" %PHONEME_LIST%

echo " Entrenamiento del HMM con 2 mezclas realizado: 4 iteraciones

completadas”

Page 136: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 122

El script train_auto.bat repetirá el proceso para 3, 4… gaussianas, hasta

el número que se hubiera definido para el experimento en curso.

:: 4. Entrenamiento del HMM con 3 mezclas

"%HTK_DIR%\HHEd.exe" -T 2 -H %HMM_DIR%2m%NUM_ITERACIONES%\macros -

H %HMM_DIR%2m%NUM_ITERACIONES%\models -M %HMM_DIR%3m0

%LIB_DIR%\mix3.hed %PHONEME_LIST%

echo "Inicialización del HMM con 3 mezclas"

"%HTK_DIR%\HERest.exe" -C %CONFIG_FILE_TRAIN% -I

%LABEL_OUT_FILE_TRAIN% -S %LIST_FILE_TRAIN% -H "%HMM_DIR%3m0\macros" -H

"%HMM_DIR%3m0\models" -M "%HMM_DIR%3m1" %PHONEME_LIST%

"%HTK_DIR%\HERest.exe" -C %CONFIG_FILE_TRAIN% -I

%LABEL_OUT_FILE_TRAIN% -S %LIST_FILE_TRAIN% -H "%HMM_DIR%10m3\macros" -H

"%HMM_DIR%10m3\models" -M "%HMM_DIR%10m4" %PHONEME_LIST%

echo " Entrenamiento del HMM con 10 mezclas realizado: 4 iteraciones

completadas”

5.2.7 Reco_monophones.bat

En el script reco_monophones.bat se lleva a cabo el proceso de

reconocimiento, que hará uso de las herramientas HVite y HResults.

Lo primero que se hace es establecer los flags (serán explicados cuando

se utilicen en la ejecución de HVite):

rem # Opciones de reconocimiento

set flags=-p 0.0 -s 0.0

A continuación se establece el nombre con el que comenzarán todos los

ficheros que se creen durante el proceso de reconocimiento, con la

variable BASE_RECO_FILE:

Page 137: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 123

rem # Ficheros de segmentación

set BASE_RECO_FILE=reco_mono

Ahora se genera la red de palabras mediante el uso de la herramienta

HParse. Ésta genera un archivo de red de palabras (en nuestro caso

fonemas) a partir de un fichero de texto que describe la sintaxis a

emplear por medio de un conjunto de reglas de traducción. La

instrucción es la siguiente:

rem # Generación de la red

"%HTK_DIR%\Hparse" %FICH_SYN% %NET%

En el caso de nuestro ejemplo, el fichero que contiene la sintaxis sería

phon_network_SES.syn, y el resultado de la ejecución de HParse, es

decir, la red generada, estaría en el fichero phon_network_SES.nwk

Por último este script llama a un script dependiente, reco_gauss.bat,

que deberá ejecutarse una vez por cada una de las gaussianas que se

han definido, para lo cual se procede con el siguiente bucle:

for /L %%i in (1,1,%NUM_GAUSSIANS%) do call reco_gauss.bat %%i

5.2.8 Reco_gauss.bat

Una vez se han definido los flags, la base para el nombre de los ficheros

de reconocimiento y se ha generado la red de fonemas, se puede

proceder a las tareas que son necesarias para realizar el reconocimiento

y la evaluación del mismo, y que se deben ejecutar para cada número

de gaussianas definido. Estas tareas son en concreto, dos ejecuciones

de HVite y otras dos de HResults.

Page 138: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 124

Para empezar, indicamos el nombre que queremos que reciban los

ficheros maestros de etiquetas (.MLF) que se generarán como resultado

del proceso de reconocimiento y los ficheros de resultados (.RES) que

generará la llamada a HResults, así como el directorio donde están

almacenados los modelos:

set RECO_FILE=%BASE_RECO_FILE%_%1%m.mlf

set RESULTS_FILE=%BASE_RECO_FILE%_%1%m.res

set RECO_FILE2=%BASE_RECO_FILE%_%1%m__2.mlf

set RESULTS_FILE2=%BASE_RECO_FILE%_%1%m__2.res

set DIR_GAUSS=%HMM_DIR%%1%

En el caso de nuestro ejemplo, para la primera gaussiana, estas

instrucciones quedarían en:

set RECO_FILE=reco_mono_1m.mlf

set RESULTS_FILE=reco_mono_1m.res

set RECO_FILE2=reco_mono_1m__2.mlf

set RESULTS_FILE2=reco_mono_1m__2.res

set DIR_GAUSS=

c:\usuarios_jcarmona\segmentation\experiments\SES\monophones\hmm1

Vendría ahora la ejecución del HVite con la que realizamos el

reconocimiento en sí:

"%HTK_DIR%\HVite" -A -D -C %CONFIG_FILE_TRAIN% -w %NET% -H

%DIR_GAUSS%m%NUM_ITERACIONES%\macros -H

%DIR_GAUSS%m%NUM_ITERACIONES%\models -S %LIST_FILE_TEST% -l * -y rec -i

%RESULTS_DIR%\%RECO_FILE% %flags% %DICT% %PHONEME_LIST%

HVite es un reconocedor de palabras de propósito general que emplea el

algoritmo de Viterbi y que hace casar el archivo que se quiere reconocer

con una red de modelos HMM y genera una transcripción para dicho

fichero de entrada. En la instrucción anterior:

Page 139: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 125

definimos con –S el script que contiene los ficheros de test que

queremos que sean reconocidos,

con –w indicamos la red de palabras con la que deberá realizarse

el reconocimiento y que obtuvimos con la ejecución de HParse,

con –H indicamos dónde se encuentran los ficheros de modelos y

macros correspondientes a los modelos HMM en cuestión,

con –i %RESULTS_DIR%\%RECO_FILE% indicamos que las

transcripciones de salida deben dirigirse al fichero MLF

RECO_FILE,

-l sirve para especificar el directorio donde se guardarán los

ficheros de etiquetas generados. Como la salida se dirige a un

fichero MLF, esta opción se utiliza para añadir una ruta al

nombre de cada fichero de salida. Al indicar –l * hacemos que al

nombre de un archivo de etiquetas llamado xxx se le añada un

prefijo según el patrón “*/xxx” en el fichero MLF se salida.

Hacemos esto así para que los MLF generados sean

independientes de la ruta en la que se encuentren los ficheros de

datos correspondientes,

con –y rec indicamos que los ficheros de etiquetas generados

deberán llevar la extensión .rec,

y el resto de opciones son las que ya utilizamos en otras

herramientas: -C para indicar el fichero de configuración, -A para

Page 140: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 126

que se impriman los argumentos de la línea de comandos actual,

y –D para que se muestren los ajustes de configuración.

Una vez se ha producido el reconocimiento con HVite y que se han

generado los ficheros de etiquetas resultado de dicho reconocimiento,

ejecutamos HResults:

"%HTK_DIR%\HResults" -I %LABEL_OUT_FILE_TEST% %PHONEME_LIST%

%RESULTS_DIR%\%RECO_FILE% > %RESULTS_DIR%\%RESULTS_FILE%

HResults es la herramienta de análisis del rendimiento de HTK. Se le

pasa el archivo que se generó durante el reconocimiento RECO_FILE, la

lista de fonemas, y con –I cargamos los ficheros de etiquetas de

referencia para la evaluación del reconocimiento. La salida de los

resultados, en vez de que salga por pantalla, se redirige a un fichero de

resultados con el nombre que definimos al principio del script.

La ejecución de HVite y HResults se ha realizado para el conjunto de

ficheros de prueba LIST_FILE_TEST. Teniendo en cuenta que

trabajamos con dos conjuntos de prueba, para terminar el script se

repiten estas dos ejecuciones ahora para LIST_FILE_TEST2:

"%HTK_DIR%\HVite" -A -D -C %CONFIG_FILE_TRAIN% -w %NET% -H

%DIR_GAUSS%m%NUM_ITERACIONES%\macros -H

%DIR_GAUSS%m%NUM_ITERACIONES%\models -S %LIST_FILE_TEST2% -l * -y rec -i

%RESULTS_DIR%\%RECO_FILE2% %flags% %DICT% %PHONEME_LIST%

"%HTK_DIR%\HResults" -I %LABEL_OUT_FILE_TEST2% %PHONEME_LIST%

%RESULTS_DIR%\%RECO_FILE2% > %RESULTS_DIR%\%RESULTS_FILE2%

"%HTK_DIR%\HResults" -I %LABEL_OUT_FILE_TEST2% %PHONEME_LIST%

%RESULTS_DIR%\%RECO_FILE2% > %RESULTS_DIR%\%RESULTS_FILE2%

Page 141: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 127

5.2.9 Segm_monophones.bat

Este script se encarga del proceso de segmentación. Dado que éste se

realiza de forma similar al de reconocimiento, tanto segm_monophones

.bat como segm_gauss.bat seguirán la misma estructura que

reco_monophones.bat y reco_gauss.bat, respectivamente.

En el caso de segm_monophones.bat, tan sólo cambia con respecto a

reco_monophones.bat el nombre que le damos a los ficheros que

contendrán el resultado de la segmentación, y que en el caso de la

segmentación no necesitamos volver a crear el fichero de red de

palabras; el resto del script es idéntico:

rem # Opciones para la segmentación

set flags=-p 0.0 -s 0.0

rem # Ficheros de segmentación

set BASE_SEGM_FILE=segm_mono

for /L %%i in (1,1,%NUM_GAUSSIANS%) do call segm_gauss.bat %%i

5.2.10 Segm_gauss.bat

Como acabamos de comentar este script es muy similar a

reco_gauss.bat. Para empezar, indicamos el nombre que queremos que

reciban los ficheros maestros de etiquetas (.MLF) que se generarán

como resultado del proceso de segmentación, así como el directorio

donde están almacenados los modelos:

set SEGM_FILE=%BASE_SEGM_FILE%_%1%m.mlf

Page 142: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 128

set SEGM_FILE2=%BASE_SEGM_FILE%_%1%m__2.mlf

set DIR_GAUSS=%HMM_DIR%%1%

En el caso de nuestro ejemplo estas instrucciones quedarían en:

set SEGM_FILE=segm_mono_1m.mlf

set SEGM_FILE2=segm_mono_1m__2.mlf

set DIR_GAUSS=

c:\usuarios_jcarmona\segmentation\experiments\SES\monophones\hmm1

La ejecución de la segmentación se realiza también mediante una

llamada a HVite:

"%HTK_DIR%\HVite" -A -D -C %CONFIG_FILE_TRAIN% -a -m -o SW -I

%LABEL_OUT_FILE_TEST% -H %DIR_GAUSS%m%NUM_ITERACIONES%\macros -H

%DIR_GAUSS%m%NUM_ITERACIONES%\models -S %LIST_FILE_TEST% -l * -y rec -i

%RESULTS_DIR%\%SEGM_FILE% %flags% %DICT% %PHONEME_LIST%

Puede observarse que esta instrucción es muy similar a la que se daba

en el caso del reconocimiento, pero presenta un par de diferencias; son

precisamente estos matices los que contienen la información necesaria

para que se realice la segmentación:

con –a indicamos que se debe realizar el alineamiento. HVite

cargará un fichero de etiquetas y creará una red de alineamiento

para cada fichero de test.

Con –m indicamos que durante el reconocimiento se guarden las

fronteras entre los modelos, es decir, el inicio y fin de cada

fonema. El fichero de etiquetas de salida contendrá múltiples

niveles. El primero será el número del modelo y el segundo el

nombre de la palabra (fonema en nuestro caso).

Page 143: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 129

Con –o indicamos cómo queremos darle formato a las etiquetas de

salida. A continuación de –o se incluye una cadena de letras

donde cada una será una opción de formato. En concreto usamos

SW. Con S hacemos que no se escriba en las etiquetas de salida

las puntuaciones acústica y de modelo, parámetros que no nos

interesan; con W hacemos que no se escriban las palabras

resultantes (en nuestro caso no tendría sentido, al estar

trabajando a nivel de fonema).

En lugar de pasarle a HVite una red de palabras con –w cargamos

con –I el fichero maestro de etiquetas LABEL_OUT_FILE_TEST.

Obviamente, se cambia %RECO_FILE% por %SEGM_FILE%.

Tras esta llamada a HVite tendremos en el directorio de resultados unos

ficheros de etiquetas de salida en los que en cada línea se indica el

inicio y fin del fonema y el nombre de dicho fonema. A diferencia del

resultado del reconocimiento, aquí lo que interesa no es el nombre del

fonema reconocido, que será siempre correcto puesto que para

segmentar le hemos pasado a HVite las trascripciones de los ficheros.

Lo que nos interesa será esos datos de principio y fin de fonema, que

constituyen la segmentación en sí misma de los ficheros de sonido. Por

ejemplo, el fichero segm_mono_1m.mlf tendrá un contenido como el

siguiente:

#!MLF!#

"*/F_A_0103.rec"

0 1100000 n

1100000 2000000 "'o"

Page 144: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 130

2000000 2800000 k

2800000 3400000 "'e"

3400000 3800000 D1

3800000 4400000 a

...

Esto quiere decir que la segmentación del fichero de audio F_A_0103 da

como resultado que el fonema n se encuentra entre el segundo 0 y el

0.11 (la unidad temporal en HTK son 100ns, 1100000*100ns=0.11s), el

fonema 'o entre los segundos 0.11 y 0.2, y así sucesivamente.

A continuación se realiza la llamada a HResults, que también es similar

a la que realizamos en reco_gauss.bat, pero cambiando RECO_FILE por

SEGM_FILE. En este caso no guardamos el resultado, puesto que la

evaluación del rendimiento del reconocimiento debe dar siempre 100%

como comentamos antes; dejamos esta instrucción a efectos de poder

realizar esa comprobación, pero la evaluación de la segmentación la

realizaremos en el script siguiente.

"%HTK_DIR%\HResults" -I %LABEL_OUT_FILE_TEST% %PHONEME_LIST%

%RESULTS_DIR%\%SEGM_FILE%

Para terminar el script, y del mismo modo que se hacía en

reco_monophones.bat, se repiten las llamadas a HVite y HResults para el

conjunto de ficheros de prueba LIST_FILE_TEST2:

"%HTK_DIR%\HVite" -A -D -C %CONFIG_FILE_TRAIN% -a -m -o SW -I

%LABEL_OUT_FILE_TEST2% -H %DIR_GAUSS%m%NUM_ITERACIONES%\macros -H

%DIR_GAUSS%m%NUM_ITERACIONES%\models -S %LIST_FILE_TEST2% -l * -y rec -i

%RESULTS_DIR%\%SEGM_FILE2% %flags% %DICT% %PHONEME_LIST%

"%HTK_DIR%\HResults" -I %LABEL_OUT_FILE_TEST2% %PHONEME_LIST%

%RESULTS_DIR%\%SEGM_FILE2%

Page 145: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 131

5.2.11 Eval_monophones.bat

Entramos con este script en la última fase del proceso, la evaluación de

la segmentación. En esta fase repetiremos las mismas tareas para cada

gaussiana hasta el número que se haya definido en el experimento, por

lo que dichas tareas las implementamos en el script dependiente

reco_gauss.bat, que deberá ejecutarse una vez por cada una de las

gaussianas:

for /L %%i in (1,1,%NUM_GAUSSIANS%) do call eval_gauss.bat %%i

5.2.12 Eval_gauss.bat

En primer lugar definimos el nombre del archivo de etiquetas que

obtuvimos como salida de la ejecución de HVite con la que realizamos la

segmentación, LABEL_DEC_FILE; y los nombres de dos nuevos ficheros

que se crearán a continuación, uno de estadísticas (STATS_FILE) y otro

con el resultado de la evaluación (RESULTS_FILE):

set LABEL_DEC_FILE=%RESULTS_DIR%\segm_mono_%1%m.mlf

set STATS_FILE=%RESULTS_DIR%\segm_mono_%1%m.sta

set RESULTS_FILE=%RESULTS_DIR%\segm_mono_%1%m.res

Y hacemos las mismas definiciones para el segundo grupo de

evaluación:

set LABEL_DEC_FILE2=%RESULTS_DIR%\segm_mono_%1%m__2.mlf

set STATS_FILE2=%RESULTS_DIR%\segm_mono_%1%m__2.sta

set RESULTS_FILE2=%RESULTS_DIR%\segm_mono_%1%m__2.res

La evaluación de la segmentación la realizamos con el programa

score_mono.exe (cuyo código se encuentra en el Anexo 1):

Page 146: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 132

%BIN_DIR_EVAL%\score_mono.exe %PHONEME_LIST%

%LABEL_OUT_FILE_TEST% %LABEL_DEC_FILE% %STATS_FILE% > %RESULTS_FILE%

%BIN_DIR_EVAL%\score_mono.exe %PHONEME_LIST%

%LABEL_OUT_FILE_TEST2% %LABEL_DEC_FILE2% %STATS_FILE2% >

%RESULTS_FILE2%

Al programa score_mono.exe le pasamos la lista de fonemas, el archivo

maestro de etiquetas de los ficheros de evaluación (que incluyen los

datos de segmentación manual previa), y el archivo de resultados del

proceso de segmentación (que incluye los datos de segmentación

calculado por HVite). Este programa compara los datos de segmentación

para cada uno de los fonemas entre ambas fuentes (la segmentación

manual y la segmentación resultado del proceso de nuestro sistema),

calcula las desviaciones de la segmentación de cada fonema y hace un

recuento de errores para 5 tolerancias diferentes (5, 10, 15, 20 y 25

ms). El programa genera (además de un fichero de estadísticas con

datos intermedios) una salida que dirigimos al fichero de resultados

para tener almacenados los datos calculados de la evaluación. Por

ejemplo, el fichero segm_mono_3m.res podrá contener líneas como las

siguientes:

Alphabet c:\usuarios_jcarmona\segmentation\segmenter\lib\phonemes_SES.lis

contains 51 phonemes

The number of reference label files is 151

The number of decoded label files is 151

Segmentation results

Instances for transition "'a"-B1 = 32

Total errors: Perc = 46.875000

Right errors: Perc = 46.666667 Average = 11.022301 ms

Page 147: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 133

Left errors: Perc = 53.333333 Average = -11.382837 ms

Instances for transition "'a"-D1 = 28

Total errors: Perc = 64.285714

Right errors: Perc = 88.888889 Average = 11.087868 ms

Left errors: Perc = 11.111111 Average = -5.812550 ms

...

Total errors for tol 5.000000 ms = 63.468951

Como se observa, como resultado de la evaluación de la segmentación

tendremos el porcentaje de errores por la izquierda, por la derecha y

total, y la desviación media para cada una de las transiciones entre

fonemas. Finalmente tendremos 5 líneas de resumen como la última

expuesta, que contienen porcentaje de error total para las cinco

tolerancias comentadas. Será ese porcentaje de error el que

utilizaremos para determinar el grado de éxito que tienen los diferentes

experimentos que realizaremos con nuestro segmentador fonético

automático.

Llegados a este punto termina el flujo completo de ejecución del sistema

que habíamos comenzado con el script full.bat.

5.3 SCRIPTS AUXILIARES

En el apartado anterior hemos descrito los scripts fundamentales en

que se basa el segmentador fonético automático siguiendo el orden que

ocupa cada uno en el proceso, y hemos mencionado el uso de algunos

scripts que no son fundamentales en dicho proceso pero que han sido

Page 148: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 134

desarrollados para simplificar o automatizar ciertas tareas que debían

realizarse a lo largo del proceso. Una vez estudiados los scripts

fundamentales del proceso dejamos indicado en este apartado el código

de dichos scripts auxiliares.

5.3.1 Limpia.bat

Como comentábamos al describir full.bat (apartado 5.2.1), este script

tan sólo limpia el contenido de ciertos directorios que se van generando

a lo largo del proceso, en concreto los ficheros de parametrización

generados por HCopy, el contenido de los directorios temporales usados

en la normalización cepstral y las listas .dep y .dp de patrones de tipo

de grabación-emoción con las que se indica al sistema que se va a

trabajar. Todo esto lo hace el programa con las siguientes líneas:

SETLOCAL

del ..\..\mfcc_par\ses\*.mfc

del ..\..\mfcc_par\ses\*.plp

del ..\..\mfcc_par\sev\*.mfc

del ..\..\mfcc_par\sev\*.plp

del ..\cmn\*.

del ..\cvn\*.

del ..\lists\*.dep

del ..\lists\*.dp

ENDLOCAL

5.3.2 Mi_type.bat

Como vimos al hablar del acondicionamiento de los ficheros de listas en

setBD.bat, este programa tan sólo escribe lo que se le pasa como primer

Page 149: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 135

argumento en el fichero que le indiquemos como segundo argumento.

Esto se realiza con el siguiente código:

rem echo par1: %1

rem echo par2: %2

type %1 >> %2

5.3.3 Summary.bat

Como vimos al hablar de la evaluación de la segmentación

(eval_gauss.bat), en los ficheros de resultados de la evaluación tenemos,

entre otros muchos datos, el porcentaje de error global para cinco

niveles de tolerancia diferentes. De todo el fichero ése será el dato que

nos interese cuando ejecutemos un experimento determinado, por lo

que resulta de utilidad tener una manera rápida de extraer ese dato de

los ficheros de resultados y recogerlos de manera resumida en otro

fichero, que llamaremos summary.dep. En este sencillo script definimos

el umbral de tolerancia que nos interesa (variable

ERROR_THRESHOLD), y el programa irá entrando en cada directorio de

resultados y en cada fichero de resultados, y anotará en summary.dep

el porcentaje de error que ha obtenido para cada número de

gaussianas, además de otros datos como la fecha y hora, y el número

de fonemas totales del experimento. El código con el que se realiza esto

es el siguiente:

rem @echo off

set ERROR_THRESHOLD=20

set STRING_BUSCA="Total errors for tol %ERROR_THRESHOLD%.000000"

set FICH_DEP=SUMMARY.dep

dir /b *. >frases.dir

Page 150: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 136

for /F %%i in (frases.dir) do (

cd %%i

echo -----------%date% %time%----------- >> SUMMARY.dep

echo -----------%date% %time%----------- >> ..\SUMMARY.dep

echo %%i >> SUMMARY.dep

echo %%i >> ..\SUMMARY.dep

type fonemas_totales.dep >> SUMMARY.dep

type fonemas_totales.dep >> ..\SUMMARY.dep

echo fonemas >> SUMMARY.dep

echo fonemas >> ..\SUMMARY.dep

find %STRING_BUSCA% segm*.res >> SUMMARY.dep

find %STRING_BUSCA% segm*.res >> ..\SUMMARY.dep

cd..

)

5.4 PROGRAMAS EN PERL USADOS EN EL

SEGMENTADOR

A lo largo de los distintos scripts fundamentales del segmentador hemos

recurrido en varias ocasiones al lenguaje de programación perl (que

explicamos en el capítulo dedicado a las herramientas empleadas), para

realizar tareas de simplificación o automatización. En algunas

ocasiones lo hemos hecho mediante instrucciones sencillas de perl

integradas en los scripts, en cuyo caso ya han sido comentadas; en

otras hemos desarrollado ficheros aparte con extensión .per que

incluyen dichas tareas deseadas, y hemos incluído en los scripts

instrucciones perl para ejecutar dichos ficheros. En este apartado

haremos una breve reseña del contenido de los mismos.

Page 151: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 137

5.4.1 GenProto.per

Este programa es empleado en la fase de acondicionamiento de ficheros

(setBD.bat) para generar el prototipo de los HMM. La estructura de

dicho prototipo de modelos fue explicada en el capítulo anterior. Para

construir dicha estructura se emplea el código que se detalla a

continuación.

La llamada a genProto.per que se realiza en setBD.bat es la siguiente:

perl genProto.per %NUM_ESTADOS% %NUM_COEF% %PAR_TYPE%

>%LIB_DIR%\%Fichero_Proto%

por lo que lo primero que haremos será capturar los tres argumentos

que le pasamos al programa:

$NumStates=$ARGV[0];

$NumParam=$ARGV[1];

$TipoParam=$ARGV[2];

Se comienza escribiendo el modelo (hemos dirigido la salida estándar al

fichero de prototipo) con las cabeceras adecuadas y adaptadas a los

parámetros dados:

printf stdout "<BeginHMM>\n";

printf stdout "<NumStates> %d <VecSize> %d <%s> <nullD>

<diagC>\n",$NumStates,$NumParam,$TipoParam;

printf stdout "<StreamInfo> 1 %d\n",$NumParam;

Ahora para cada uno de los estados válidos (excluídos el inicial y el

final, que como ya se comentó no contienen información) se crea la

estructura con una sóla mezcla gaussiana de la que cuelgan dos

vectores, el de la media y el de la varianza. El vector de media se

inicializa con tantos coeficientes como se le haya indicado al programa

Page 152: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 138

con valor inicial 0, y el vector de varianza de la misma manera pero con

el valor inicial 1.

for ($i=2; $i<$NumStates; $i++)

{

printf stdout "<State> %d <NumMixes> 1\n",$i;

printf stdout "<Stream> 1\n";

printf stdout "<Mixture> 1 1.0\n";

printf stdout " <Mean> %d\n",$NumParam;

for ($j=0; $j<$NumParam; $j++)

{

printf stdout "0.0 ";

}

printf stdout "\n";

printf stdout " <Variance> %d\n",$NumParam;

for ($j=0; $j<$NumParam; $j++)

{

printf stdout "1.0 ";

}

printf stdout "\n";

}

A continuación se crea la matriz de transición de estados, que tendrá

tantas filas y columnas como estados. Por convenio la definimos de

manera que del primer estado siempre se pase al segundo (primera fila

con 1 en la segunda posición y los demás a 0), que el estado final sea no

emisor (última fila todos a 0), y que los estados intermedios, es decir,

los válidos, tengan equiprobabilidad de emitir y de saltar al siguiente

estado, sin permitir saltos a estados diferentes de ése (la fila 2 tendrá

0.5 en las posiciones 2 y 3, la fila 3 tendrá ese valor en las posiciones 3

y 4, y así sucesivamente; todas las demás posiciones estarán a 0).

printf stdout "<TransP> %d\n",$NumStates;

Page 153: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 139

if ($NumStates==1)

{

printf stdout "1.000e+0\n";

}

else

{

for ($i=0; $i<$NumStates; $i++)

{

for ($j=0; $j<$NumStates; $j++)

{

if ($i==0 && $j==1)

{

printf stdout "1.000e+0 ";

}

elsif ($i==0 || $i==$NumStates-1)

{

printf stdout "0.000e+0 ";

}

elsif ($i==$j)

{

printf stdout "5.000e-1 ";

}

elsif ($i+1==$j)

{

printf stdout "5.000e-1 ";

}

else

{

printf stdout "0.000e+0 ";

}

}

printf stdout "\n";

}

}

Page 154: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 140

Por último se cierra el modelo con la etiqueta de finalización:

printf stdout "<EndHMM>\n";

5.4.2 Blancos2retornos.per

Este sencillo programa se utiliza durante el acondicionamiento de los

ficheros de listas en setBD.bat. Lo único que hace es escribir en líneas

separadas todo lo que se le pasa como entrada entre espacio y espacio.

De esta manera conseguimos copiar un fichero sustituyendo los

espacios que contiene por retornos de carro:

while ($_=<stdin>)

{

s/[\s\t]+/\n/g;

printf stdout $_;

}

5.4.3 Mlf2fon.per

Este programa en perl se utiliza durante el entrenamiento para crear la

lista de fonemas a partir del archivo maestro de etiquetas que contiene

las relativas a todas las alocuciones que se van a utilizar en el

experimento. Este programa va cogiendo cada una de las líneas de este

MLF, elimina el retorno de carro con la función chop, ignora la etiqueta

inicial #!MLF!#, las líneas que indican el nombre de la etiqueta (que

empiezan por ") y las líneas que separan unas etiquetas de otras

(marcadas con puntos .) y todas las demás líneas las trocea con la

función split. Como cada una de las líneas de fonemas tienen tres datos

separados por espacios o tabuladores (inicio, fin, y el propio fonema)

imprime el tercer trozo de cada línea, es decir, el propio fonema, y pasa

Page 155: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 141

a la línea siguiente. De esta manera obtendremos una lista completa de

todos los fonemas en el orden en que van apareciendo en el MLF. El

código empleado es el siguiente:

while ($_=<stdin>)

{

chop;

if (/^#/)

{

}

elsif (/^\"/)

{

}

elsif (/^\./)

{

}

else

{

@c=split(/[\s\t]+/,$_);

printf stdout "%s\n",$c[2];

}

}

5.4.4 Mlf2c.per

Como hemos comentado en el apartado dedicado a

train_monophones.bat este programa en perl realiza la misma actividad

que mlf2fon.per pero haciendo que los fonemas vayan todos entre

comillas dobles y las líneas terminen con comas:

while ($_=<stdin>)

{

chop;

Page 156: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 142

if (/^#/)

{

}

elsif (/^\"/)

{

}

elsif (/^\./)

{

}

else

{

@c=split(/[\s\t]+/,$_);

$_=$c[2];

if (/\"/)

{

printf stdout "%s,\n",$c[2];

}

else

{

printf stdout "\"%s\",\n",$c[2];

}

}

}

5.4.5 Cuentalineas.per

Este sencillo programa tan sólo cuenta las líneas existentes en un

fichero dado. Como se puede ver en su código, emplea para ello un

contador que va incrementando en 1 cada vez que encuentra una línea

en la entrada, y cuando no quedan más líneas imprime dicho contador

actualizado:

$cont=0;

Page 157: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 143

while ($_=<stdin>){ #Va leyendo línea a línea y lo guarda en la variable $_

$cont++;

}

printf stdout "%d", $cont;

5.4.6 AutoTrain.per

Este programa se emplea, como hemos visto en este capítulo, para

generar el código correspondiente a la parte de la fase de entrenamiento

variable, es decir, a las tareas que dependen del número de gaussianas,

iteraciones y estados definidos en cada experimento concreto. Su

contenido ya se explicó al describir Train_auto.bat, por lo que dejamos

aquí indicado su código:

$NUM_GAUSSIANS=$ARGV[0];

$NUM_ITERATIONS=$ARGV[1];

$NUM_STATES=$ARGV[2];

for ($i=2; $i<=$NUM_GAUSSIANS; $i++)

{

printf stdout "echo MU %d {*.state[2-%d].mix}

>..\\lib\\mix%d.hed\n",$i,$NUM_STATES-1,$i;

}

for ($i=1; $i<=$NUM_GAUSSIANS; $i++)

{

for ($j=0; $j<=$NUM_ITERATIONS; $j++)

{

printf stdout "mkdir

..\\..\\experiments\\%%BD%%\\monophones\\hmm%dm%d\\\n",$i,$j;

}

}

Page 158: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

5. Implementación del segmentador: Estructura del programa y sus scripts 144

for ($i=1; $i<=$NUM_GAUSSIANS; $i++)

{

printf stdout ":: %d. Entrenamiento del HMM con %d mezclas\n",$i+1,$i;

if ($i>1)

{

printf stdout "\"%%HTK_DIR%%\\HHEd.exe\" -T 2 -H

%%HMM_DIR%%%dm%%NUM_ITERACIONES%\\macros -H

%%HMM_DIR%%%dm%%NUM_ITERACIONES%%\\models -M %%HMM_DIR%%%dm0

%%LIB_DIR%%\\mix%d.hed %%PHONEME_LIST%%\n",$i-1,$i-1,$i,$i;

}

else

{

#printf stdout "\"%%HTK_DIR%%\\HERest.exe\" -C %%CONFIG_FILE_TRAIN%% -A

-V -D -I %%LABEL_OUT_FILE_TRAIN%% -S %%LIST_FILE_TRAIN%% -H

%%HMM_DIR%%1m0\\macros -H %%HMM_DIR%%1m0\\models -M

%%HMM_DIR%%1m1 %%PHONEME_LIST%%\n";

}

printf stdout "echo \"Inicializacion del HMM con %d mezclas\"\n",$i;

for ($j=0; $j<$NUM_ITERATIONS; $j++)

{

printf stdout "\"%%HTK_DIR%%\\HERest.exe\" -C %%CONFIG_FILE_TRAIN%%

-I %%LABEL_OUT_FILE_TRAIN%% -S %%LIST_FILE_TRAIN%% -H

\"%%HMM_DIR%%%dm%d\\macros\" -H \"%%HMM_DIR%%%dm%d\\models\" -M

\"%%HMM_DIR%%%dm%d\" %%PHONEME_LIST%%\n",$i,$j,$i,$j,$i,$j+1;

}

printf stdout "echo \"Entrenamiento del HMM con %d mezclas realizado: %d

iteraciones completadas\n\n",$i,$NUM_ITERATIONS;

}

Page 159: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

6. Descripción de la base de datos SES 145

6. DESCRIPCIÓN DE LA BASE DE DATOS

SES

Como vimos en la introducción, en este proyecto trataremos de

establecer en qué condiciones el segmentador realiza mejor su función

dependiendo de la parametrización concreta que se configure, de las

distintas combinaciones de locuciones cortas (frases) y largas (párrafos)

que se utilicen para el entrenamiento y para la evaluación, así como de

las combinaciones de emociones del locutor (neutro, alegría, sorpresa,

tristeza, enfado...) que se empleen para dichas etapas del proceso. Para

todo ello realizaremos experimentos de evaluación con las bases de

datos SES y SEV de habla expresiva en castellano, que contienen una

parte segmentada manualmente. En este capítulo describiremos la

primera de ellas.

6.1 La base de datos SES

La base de datos SES (Spanish Emotional Speech) está formada por tres

sesiones de grabación de habla con emociones interpretada por un

único actor masculino. Cada sesión de grabación incluye 30 palabras (2

minutos en total), 15 frases cortas (7 minutos) y 4 párrafos (39

minutos), aunque en nuestro proyecto sólo haremos uso de las frases y

Page 160: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

6. Descripción de la base de datos SES 146

los párrafos. Estas sesiones incluyen cuatro emociones primarias

(alegría, enfado en frío, sorpresa y tristeza) y voz interpretada según el

estado neutro.

Una muy amplia descripción de esta base de datos se encuentra en

[Montero 2003]. El propósito de la creación de la base de datos SES era

poder disponer de una base de datos de voz que simulara estados

emotivos, de manera que sobre ella se pudieran realizar análisis que

ayudaran a producir síntesis de voz con emociones. Aunque la base de

datos que se pretendía grabar era necesariamente pequeña, un

requisito era que contuviera suficiente diversidad de fenómenos

fonéticos y prosódicos para permitir cubrir un buen análisis y modelado

del habla emotiva. Con el fin de minimizar el efecto que un posible

contenido semántico emotivo pudiera tener sobre el habla, se emplearon

textos preferiblemente neutros desde un punto de vista del contenido.

Se agruparon estos textos en 3 categorías (frases cortas, palabras y

párrafos) interrelacionadas entre ellas, si bien en nuestros

experimentos, como dijimos antes, sólo emplearemos frases y párrafos.

6.1.1 Las frases cortas

Como se ha dicho, se pretendía, en primer lugar, que fueran frases de

carácter neutro, es decir, que no estuvieran preferentemente marcadas

por ningún tipo de emotividad. Se evitaron, pues, verbos con un

significado emotivo, así como las funciones conativas y la segunda

persona. Mayoritariamente, las frases son en tercera persona; se

incorporaron, sin embargo, algunas frases de primera persona que, sin

embargo, son plenamente declarativas. De esta manera era de esperar

Page 161: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

6. Descripción de la base de datos SES 147

que si a los significados meramente denotativos (de contenido

semántico no emotivo) se les incorporaban otros valores expresivos (una

voz que simula segmental y suprasegmentalmente una emoción), la

identificación de la emoción transmitida habría que achacársela a los

parámetros segmentales y suprasegmentales de la voz.

Se confeccionaron quince frases entre las que aparecen todos los

fonemas del español, así como sus alófonos más representativos. El

texto completo de las mismas puede consultarse en el Anexo 3.

La longitud de las quince frases cortas oscila entre las ocho y trece

sílabas, con un mínimo de tres sílabas tónicas y un máximo de cuatro.

Las palabras finales son, como es habitual en español,

mayoritariamente paroxítonas, aunque se incluyen también dos

terminaciones oxítonas.

Aunque se incluyeron cinco estructuras de carácter interrogativo, la

base de datos se centra en las declarativas, por lo que no se consideró

incorporar el modelo entonativo de todas las posibles interrogativas del

español, y se evitó, además, el uso de los pronombres interrogativos.

6.1.2 Los párrafos

A la base de datos SES se decidió incorporar la lectura de párrafos

cortos, ya que podía aportar alguna luz a la hora de establecer

diferencias entre los distintos modelos entonativos, en especial, en las

diferentes estructuras sintácticas [Montero 2003]. De ahí que se

consideraron tres párrafos de entre cuatro y ocho líneas, de carácter

Page 162: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

6. Descripción de la base de datos SES 148

neutro y donde, como en el caso de las frases cortas, se evitó el uso de

verbos y estructuras de marcada emotividad. Además, se incorporó un

cuarto párrafo, en el que se incluían, en el marco de una breve

estructura narrativa, doce de las quince frases cortas. Esto facilitaba

información en cuanto a las diferencias que podían observarse, no sólo

en función de los diferentes modelos emocionales entonativos, sino

comparar un mismo modelo en tres contextos diferentes.

El texto completo de los párrafos también puede consultarse en el

Anexo 3.

6.2 La grabación de la base de datos

Como se describe en [Montero 2003] los textos que se acaban de

describir fueron grabados en una sala acústicamente aislada y la

frecuencia de muestreo fue de 16 Khz. Los textos fueron interpretados

en 3 ocasiones cada uno (por lo que disponemos de 3 sesiones para

cada voz, excepto para la neutra, de la que disponemos de 2 sesiones)

por un actor profesional de 38 años, con acento castellano y con más de

diez años de experiencia. La múltiple grabación posibilitó que el actor

interpretase una misma frase de distintas maneras conscientes,

empleando patrones entonativos y rítmicos diferentes. Todo ello fue

realizado por el actor sin someterse a ningún esquema o modelo

prefijado, siendo libre de decidir cómo debía simular los estados

emocionales que se le encomendaron.

Page 163: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

6. Descripción de la base de datos SES 149

6.3 Etiquetado y marcado de SES

Los dos mil fonemas por emoción fueron etiquetados fonéticamente de

manera completamente manual con la ayuda de la herramienta de

edición de voz PCV desarrollada en el proyecto VAESS [Montero 2003].

El marcado de F0 se llevó a cabo semiautomáticamente, con el

marcador de periodos de la frecuencia fundamental, empleado en

síntesis por difonemas, adaptado para procesar elocuciones más largas.

Los resultados obtenidos de esta manera fueron visualmente revisados

usando el mismo programa. Finalmente se resintetizaron las

grabaciones por medio de concatenación de difonemas, linealizando la

curva de F0 en el nivel de sílaba y cuantificando las duraciones a un

número entero de periodos de F0. Por ello fue necesario emplear un

algoritmo de concatenación con modificaciones prosódicas menores

durante la resíntesis. Esta segunda revisión por resíntesis se tradujo en

nuevas correcciones, especialmente de la curva de F0.

6.4 La base de datos SES en nuestro sistema

Para realizar la evaluación de nuestro sistema disponemos de las 15

frases cortas de SES, los 4 párrafos completos y además un conjunto de

frases obtenidas dividiendo los 4 párrafos. Los párrafos completos están

sin etiquetar, por lo que no podremos emplearlos como grupo de control

de nuestros experimentos, pero sí los usaremos para entrenar los

Page 164: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

6. Descripción de la base de datos SES 150

modelos. Por contra, las frases y los párrafos divididos sí están

segmentados manualmente.

Los ficheros de estos tres grupos los tenemos colocados en la carpeta

parrafosDividos_Completos de nuestro sistema (véase el capítulo

dedicado a la estructura del segmentador), y son de dos tipos:

Los archivos de audio en crudo (sin cabeceras), con extensión

.PCM y

las etiquetas de cada uno de esos ficheros, con extensión .lab

El nombre de todos los ficheros sigue el mismo patrón, tanto para los

ficheros de audio como para sus correspondientes etiquetas:

Las frases: F_X_ffss.{pcm,lab} , donde

- X es un carácter que indica el tipo de emoción (A=alegría,

E=enfado, S=sorpresa, T=tristeza, N=voz neutra)

- ff son dos dígitos que indican el número de frase, desde 01

hasta 15

- ss son dos dígitos que indican la sesión de grabación (01 y

02 son las sesiones de grabación con voz neutra; 03, 04 y 05 las

tres sesiones con voz alegre; 06, 07 y 08 las sesiones con voz

triste; 09, 10 y 11 las sesiones con voz enfadada; y 12, 13 y 14 las

sesiones con voz sorprendida).

Los párrafos completos: R_x_ppss.{pcm,lab} , donde

- x es un carácter que indica el tipo de emoción (a=alegría,

e=enfado, s=sorpresa, t=tristeza, n=voz neutra)

- pp son dos dígitos que indican el número de párrafo,

desde 01 hasta 04

Page 165: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

6. Descripción de la base de datos SES 151

- ss son dos dígitos que indican la sesión de grabación (01 y

02 son las sesiones de grabación con voz neutra; 03, 04 y 05 las

tres sesiones con voz alegre; 06, 07 y 08 las sesiones con voz

triste; 09, 10 y 11 las sesiones con voz enfadada; y 12, 13 y 14 las

sesiones con voz sorprendida).

Los párrafos divididos: RXffppss.{pcm,lab} , donde

- X es un carácter que indica el tipo de emoción (A=alegría,

S=sorpresa, T=tristeza, N=voz neutra). No contamos con los

párrafos con voz de enfado divididos

- ff son dos dígitos que indican el número que ocupa la

frase de esta división dentro del párrafo correspondiente, desde

01 hasta el número máximo de frases que tenga el párrafo

- pp son dos dígitos que indican el número de párrafo,

desde 01 hasta 03. No contamos con el cuarto párrafo dividido

- ss son dos dígitos que indican la sesión de grabación. Sólo

se dividieron los párrafos de la primera sesión con cada emoción

(excepto la de enfado), con lo que estos dos dígitos serán 01 para

la sesión de grabación con voz neutra, 03 para la sesión con voz

alegre, 06 para la sesión con voz triste, y 12 para la sesión con

voz sorprendida.

Page 166: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

7. Descripción de la base de datos SEV 152

7. DESCRIPCIÓN DE LA BASE DE DATOS

SEV

En el capítulo anterior realizamos la descripción de la base de datos

SES. Ahora veremos la otra base de datos que vamos a utilizar para los

experimentos de evaluación del sistema de segmentación automática: la

base de datos SEV de habla expresiva en castellano.

7.1 La base de datos SEV

La base de datos SEV (Spanish Expressive Voices) fue desarrollada por

Roberto Barra Chicote en colaboración con el Grupo de Tecnología del

Habla de la UPM. Se puede encontrar amplia información en [Barra-

Chicote 2008] y [Barra-Chicote 2012]. Veamos algunos aspectos

importantes de SEV obtenidos de dichas fuentes.

La base de datos SEV fue creada para ser empleada en los campos del

análisis de emociones, el diseño de algoritmos de conversión de

emociones y la implementación de voz expresiva mediante diferentes

técnicas de síntesis, aunque puede ser empleada en más campos de

investigación, como detección visual de emociones o detección de

Page 167: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

7. Descripción de la base de datos SEV 153

rostros, ya que contiene también capturas de vídeo de los actores

representando las locuciones con voz expresiva.

Contiene locuciones de un actor varón (Joaquín) y una actriz (Rosa),

representando las mismas muestras en voz neutra, y en seis emociones

diferentes: alegría, enfado, sorpresa, tristeza, asco y miedo (éstas dos

últimas son una novedad con respecto a la anterior base de datos SES).

7.1.1 El contenido de voz de la base de datos

La base de datos SEV cuenta, como hemos dicho, con contenido de voz

y de vídeo. A su vez, el contenido de voz, que será el que nos interese

para nuestro estudio, está dividido en 4 grupos diferentes:

Corpus a nivel emocional: Los actores interpretaron 15 frases de

referencia de SES en cuatro ocasiones, aumentando

gradualmente el nivel emocional (nivel neutro, bajo, medio y alto).

Corpus para la síntesis basada en concatenación de difonemas:

Este corpus consta de 570 logatomos que cubren la principal

distribución de difonemas del idioma español, y están agrupados

en 114 locuciones que fueron interpretadas por los actores con

pausas entre las palabras, de modo que se grabaran de manera

aislada. Este corpus permite estudiar el impacto y la viabilidad de

comunicar contenido afectivo mediante palabras sin ningún

significado.

Page 168: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

7. Descripción de la base de datos SEV 154

Corpus para la síntesis basada en la selección de unidades: Este

corpus está compuesto por cien locuciones sacadas de la primera

parte de "Don Quijote de la Mancha" respetando la distribución de

alófonos de esta obra. Este amplio rango de unidades de alófonos

permite la síntesis basada en la técnica de selección de unidades.

Modelado de prosodia: Este último corpus consta de 376

locuciones provenientes de las 84 frases en que se dividen los

cuatro párrafos originales de SES. El objetivo de este corpus es

incluir aspectos prosódicos que hagan posible el estudio de la

prosodia en discursos, entrevistas, diálogos cortos o situaciones

de pregunta y respuesta.

7.2 Etiquetado y marcado de SEV

La base de datos SEV fue etiquetada automáticamente empleando las

herramientas de HTK. Además, un 5% de cada uno de los subcorpus de

SEV fue etiquetado manualmente, para que pudiera servir como cuerpo

de referencia para estudios sobre análisis del ritmo o, como es nuestro

caso, para estudiar la influencia del estado emocional en sistemas de

segmentación fonética automática como el nuestro.

Page 169: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

7. Descripción de la base de datos SEV 155

7.3 La base de datos SEV en nuestro sistema

Para realizar la evaluación de nuestro sistema, como acabamos de

comentar, vamos a contar con un subconjunto de frases de la base de

datos SEV, locutora Rosa, en concreto las que están segmentadas

manualmente. Se trata de 15 frases procedentes de tres de los cuatro

corpus que hemos comentado: 3 frases largas sacadas de los tres

primeros párrafos de SES, 2 frases largas provenientes del corpus

Quijote, y 10 frases pertenecientes al corpus de Prosodia, siendo unas

largas y otras cortas, e incluyendo 6 sentencias interrogativas. El texto

de todas las frases se puede consultar en el Anexo 3.

Los ficheros de estos tres grupos los tenemos colocados en la carpeta

SEV de nuestro sistema (véase el capítulo dedicado a la estructura del

segmentador), y son de dos tipos:

Los archivos de audio con extensión .wav y

las etiquetas de cada uno de esos ficheros, con extensión .lab

El nombre de todos los ficheros sigue el mismo patrón, tanto para los

ficheros de audio como para sus correspondientes etiquetas:

Las frases provenientes de SES: F_X_pffnl.ch1.{wav,lab} , donde

- X es un carácter que indica el tipo de emoción (A=alegría,

C=asco, E=enfado, M=miedo, S=sorpresa, T=tristeza, N=voz neutra)

- p es un dígito que indica el número de párrafo de SES,

desde 1 hasta 4

Page 170: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

7. Descripción de la base de datos SEV 156

- ff son dos dígitos que indican el número de frase dentro

del párrafo

- n es un dígito que indica el nivel de emoción expresado,

desde 1 hasta 3

- l es un dígito que indica el locutor: 0 para la locutora

femenina (Rosa) y 1 para el locutor masculino (Joaquín).

Dentro de este corpus contamos con las frases de Rosa

segmentadas F_X_10130, F_X_20230 y F_X_30230.

Las frases provenientes del Quijote: Q_X_fff1l.ch1.{wav,lab} ,

donde

- X es un carácter que indica el tipo de emoción (A=alegría,

C=asco, E=enfado, M=miedo, S=sorpresa, T=tristeza, N=voz neutra)

- fff son tres dígitos que nos indican el número de frase

- l es un dígito que indica el locutor: 0 para la locutora

femenina (Rosa) y 1 para el locutor masculino (Joaquín).

De este corpus contamos con las frases de Rosa segmentadas

Q_X_00110, y Q_X_00210.

Las frases de Prosodia: P_X_ffffl.ch1.{wav,lab} , donde

- X es un carácter que indica el tipo de emoción (A=alegría,

C=asco, E=enfado, M=miedo, S=sorpresa, T=tristeza, N=voz neutra)

- ffff son cuatro dígitos que nos indican el número de frase

- l es un dígito que indica el locutor: 0 para la locutora

femenina (Rosa) y 1 para el locutor masculino (Joaquín).

Page 171: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

7. Descripción de la base de datos SEV 157

Del corpus de Prosodia contamos con las diez frases de Rosa

segmentadas siguientes: P_X_10110, P_X_10910, P_X_20510,

P_X_20610, P_X_30110, P_X_30210, P_X_41010, P_X_41050,

P_X_51010 y P_X_51080.

En cuanto a la parte de la base de datos SEV correspondiente al locutor

Joaquín no contamos con un conjunto de evaluación, pero igualmente

realizaremos su segmentación automática con nuestro sistema, y lo

evaluaremos eligiendo un número determinado de ficheros al azar de

cada emoción, y escuchando cada fonema de esta muestra con el

programa Praat.

Page 172: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 158

8. EJECUCIONES Y RESULTADOS

En este capítulo detallaremos el conjunto de ejecuciones de prueba que

hemos llevado a cabo con el segmentador fonético automático para

habla expresiva. El propósito de cada experimento será descubrir las

mejores combinaciones de parámetros de cara a obtener resultados

óptimos, así como estudiar el efecto de las diferentes emociones en

frases y párrafos empleados como entrenamiento o como locuciones a

segmentar.

Para cada una de las ejecuciones se mostrarán en tablas los porcentajes

de error obtenidos en la segmentación, para una tolerancia que, salvo

indicación en contrario, será de 20 ms. El resultado se ofrece para los

distintos números de gaussianas en orden creciente, y el resto de

parámetros empleados será indicado en cada uno de los experimentos.

8.1 ELECCIÓN DE LA VERSIÓN DE HTK

En el momento de comenzar este proyecto contábamos con dos

versiones distintas de la herramienta HTK, la 3.3, empleada hasta este

momento en el laboratorio, y la 3.4. Comenzamos comprobando si

existen diferencias en los resultados de las ejecuciones con ambas

Page 173: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 159

versiones para decidir con qué versión de la herramienta trabajaremos

en adelante. Los resultados del experimento son los siguientes:

TIPO BASE: mfcc (Primera tabla); plp (segunda tabla)

COEFICIENTES: _E_D_A (39)

ESTADOS: 5

ITERACIONES: 5

GAUSSIANAS: 5 BASE DE DATOS: SES

LOCUCIONES: FANSTE FANSTE

Page 174: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 160

Comprobamos que los resultados son idénticos con ambas versiones de

la herramienta, por lo que de aquí en adelante emplearemos para todos

los experimentos la versión más reciente, es decir, la 3.4.

8.2 DETERMINACIÓN DEL NÚMERO ÓPTIMO DE

ESTADOS, ITERACIONES Y GAUSSIANAS

Con este experimento tratamos de determinar el número óptimo de tres

de los principales parámetros a definir en el proceso: el número de

estados de los modelos ocultos de Markov, el número de iteraciones

(reestimaciones de los modelos) a realizar durante el proceso y el

número de gaussianas con el que se modelan las variables de salida.

Para ello hemos realizado el entrenamiento y evaluación del conjunto de

frases y párrafos de SES con todas las emociones, tanto para MFCC

como para PLP, y hemos probado a dar valores del 1 al 10 a cada una

de las tres variables, dejando las otras dos fijas a 5. Los resultados

obtenidos son los siguientes:

Page 175: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 161

TIPO BASE: mfcc

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SES

LOCUCIONES: FANSTE FANSTE

1 60,924772 24,916148

2 35,912793

3 29,851461

4 28,869190

5 28,030666

1 35,625299

2 27,407762 21,466219

3 26,161955

4 25,778630

5 26,760901

1 33,109727 28,461907

2 29,563967 24,365117

3 28,941064 24,460949 21,825587

4 27,719214 24,988021

5 28,533781 25,083852

1 24,125539 26,449449

2 22,137039 22,496406

3 23,047437 23,047437

4 23,358888 23,358888 23,071394

5 23,694298 23,957834

1 24,916148 24,916148

2 21,466219 21,466219

3 21,825587 21,825587

4 23,071394 23,071394

5 23,622425 23,622425 23,622425

1 22,735985 23,310973

2 19,525635 21,034978

3 19,837087 21,729756

4 20,436033 22,927647

5 20,340201 23,909919

6 24,700527

1 24,940105 22,208912

2 21,849545 20,915189

3 21,370388 21,753713

4 21,538093 23,215141

5 21,897460 24,125539

6

7 25,706756

1 38,548155 21,442262

2 37,661715 20,651653

3 37,853378 21,849545

4 39,075228 23,215141

5 39,626258 24,125539

6

7

8 25,970292

1 61,879433 20,843316

2 60,714286 20,436033

3 61,372847 21,586009

4 62,082067 22,616195

5 62,335360 23,406804

6

7

8

9 26,209871

1 73,412010 20,268328

2 73,759111 20,699569

3 74,140923 21,921418

4 74,314474 22,759943

5 74,661576 24,245328

6

7

8

9

10 26,377575

MFCC

EXPERIMENTO

ESTADOS = X

ITERACIONES = 5

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = X

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = 5

GAUSSIANAS = X

T

É

R

M

I

N

O

V

A

R

I

A

B

L

E

X = 1

X = 5

X = 9

GAUSSIANAS

X = 10

X = 6

X = 7

X = 8

X = 2

X = 3

X = 4

Page 176: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 162

TIPO BASE: plp

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SES

LOCUCIONES: FANSTE FANSTE

1 60,448301 23,909376

2 35,454326

3 29,501085

4 27,717522

5 27,838033

1 34,924078

2 26,078573 21,691974

3 24,680646

4 24,632442

5 24,078091

1 29,284165 27,789829

2 26,512413 23,668354

3 27,042661 23,451434 22,656062

4 28,874428 24,295011

5 29,669800 25,283201

1 22,824777 25,524223

2 21,378645 22,872981

3 22,439142 22,607857

4 24,319113 23,499638 23,812967

5 25,596529 24,415522

1 23,909376 23,909376

2 21,691974 21,691974

3 22,656062 22,656062

4 23,812967 23,812967

5 24,198602 24,198602 24,198602

1 21,523259 22,776573

2 19,016631 20,751988

3 18,655098 22,222222

4 19,209448 23,523741

5 19,980718 24,656544

6 25,572427

1 24,005785 21,667872

2 22,125813 20,727886

3 21,716076 21,378645

4 22,029405 22,631960

5 22,607857 23,499638

6

7 26,464208

1 39,816823 20,920704

2 37,744035 20,462762

3 38,129670 21,282237

4 38,418896 22,125813

5 39,214268 23,451434

6

7

8 26,705230

1 62,248279 20,197638

2 61,279633 20,607375

3 61,509049 21,860689

4 62,044354 22,656062

5 62,120826 23,740660

6

7

8

9 26,898048

1 74,614846 19,691492

2 75,490196 20,800193

3 75,525210 21,234032

4 75,525210 22,174018

5 76,085434 24,198602

6

7

8

9

10 27,211376

PLP

EXPERIMENTO

GAUSSIANAS

ESTADOS = X

ITERACIONES = 5

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = X

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = 5

GAUSSIANAS = X

X = 10

T

É

R

M

I

N

O

V

A

R

I

A

B

L

E

X = 1

X = 2

X = 3

X = 4

X = 5

X = 6

X = 7

X = 8

X = 9

Page 177: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 163

TIPO BASE: mfcc

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SES

LOCUCIONES: FANSTE R_ANSTE - RANST

1 63,319058 9,614561

2 21,991435

3 11,049251

4 10,021413

5 10,428266

1 23,790150

2 10,021413 9,486081

3 10,342612

4 9,892934

5 9,357602

1 20,406852 11,734475

2 16,680942 9,850107

3 18,115632 9,550321 9,207709

4 18,072805 9,528908

5 17,537473 9,550321

1 9,593148 9,957173

2 9,657388 9,507495

3 10,728051 9,164882

4 11,841542 9,143469 8,886510

5 12,184154 8,950749

1 9,614561 9,614561

2 9,486081 9,486081

3 9,207709 9,207709

4 8,886510 8,886510

5 8,993576 8,993576 8,993576

1 9,057816 9,528908

2 8,543897 9,507495

3 8,158458 9,721627

4 8,179872 9,635974

5 8,394004 9,743041

6 8,972163

1 16,877729 9,164882

2 16,244541 9,336188

3 15,938865 9,785867

4 16,943231 9,614561

5 17,008734 9,464668

6

7 9,229122

1 43,220036 8,929336

2 42,898032 8,950749

3 43,148479 9,678801

4 43,577818 9,743041

5 44,221825 9,614561

6

7

8 9,464668

1 68,190476 9,014989

2 66,666667 8,715203

3 67,523810 9,593148

4 67,238095 9,528908

5 68,285714 9,507495

6

7

8

9 9,550321

1 84,090909 8,843683

2 82,954545 8,672377

3 81,818182 9,250535

4 83,333333 9,507495

5 82,954545 9,357602

6

7

8

9

10 9,785867

X = 10

T

É

R

M

I

N

O

V

A

R

I

A

B

L

E

X = 1

X = 2

X = 3

X = 4

X = 5

X = 6

X = 7

X = 8

X = 9

MFCC

EXPERIMENTO

GAUSSIANAS

ESTADOS = X

ITERACIONES = 5

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = X

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = 5

GAUSSIANAS = X

Page 178: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 164

TIPO BASE: plp

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SES

LOCUCIONES: FANSTE R_ANSTE - RANST

1 61,905782 9,443255

2 19,464668

3 11,177730

4 10,578158

5 10,085653

1 19,678801

2 9,486081 8,929336

3 9,593148

4 9,464668

5 9,421842

1 18,458244 10,728051

2 16,659529 9,079229

3 16,402570 9,314775 8,929336

4 16,873662 9,293362

5 17,216274 9,828694

1 9,336188 9,443255

2 10,278373 9,057816

3 10,856531 8,822270

4 11,905782 8,929336 8,779443

5 12,312634 9,036403

1 9,443255 9,443255

2 8,929336 8,929336

3 8,929336 8,929336

4 8,779443 8,779443

5 8,993576 8,993576 8,993576

1 8,629550 9,336188

2 7,944325 8,715203

3 7,665953 8,993576

4 7,708779 9,421842

5 7,944325 9,721627

6 8,929336

1 16,768559 9,057816

2 16,200873 8,886510

3 15,851528 9,143469

4 15,742358 9,528908

5 16,004367 9,635974

6

7 9,314775

1 42,719141 8,950749

2 42,826476 8,822270

3 42,182469 9,014989

4 42,468694 9,164882

5 42,218247 8,993576

6

7

8 9,507495

1 68,000000 8,886510

2 67,333333 8,672377

3 67,047619 8,993576

4 66,761905 8,907923

5 67,333333 9,250535

6

7

8

9 9,507495

1 84,090909 8,907923

2 79,924242 8,629550

3 79,924242 9,186296

4 81,060606 8,886510

5 81,439394 9,143469

6

7

8

9

10 9,550321

X = 10

T

É

R

M

I

N

O

V

A

R

I

A

B

L

E

X = 1

X = 2

X = 3

X = 4

X = 5

X = 6

X = 7

X = 8

X = 9

PLP

EXPERIMENTO

GAUSSIANAS

ESTADOS = X

ITERACIONES = 5

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = X

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = 5

GAUSSIANAS = X

Page 179: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 165

Cuando utilizamos solamente frases para entrenar y evaluar (primera y

segunda tablas, para MFCC y PLP, respectivamente), podemos realizar

las siguientes observaciones:

Utilizando 3 estados (éste es el menor número posible, ya que dos

estados serán siempre el inicial y el final) el error obtenido es

bastante elevado, y este porcentaje de error va decreciendo al ir

aumentando el número de estados hasta llegar a 6, donde

encontramos el mínimo error posible. De 7 en adelante el error irá

disparándose con cada estado adicional. Por tanto 6 parece un

número óptimo de estados, combinado con 5 iteraciones y 2 (en el

caso de MFCC) ó 3 (en el caso de PLP) gaussianas.

El número de iteraciones tiene un comportamiento inversamente

proporcional con respecto a la tasa de error, como podíamos

haber sospechado a priori, dado que cada nueva iteración del

proceso que realicemos debería conducirnos a un resultado más

preciso. Observamos que por cada nueva iteración realizada el

error disminuye, por lo que podríamos pensar que lo mejor sería

utilizar un número muy alto de iteraciones. Pero por otra parte el

proceso completo se ralentiza enormemente con cada nueva

iteración que añadimos al mismo, por lo que podríamos

considerar un número óptimo de iteraciones aquella última

iteración que consiga una rebaja considerable de la tasa de error

sin convertir el proceso en desesperantemente largo. Para ello,

podemos calcular la mejora marginal de cada iteración, esto es, la

mejora en el porcentaje de error que consigue la adición de una

nueva iteración. Con los datos del experimento podemos realizar

los siguientes cálculos:

Page 180: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 166

ITERACIONES MFCC PLP

X=2 2,252036 3,639431

X=3 1,413513 0,626657

X=4 1,868711 0,843577

X=5 1,030187 0,915883

X=6 0,431241 0,939986

X=7 0,119789 0,024102

X=8 0,263536 0,265124

X=9 0,215620 0,265124

X=10 0,167705 0,506146

Realizar una segunda iteración nos produciría una mejora de la

tasa de error de un 2.25% y 3.64% dependiendo de la técnica, con

respecto al error obtenido en el experimento sin iteraciones,

mientras que la séptima iteración sólo introduciría una mejora de

0.12% y 0.02% con respecto a la sexta iteración, cantidades lo

suficientemente pequeñas como para que no nos merezca la pena

el tiempo empleado en dicha iteración. El número óptimo de

iteraciones según estos datos serían 5 ó 6, aunque incluso con 4

se obtienen resultados bastante aceptables.

Considerando por último el número de gaussianas, vemos que

para ambas técnicas el óptimo se encuentra en 2 mezclas

(manteniendo constantes los estados y las iteraciones a 5).

Combinando pues las conclusiones obtenidas sobre los números

óptimos de estados, iteraciones y gaussianas, y repitiendo el

experimento con dichos parámetros, vemos que el mínimo error posible

en el experimento con frases lo obtenemos en el caso de MFCC con 6

estados, 6 iteraciones y 2 gaussianas, para un error mínimo del

18.97%; y en el caso de PLP con 6 estados, 6 iteraciones y 3

gaussianas, consiguiendo un error mínimo del 18.37%

Page 181: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 167

1 22,735985 20,843316

2 19,525635 18,974605

1 21,523259 20,245842

2 19,016631 18,582791

3 18,655098 18,365871

MFCC

PLP

GAUSSIANASESTADOS = 6

ITERACIONES = 5

ESTADOS = 6

ITERACIONES = 6

Una vez estudiado el experimento con frases pasamos a considerar

aquel en el que utilizamos frases y párrafos para entrenar y evaluamos

párrafos (tercera y cuarta tablas, para MFCC y PLP, respectivamente).

Podemos realizar ahora las siguientes observaciones:

Como observábamos en el experimento con frases, utilizando 3

estados el error obtenido es bastante elevado, y este porcentaje

de error va decreciendo al ir aumentando el número de estados

hasta llegar a 6, donde encontramos el mínimo error posible. De 7

en adelante el error irá disparándose con cada estado adicional.

Por tanto 6 parece un número óptimo de estados, combinado con

5 iteraciones y 3 gaussianas.

Considerando el número de iteraciones es cuando encontramos

las mayores diferencias con respecto al experimento con frases,

pues mientras que en aquel dicho número tenía un

comportamiento inversamente proporcional con respecto a la tasa

de error, en éste observamos que en ciertas ocasiones realizar

una nueva iteración hace que la tasa de error aumente, en lugar

de disminuir, es decir, parece que el sistema comienza a

particularizar en vez de generalizar, de manera que se

acostumbra a los datos pasados como entrenamiento, y comienza

a segmentar de peor manera. Y por otra parte el proceso completo

Page 182: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 168

se ralentiza enormemente con cada nueva iteración que añadimos

al mismo, por lo que podríamos considerar un número óptimo de

iteraciones aquella última iteración que consiga una rebaja

considerable de la tasa de error sin convertir el proceso en

demasiado largo. Para ello, calculamos de nuevo la mejora

marginal de cada iteración, obteniendo lo siguiente:

ITERACIONES MFCC PLP

X=2 0,663811 0,663811

X=3 -0,171306 0,342613

X=4 0,578159 0,256959

X=5 0,064239 0,042827

X=6 -0,620985 0,064240

X=7 0,342613 -0,171307

X=8 0,235546 0,064240

X=9 0,214133 0,149893

X=10 0,042826 0,042827

Para el caso de MFCC vemos que la segunda y cuarta iteraciones

consiguen mejoras notables de la tasa de error, mientras que la

tercera y la sexta la empeoran, por lo que podríamos considerar 4

ó 5 el número óptimo de iteraciones. Para PLP vemos que la

segunda, tercera y cuarta iteraciones mejoran la tasa en más de

un cuarto de punto, mientras que de la quinta en adelante la

mejora obtenida es más reducida (la séptima iteración incluso la

empeora), por lo que podríamos dejar también en 4 ó 5 el número

óptimo de iteraciones.

Considerando por último el número de gaussianas, vemos que

para ambas técnicas el óptimo se encuentra en 4 mezclas

(manteniendo constantes los estados y las iteraciones a 5).

Combinando pues las conclusiones obtenidas sobre los números

óptimos de estados, iteraciones y gaussianas, y repitiendo el

experimento con parámetros en los entornos de dichas conclusiones,

Page 183: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 169

vemos que el mínimo error posible en el experimento con párrafos lo

obtenemos en el caso de MFCC con 6 estados, 6 iteraciones y 5

gaussianas, para un error mínimo del 8.01%; y en el caso de PLP con 6

estados, 6 iteraciones y 2 gaussianas, consiguiendo un error mínimo del

7.60%.

1 9,079229 9,057816 8,822270

2 8,650964 8,543897 8,179872

3 8,522484 8,158458 8,115632

4 8,094218 8,179872 8,029979

5 8,179872 8,394004 8,008565

1 8,907923 8,629550 8,501071

2 8,179872 7,944325 7,601713

3 7,880086 7,665953 7,687366

4 8,029979 7,708779 7,730193

5 7,944325 7,944325 7,922912

PLP

ESTADOS = 6

ITERACIONES = 6GAUSSIANAS

ESTADOS = 6

ITERACIONES = 4

ESTADOS = 6

ITERACIONES = 5

MFCC

Estos resultados son bastante buenos para ambas técnicas, no

presentando diferencias significativas entre MFCC y PLP, al ser la

banda de confianza al 5% para el dato de MFCC de [7.70, 8.32] y la de

PLP de [7.30, 7.90]. Para calcular estos intervalos de confianza, y los

que se vayan presentando a lo largo del capítulo, utilizamos la fórmula

del intervalo de confianza para una proporción, al estar trabajando con

porcentajes de error. Según esta fórmula el intervalo de confianza para

estimar una proporción p, conocida una proporción muestral pn de una

muestra de tamaño n, a un nivel de confianza del (1-α)·100% es:

En nuestro caso, pn es el porcentaje de error al que se le quiere calcular

la banda de confianza, n es el número de instancias totales de

transición entre fonemas que contienen los ficheros segmentados, y

damos el valor 1.96 a zα/2 para un nivel de confianza estándar del 5%.

Page 184: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 170

8.3 COMBINACIONES DE COEFICIENTES

Como vimos en el capítulo 3, para afinar el análisis se suele emplear un

grupo finito de coeficientes extras. Vamos a realizar distintas

combinaciones posibles de dichos coeficientes extra para ver cómo

afectan al resultado obtenido por el segmentador. Los coeficientes que

combinaremos en el experimento son:

Coeficiente Cepstral cero: _0

Energía: _E

Coeficientes Delta: _D

Coeficientes de Aceleración: _A

Coeficientes de Tercera derivada: _T

Los resultados obtenidos para el experimento con frases son los

siguientes:

Page 185: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 171

TIP

O B

AS

E:

mfc

c

ES

TA

DO

S:

6

ITE

RA

CIO

NE

S:

6

GA

US

SIA

NA

S:

5

BA

SE

DE

DA

TO

S:

SE

S

LO

CU

CIO

NE

S:

FA

NS

TE

-FA

NS

TE

126,5

45280

27,2

40057

28,4

13991

25,1

79684

23,3

34931

23,6

46382

23,6

94298

20,4

59990

20,8

43316

23,3

10973

20,2

92286

20,5

07906

224,0

77623

25,0

59895

25,8

50503

22,5

20364

21,0

11021

21,4

66219

21,4

90177

18

,42

35

75

18,9

74605

19,6

45424

17,5

85050

17

,10

58

94

323,6

22425

24,3

89075

25,4

43220

22,2

56828

20,6

03737

20,9

39147

21,8

01629

18,5

43364

19,1

42310

19,8

13129

17,7

52755

17,6

09008

423,1

19310

24,1

25539

25,7

78630

22,1

84954

20,6

75611

21,1

78725

22,0

89123

19,6

45424

19,9

56876

20,4

83948

18,1

60038

18,6

39195

523,8

85961

24,1

25539

26,0

18208

22,2

80786

21,5

38093

21,0

11021

22,3

04744

19,5

97508

20,4

83948

20,5

79780

18,3

27743

18,5

43364

24,2

50120

24,9

88021

26,3

00910

22,8

84523

21,4

32679

21,6

48299

22,2

75994

19,3

33972

19,8

80211

20,7

66651

18,4

23574

18,4

81073

CO

EF

ICIE

NT

ES

E_D

26

D_A

36

0_D

_A

39

G A U S S I A N A S

E_D

_A

39

E_D

_A

_T

52

0_D

_A

_T

52

D_A

_T

48

MF

CC

0 1

3E

13

0_E

14

D 2

40_D

26

Page 186: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 172

TIP

O B

AS

E:

plp

ES

TA

DO

S:

6

ITE

RA

CIO

NE

S:

6

GA

US

SIA

NA

S:

5

BA

SE

DE

DA

TO

S:

SE

S

LO

CU

CIO

NE

S:

FA

NS

TE

-FA

NS

TE

127,2

59581

27,6

21114

28,3

68282

24,2

95011

22,7

76573

23,0

41697

23,1

86310

19,9

08412

20,2

45842

24,3

67317

21,4

75054

20,8

48397

225,2

59099

25,1

14485

26,0

78573

22,6

56062

21,7

40178

21,5

71463

20,8

72499

18,3

89973

18,5

82791

21,3

78645

17,8

11521

17,6

42805

323,9

57580

23,7

40660

22,9

93492

22,4

63244

21,3

06339

20,6

79682

20,6

31477

18,9

44324

18

,36

58

71

21,0

41215

18,0

28441

17

,40

17

84

423,2

82719

22,7

04266

22,3

18631

22,9

93492

21,5

95565

21,0

65317

20,9

68908

19,6

43288

19,1

85346

21,7

64281

18,8

96120

18,2

45360

523,1

86310

22,8

48879

22,9

45288

22,8

48879

21,6

19667

21,1

13521

21,1

37624

20,1

25331

20,1

49434

21,3

54543

19,1

37141

19,1

61244

24,5

89058

24,4

05881

24,5

40853

23,0

51338

21,8

07664

21,4

94336

21,3

59364

19,4

02266

19,3

05857

21,9

81200

19,0

69655

18,6

59918

CO

EF

ICIE

NT

ES

0_D

_A

39

E_D

_A

39

G A U S S I A N A S

D_A

_T

48

0_D

_A

_T

52

E_D

_A

_T

52

PLP

0 1

3E

13

0_E

14

D 2

40_D

26

E_D

26

D_A

36

Page 187: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 173

A la vista de los resultados podemos extraer las siguientes

conclusiones:

La inclusión únicamente del coeficiente cepstral cero (0 13)

presenta en general mejores resultados que la del coeficiente de

energía (E 13) en la técnica MFCC, y peores en la técnica PLP.

La inclusión de ambos coeficientes a la vez (0_E 14) parece

empeorar los resultados en ambas técnicas, excepto a partir de 3

gaussianas con PLP, donde mejora los resultados de ambos

coeficientes por separado (0 13 y E 13).

La inclusión de los coeficientes Delta (D 24) resulta ser mejor en

general que la simple inclusión de los coeficientes de los puntos

anteriores (0 13, E 13 y 0_E 14).

Añadir también los coeficientes de aceleración (D_A 36) mejora los

resultados. En el caso de MFCC conseguimos en torno a 1.5

puntos porcentuales de mejora de la tasa de error con 1

gaussiana y esta mejora va disminuyendo con el número de

gaussianas hasta ser prácticamente nula con 4 y más. En el caso

de PLP conseguimos para todas las gaussianas mejoras de entre 1

y 2 puntos porcentuales.

En cambio añadir los coeficientes de tercera derivada (D_A_T 48)

sólo mejora los resultados para MFCC (hasta 2 puntos con más

de 1 gaussiana), empeorándolos en el caso de PLP entre 0.2 y 1.2

puntos. Además se observa que el proceso se ralentiza bastante al

añadir estos coeficientes, por lo que normalmente no los

emplearemos en nuestros experimentos.

Page 188: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 174

Añadir a los coeficientes derivados el coeficiente cero mejora en

general los resultados (0_D 26 frente a D 24, 0_D_A 39 frente a

D_A 36, 0_D_A_T 52 frente a D_A_T 48), y lo mismo ocurre con la

energía (E_D 26 frente a D 24, E_D_A 39 frente a D_A 36,

E_D_A_T 52 frente a D_A_T 48). Cuál de estos dos coeficientes

añadidos a los derivados obtiene mejores resultados depende del

número de gaussianas y de la técnica empleada. Por ejemplo, con

2 gaussianas (que como vimos en el apartado 8.2 era un número

óptimo para frases combinado con 6 estados y 6 iteraciones) 0_D

26 obtiene un mejor resultado que E_D 26 con la técnica MFCC,

mientras que con la técnica PLP ocurre justo lo contrario.

Finalmente, considerando toda la tabla, con MFCC se obtienen los

mejores resultados con la combinación E_D_A_T 52 y 2

gaussianas, con una tasa de error del 17.11%. Si queremos

prescindir de los coeficientes de tercera derivada la mejor tasa de

error, del 18.42%, la obtenemos con los coeficientes 0_D_A 39 y 2

gaussianas. Por otro lado, con PLP la mejor combinación es

E_D_A_T 52 y 3 gaussianas, con una tasa de error del 17.40%;

prescindiendo de los coeficientes de tercera derivada la mejor

resulta ser E_D_A 39, con una tasa de error del 18.37%.

Veamos ahora los resultados obtenidos para el experimento con

párrafos:

Page 189: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 175

TIP

O B

AS

E:

mfc

c

ES

TA

DO

S:

6

ITE

RA

CIO

NE

S:

6

GA

US

SIA

NA

S:

5

BA

SE

DE

DA

TO

S:

SE

S

LO

CU

CIO

NE

S:

FA

NS

TE

R_A

NS

TE

-RA

NS

T

112,0

55675

12,2

05567

11,7

13062

10,3

21199

9,7

85867

10,0

00000

9,2

71949

8,6

29550

8,8

22270

9,5

07495

8,8

00857

8,6

50964

210,9

20771

11,0

92077

10,6

42398

9,1

43469

8,7

58030

8,8

86510

8,6

50964

7,79

4433

8,1

79872

8,7

15203

8,1

37045

7,7

51606

310,5

35332

10,4

28266

10,2

78373

8,9

72163

9,1

22056

8,9

93576

8,4

58244

7,8

37259

8,1

15632

8,4

79657

7,9

22912

7,7

73019

410,3

42612

10,5

13919

10,1

49893

9,5

28908

8,9

93576

8,7

15203

8,6

50964

7,79

4433

8,0

29979

8,0

94218

7,9

87152

7,4

30407

510,3

64026

10,1

28480

9,8

92934

9,2

50535

8,7

79443

8,9

07923

8,7

79443

8,2

86938

8,0

08565

8,2

22698

7,4

94647

7,21

6274

10,8

43683

10,8

73662

10,5

35332

9,4

43255

9,0

87794

9,1

00642

8,7

62313

8,0

68523

8,2

31264

8,6

03854

8,0

68523

7,7

64454

G A U S S I A N A SMF

CC

CO

EF

ICIE

NT

ES

0 1

3E

13

0_E

14

D 2

40_D

26

E_D

26

D_A

36

0_D

_A

39

E_D

_A

39

D_A

_T

48

0_D

_A

_T

52

E_D

_A

_T

52

Page 190: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 176

TIP

O B

AS

E:

plp

ES

TA

DO

S:

6

ITE

RA

CIO

NE

S:

6

GA

US

SIA

NA

S:

5

BA

SE

DE

DA

TO

S:

SE

S

LO

CU

CIO

NE

S:

FA

NS

TE

R_A

NS

TE

-RA

NS

T

110,8

77944

11,0

06424

10,5

99572

9,5

93148

9,4

64668

9,5

50321

9,0

57816

8,5

01071

8,5

01071

9,3

14775

8,5

65310

8,6

29550

210,2

35546

10,6

42398

9,9

78587

9,0

79229

8,7

79443

8,9

50749

8,3

94004

7,43

0407

7,6

01713

8,3

72591

8,4

58244

7,6

65953

310,3

64026

10,6

20985

9,6

57388

8,7

79443

8,7

36617

8,6

93790

7,9

01499

7,7

51606

7,6

87366

8,1

37045

7,8

58672

7,40

8994

410,1

28480

10,0

00000

9,4

86081

8,8

86510

8,6

93790

8,4

36831

8,2

86938

7,6

65953

7,7

30193

8,4

15418

7,9

01499

7,6

01713

59,9

57173

9,6

78801

9,4

86081

8,8

43683

8,3

94004

8,5

86724

8,4

58244

7,6

44540

7,9

22912

8,5

86724

7,7

51606

7,7

94433

10,3

12634

10,3

89722

9,8

41542

9,0

36403

8,8

13704

8,8

43683

8,4

19700

7,7

98715

7,8

88651

8,5

65311

8,1

07066

7,8

20129

G A U S S I A N A S

PLP

CO

EF

ICIE

NT

ES

0 1

3E

13

0_E

14

D 2

40_D

26

E_D

26

D_A

36

0_D

_A

39

E_D

_A

39

D_A

_T

48

0_D

_A

_T

52

E_D

_A

_T

52

Page 191: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 177

A la vista de los resultados podemos extraer las siguientes

conclusiones:

La inclusión únicamente del coeficiente cepstral cero (0 13)

presenta en general mejores resultados que la del coeficiente de

energía (E 13), salvo con 4 y 5 gaussianas en la técnica PLP y con

3 y 5 en la MFCC.

La inclusión de ambos coeficientes a la vez (0_E 14), al contrario

de lo que sucedía en el experimento con frases, mejora los

resultados en todos los casos.

La inclusión de los coeficientes Delta (D 24) resulta ser mejor en

todos los casos que la simple inclusión de los coeficientes de los

puntos anteriores (0 13, E 13 y 0_E 14).

Añadir también los coeficientes de aceleración (D_A 36) mejora de

nuevo los resultados, consiguiendo entre medio punto y 1 punto

porcentual de mejora de la tasa de error para ambas técnicas.

En cambio añadir los coeficientes de tercera derivada (D_A_T 48)

empeora los resultados para ambas técnicas (con frases parecía

funcionar mejor para MFCC), por lo que reforzamos nuestra idea

de no emplearlos de manera habitual en nuestros experimentos.

Añadir a los coeficientes acelerados el coeficiente cero mejora en

general los resultados (0_D 26 frente a D 24, 0_D_A 39 frente a

D_A 36, 0_D_A_T 52 frente a D_A_T 48), salvo algunas

excepciones que encontramos con 2 y 3 gaussianas. Con la

Page 192: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 178

energía vemos que la mejora sucede en todos los casos (E_D 26

frente a D 24, E_D_A 39 frente a D_A 36 y E_D_A_T 52 frente a

D_A_T 48). Cuál de estos dos coeficientes añadidos a los

derivados obtiene mejores resultados depende del número de

gaussianas y de la técnica empleada. Por ejemplo, para MFCC con

3 gaussianas (que como vimos en el apartado 8.2 era un número

óptimo para párrafos combinado con 6 estados y 6 iteraciones)

E_D 26 y E_D_A_T 52 obtienen mejores resultados que 0_D 26 y

0_D_A_T 52, mientras que 0_D_A 39 es mejor que E_D_A 39. Lo

mismo ocurre con la técnica PLP y 4 gaussianas (que como vimos

en el apartado 8.2 era un número óptimo para párrafos

combinado con 6 estados y 6 iteraciones).

Finalmente, considerando toda la tabla, con MFCC se obtienen los

mejores resultados con la combinación E_D_A_T 52 y 5

gaussianas, con una tasa de error del 7.22%. Con PLP la mejor

combinación es también E_D_A_T 52 y 3 gaussianas, con una

tasa de error del 7.41%. Si prescindimos de las terceras

derivadas, la mejor combinación en ambas técnicas es 0_D_A 39;

en MFCC con 2 y 4 gaussianas se obtiene un 7.79% y en PLP con

2 gaussianas un 7.43%. La diferencia entre estos datos, obtenidos

con coeficientes derivados y acelerados, es significativa con

respecto al dato obtenido al no emplear estos coeficientes, al ser

el extremo superior de sus intervalos de confianza al 5% ([7.49,

8.10] para MFCC y [7.13, 7.73] para PLP) mucho menores que el

extremo inferior de los intervalos de confianza de los datos de

error sin estos coeficientes adicionales ([10.00, 10.69] para MFCC

y [9.62, 10.29] para PLP).

Page 193: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 179

8.4 COMBINACIONES DE FRASES Y PÁRRAFOS

COMO GRUPOS DE ENTRENAMIENTO Y

EVALUACIÓN

Como vimos en el capítulo dedicado a la base de datos SES, dicha base

de datos cuenta con locuciones basadas en frases (F) y locuciones

basadas en párrafos, estando estos últimos en dos grupos, uno de

párrafos sin segmentar (R_) y otro de párrafos segmentados (R). En este

experimento trataremos de observar qué ocurre cuando utilizamos cada

uno de estos tres grupos de locuciones como conjunto de entrenamiento

y de evaluación, realizando todas las combinaciones posibles, para ver

si el uso de uno u otro grupo produce mejores resultados de

segmentación automática.

Combinando dichos grupos de uno en uno, de dos en dos, y los tres

juntos, obtenemos 7 combinaciones, a saber:

NÚMERO DE

COMBINACIÓNFrases

Párrafos

sin segmentar

Párrafos

segmentados

NOMBRE DE LA

COMBINACIÓN

1 a r r FANSTE

2 r a r R_ANSTE

3 r r a RANST

4 a a r FANSTE_R_ANSTE

5 a r a FANSTE_RANST

6 r a a R_ANSTE_RANST

7 a a a FANSTE_R_ANSTE_RANST

Realizamos experimentos cruzando estas 7 combinaciones como grupos

de entrenamiento y evaluación, teniendo en cuenta que para evaluar

sólo podemos hacer uso de los conjuntos de locuciones segmentadas (es

Page 194: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 180

decir, combinaciones 1, 3 y 5), y representamos los resultados en las

siguientes tablas:

TIPO BASE: mfcc

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SES

20,843316 19,501677 16,291327 16,674653 16,866315 15,908002 16,099665 17,45499357

18,974605 15,620508 15,740297 16,650695 16,602779 14,973646 16,482990 16,43507429

19,142310 14,350743 15,716339 16,530906 16,866315 14,758026 16,267369 16,233144

19,956876 14,662195 15,572592 16,147580 16,842357 15,189267 16,411116 16,39742614

20,483948 14,829899 15,548634 15,979875 17,129851 14,446574 15,500719 16,27421429

11,755889 9,914347 9,122056 8,822270 9,036403 8,650964 8,736617 9,434078

10,877944 8,158458 8,115632 8,179872 8,372591 8,329764 7,987152 8,574487571

11,113490 7,858672 8,415418 8,115632 8,286938 8,051392 7,837259 8,525543

11,284797 8,522484 8,993576 8,029979 8,522484 7,922912 7,858672 8,733557714

11,177730 8,972163 9,229122 8,008565 8,543897 7,922912 8,072805 8,846742

16,044776 14,439168 12,505654 12,528268 12,731796 12,075984 12,211669 13,21961643

14,699231 11,680235 11,714156 12,177748 12,256897 11,465400 11,996834 12,28435729

14,902759 10,922659 11,861149 12,087291 12,336047 11,216644 11,815920 12,16320986

15,377657 11,420172 12,098598 11,861149 12,449118 11,352329 11,895070 12,35058471

15,569878 11,736771 12,211669 11,770692 12,596110 11,001809 11,578471 12,3522

15,48034707 12,17267673 12,20908127 12,23767833 12,62932653 11,55104167 12,0501552

3 8,822881657

5 12,47399366

T

E

S

T

1 16,55897046

7MFCC

TRAINING

1 2 3 4 5 6

TIPO BASE: plp

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SES

20,245842 19,474572 16,775127 16,751024 16,461798 16,003856 15,859243 17,36735171

18,582791 16,341287 15,497710 15,907448 15,618221 14,967462 15,497710 16,058947

18,365871 15,256688 15,521812 16,196674 16,317185 15,473608 15,015666 16,021072

19,185346 15,280791 15,328995 16,268980 16,992046 15,039769 15,425404 16,217333

20,149434 14,774644 15,642323 16,510002 17,016148 15,594119 15,714630 16,4859

11,734475 9,850107 8,865096 8,501071 9,250535 8,415418 8,586724 9,314775143

10,171306 7,837259 7,708779 7,601713 7,880086 7,794433 7,687366 8,097277429

10,556745 7,623126 7,944325 7,687366 7,601713 7,237687 7,259101 7,987151857

10,513919 7,601713 8,115632 7,730193 7,687366 7,901499 7,623126 8,167635429

10,985011 7,794433 8,779443 7,922912 7,773019 8,222698 8,008565 8,498011571

15,738746 14,378047 12,586461 12,382356 12,643157 11,985486 12,008164 13,10320243

14,128586 11,838077 11,373172 11,509241 11,520581 11,169067 11,361832 11,84293657

14,230638 11,214423 11,509241 11,690668 11,702007 11,112371 10,908266 11,766802

14,593491 11,214423 11,509241 11,747364 12,064860 11,259780 11,293797 11,954708

15,296519 11,078354 12,008164 11,962808 12,121556 11,690668 11,633972 12,25600586

14,965248 12,10386293 11,94436807 12,02465467 12,1766852 11,59119473 11,59223773

16,43012074

3 8,412970286

5 12,18473097

6 7

T

E

S

T

1

1 2 3 4 5PLP

TRAINING

Page 195: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 181

Vemos que los resultados obtenidos difieren mucho según el tipo de

locuciones que queremos segmentar y según el tipo de locuciones que

empleemos para entrenar al segmentador:

Vemos que las frases son las que "se dejan segmentar" de peor

manera, pues en todos los casos obtenemos tasas de error de

entre el 14 y el 21%.

o En MFCC los mejores resultados para segmentar frases los

obtenemos si entrenamos el segmentador con los párrafos

sin segmentar (combinación 2), con un error mínimo del

14.35%, o con todos los párrafos (combinación 6, 14.45%).

o En PLP las mejores combinaciones son las mismas:

párrafos sin segmentar (combinación 2) y todos los párrafos

(combinación 6), con un 14.77% y 14.97%,

respectivamente.

o En ambas técnicas los peores resultados los obtenemos si

prescindimos para el entrenamiento de los párrafos y sólo

entrenamos con frases (combinación 1), con errores

mínimos del 18.97% para MFCC y del 18.37% para PLP; es

lógico que esta combinación sea la peor para entrenar, ya

que las frases solas son las que contienen un menor

número de datos para entrenar los modelos.

Por otro lado vemos que en la segmentación de párrafos es donde

el segmentador consigue mejores resultados, con tasas de error

en el entorno del 7 -12%.

o En MFCC los mejores resultados para segmentar párrafos

los obtenemos si entrenamos el segmentador con todo el

corpus de la base de datos (combinación 7), con un error

mínimo del 7.84%. El resultado es prácticamente igual de

Page 196: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 182

bueno (7.86%) si entrenamos sólo con párrafos sin

segmentar (combinación 2).

o En PLP el resultado óptimo (y de hecho el mejor de toda la

tabla en conjunto) se obtiene entrenando con todos los

párrafos (combinación 6), con un error mínimo del 7.24%.

Si añadimos al conjunto de entrenamiento las frases

(combinación 7) los resultados empeoran ligeramente, pero

seguimos obteniendo los segundos mejores resultados de la

tabla, con un 7.26% de error.

o Lo que parece peor con diferencia a la hora de segmentar

párrafos es entrenar con frases solamente (combinación 1),

con las que nuestra tasa de error mínima sube hasta el

10.88% para MFCC y 10.17% para PLP.

Por último, si queremos segmentar conjuntos de frases y párrafos

mezclados (combinación 5), obtendremos resultados a mitad de

camino entre los dos casos anteriores, es decir, entre segmentar

sólo frases o sólo párrafos, con tasas de error de entre el 10 y el

16%.

o Los mejores resultados para segmentar párrafos y frases los

obtenemos en MFCC si entrenamos el segmentador con

párrafos sin segmentar (combinación 2), con un error

mínimo del 10.92%, o con todos los párrafos (combinación

6, 11%).

o En PLP en cambio lo óptimo sería entrenar con toda la base

de datos (combinación 7, 10.91%), si bien no empeoraría

mucho la situación entrenando sólo con párrafos sin

segmentar (combinación 2, 11.08%).

o Y de nuevo también los peores resultados los obtenemos si

prescindimos para el entrenamiento de los párrafos y sólo

Page 197: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 183

entrenamos con frases (combinación 1), con errores

mínimos del 14.70% para MFCC y del 14.13% para PLP.

Para terminar, si en lugar de buscar los máximos y mínimos puntuales,

promediáramos los resultados de las 5 gaussianas de cada grupo de

experimentos, tendríamos los siguientes resultados:

1 19,880211 15,793004 15,773838 16,396742 16,861523 15,055103 16,152372

3 11,241970 8,685225 8,775161 8,231264 8,552463 8,175589 8,098501

5 15,318860 12,039801 12,078245 12,085030 12,473994 11,422433 11,899593TEST

MFCCTRAINING

1 2 3 4 5 6 7

1 19,305857 16,225596 15,753193 16,326826 16,481080 15,415763 15,502531

3 10,792291 8,141328 8,282655 7,888651 8,038544 7,914347 7,832976

5 14,797596 11,944665 11,797256 11,858487 12,010432 11,443474 11,441206

PLPTRAINING

1 2 3 4 5 6 7

TEST

Observamos, en línea con nuestras conclusiones anteriores, que los

mejores datos de segmentación se producen al segmentar párrafos, y

que los mejores grupos de entrenamiento son toda la base de datos

(combinación 7, con 8.10% para MFCC y 7.83% para PLP), todos los

párrafos (combinación 6, con 8.18% y 7.91%) y frases y párrafos sin

segmentar (combinación 4, con 8.23% y 7.89%). Dado que las

combinaciones 6 y 7 requieren el doble de tiempo para realizar el

entrenamiento que la combinación 4, y que los resultados de ésta

última son muy similares, es este grupo de entrenamiento el que

estamos utilizando en la mayoría de nuestros experimentos.

Page 198: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 184

8.5 SEGMENTACIÓN INTEREMOCIONES

Como hemos venido afirmando, las emociones alteran las principales

características de la voz, por lo que pueden tener una cierta influencia

en el proceso de segmentación del habla expresiva. En este experimento

trataremos de evaluar dicha influencia realizando ejercicios de

segmentación con emociones cruzadas, es decir, entrenaremos al

segmentador con voz neutra y evaluaremos cómo segmenta locuciones

de voz expresiva, y entrenaremos con cada una de las distintas

emociones y observaremos cómo se segmentan los distintos tipos de

habla expresiva. Para ello realizaremos como siempre el experimento

primero con frases y después con párrafos. Los resultados obtenidos

con frases son los siguientes:

Page 199: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 185

TIPO BASE: mfcc

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SES

39,373602 21,252796 30,201342 30,201342 28,635347 16,890380 27,75913

38,255034 21,700224 28,970917 29,082774 24,832215 15,100671 26,32364

37,472036 19,910515 29,082774 28,411633 24,608501 15,883669 25,89485

37,919463 20,022371 28,523490 33,444816 24,944072 16,331096 26,86422

39,261745 21,364653 28,411633 34,448161 26,286353 16,442953 27,70258

34,002230 28,762542 38,015608 35,897436 31,995541 21,404682 31,67967

31,438127 27,536232 33,444816 31,995541 29,542921 19,509476 28,91119

32,329989 28,985507 33,779264 31,995541 27,759197 19,620959 29,07841

31,438127 29,208473 34,448161 32,664437 28,428094 19,843924 29,33854

30,992196 29,654404 35,562988 32,664437 29,542921 21,293200 29,95169

28,187919 20,637584 39,093960 26,510067 34,228188 15,604027 27,37696

25,838926 20,469799 34,228188 23,489933 29,026846 14,429530 24,58054

28,020134 19,966443 34,563758 27,348993 29,697987 15,436242 25,83893

29,194631 21,979866 35,402685 26,510067 31,040268 15,268456 26,566

30,033557 24,161074 36,241611 26,677852 30,704698 15,268456 27,18121

35,498320 27,771557 41,769317 43,784994 32,138858 21,388578 33,72527

31,354983 27,547592 38,073908 43,449048 29,675252 19,820829 31,6536

34,490482 28,667413 38,409854 44,232923 30,907055 19,932811 32,77342

35,274356 28,555431 38,521837 46,584546 31,243001 22,396417 33,7626

34,938410 27,883539 38,745801 47,816349 32,362822 22,844345 34,09854

37,695749 32,997763 43,064877 36,465324 40,492170 27,181208 36,31618

34,004474 32,997763 40,715884 33,221477 39,038031 24,496644 34,07905

36,465324 32,774049 40,604027 33,557047 38,926174 23,601790 34,3214

36,689038 31,655481 38,478747 34,116331 39,709172 24,384787 34,17226

36,241611 32,550336 37,919463 36,241611 40,380313 24,832215 34,69426

35,433637 26,689027 38,380450 34,786775 33,445137 20,843316 31,59639

32,630570 26,449449 35,146143 32,127456 30,522281 18,974605 29,30842

34,163872 26,497365 35,337805 33,397221 30,426449 19,142310 29,8275

34,451366 26,593196 35,050311 34,331576 31,073311 19,956876 30,24277

34,595113 27,335889 35,313848 35,146143 31,935793 20,483948 30,80179

33,92283 26,41928 35,85012 34,02006 31,45163 19,62028

33,20269

FANSTEFS

26,90889

TRAINING

FA FE FT

T

E

S

T FS

FN

FANSTE

29,7919

26,30872

FT 34,71663

MFCC

FA

FE

FN

30,35537

Page 200: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 186

TIPO BASE: plp

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SES

42,953020 19,910515 35,011186 27,181208 28,411633 16,778523 28,37435

39,038031 19,463087 34,451902 23,266219 25,950783 15,436242 26,26771

38,366890 20,246085 31,991051 24,272931 25,279642 14,093960 25,70843

39,597315 18,903803 32,774049 24,272931 26,174497 15,100671 26,13721

39,709172 19,015660 32,885906 24,832215 27,628635 14,988814 26,51007

37,500000 28,325688 41,743119 35,206422 32,912844 21,444954 32,8555

33,944954 28,096330 41,513761 31,536697 30,275229 19,380734 30,79128

32,683486 27,866972 40,711009 30,963303 30,160550 20,642202 30,50459

37,729358 28,096330 40,940367 31,766055 29,931193 21,788991 31,70872

36,926606 28,555046 42,889908 31,766055 30,504587 21,444954 32,01453

35,738255 19,463087 43,456376 25,838926 31,711409 15,604027 28,63535

31,711409 18,959732 43,288591 21,476510 26,677852 13,590604 25,95078

32,046980 18,288591 42,617450 21,979866 28,355705 12,248322 25,92282

33,389262 18,456376 42,785235 21,308725 29,530201 13,590604 26,51007

33,892617 18,791946 43,791946 21,644295 31,208054 14,932886 27,37696

39,193729 29,227324 47,368421 38,297872 33,706607 19,932811 34,62113

34,826428 27,323628 44,008959 36,170213 32,362822 19,708847 32,40015

34,714446 26,539754 42,553191 36,730123 32,138858 20,492721 32,19485

36,618141 25,643897 41,881299 38,857783 32,810750 20,940649 32,79209

35,946249 26,427772 42,441209 40,537514 31,466965 22,844345 33,27734

37,024609 31,991051 46,196868 33,892617 40,604027 25,950783 35,94333

35,234899 30,648770 46,085011 31,991051 38,143177 23,154362 34,20955

37,024609 30,425056 44,630872 31,991051 38,814318 22,371365 34,20955

36,017897 29,418345 43,400447 32,438479 38,590604 22,706935 33,76212

36,129754 29,865772 42,170022 32,102908 39,038031 24,832215 34,02312

38,684020 26,223186 42,709087 32,513859 33,598457 20,245842 32,32908

35,189202 25,307303 41,769101 29,404676 30,971318 18,582791 30,20407

35,189202 25,114485 40,347072 29,693902 31,140034 18,365871 29,97509

36,900458 24,487828 40,178356 30,320559 31,549771 19,185346 30,43705

36,707640 24,921668 40,612196 30,778501 32,031815 20,149434 30,86688

36,35429 24,86684 41,24013 30,10112 31,72268 19,01769

FT 34,42953

FT

30,76243

26,59955

31,57492

26,87919

33,05711

FA

TRAININGPLP

FANSTEFSFNFE

FANSTE

FA

FE

FN

FS

T

E

S

T

Page 201: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 187

Observando las tablas por columnas podemos realizar los siguientes

comentarios:

Si entrenamos al segmentador con voz neutra, los conjuntos de

frases con voz alegre serán los mejor segmentados (28.41% de

error para MFCC y 31.99% para PLP), mientras que las voces de

sorpresa y tristeza serán las peor segmentadas en MFCC (en el

entorno del 38%), y neutra y tristeza serán las peores en PLP (con

más del 42%).

Entrenando con voz alegre, las frases neutras serán las mejor

segmentadas con bastante diferencia (25.84% para MFCC y

31.71% para PLP), mientras que el resto de voces presentan tasas

de error muy parecidas, entre el 31-37% para MFCC y 33-38%

para PLP, con la particularidad de que en ambas técnicas la voz

peor segmentada será precisamente la alegre (37.47% y 38.37%

de error, respectivamente).

La voz enfadada como entrenamiento segmenta muy bien la voz

neutra (19.97% de error para MFCC y 18.29% para PLP) y la voz

alegre (19.91% y 18.90% respectivamente), mientras que a la voz

triste será a la que peor segmente (31.66% y 29.42%).

Empleando la voz de sorpresa como entrenamiento también

segmentaremos bien la voz neutra (23.49% de error para MFCC y

21.31% para PLP) y la voz alegre (28.41% y 23.27%

respectivamente), pero precisamente la voz sorprendida será la

peor segmentada (43.45% y 36.17% de error).

Page 202: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 188

Entrenando con voz triste la voz mejor segmentada será la alegre

(24.61% para MFCC y 25.28% para PLP), mientras que

precisamente la voz triste será la peor segmentada (38.93% y

38.14%).

Por último, si empleamos como grupo de entrenamiento todas las

frases con las cinco emociones, vemos que la voz neutra es la

mejor segmentada (14.43% y 12.25%), seguida de la alegre, la

enfadada, la sorprendida, y en último lugar la triste (23.60% y

22.37%).

Considerando los valores medios podemos encontrar una posible

explicación al hecho de que en ocasiones un tipo de emoción segmente

mejor a otras que a sí misma, que es lo que a priori podríamos haber

pensado. Y es que, en media, las voces neutra (con 26.31% de error

para MFCC y 26.88% para PLP) y alegre (26.91% y 26.60%) se dejan

segmentar, por decirlo de alguna manera, de mejor forma que lo hacen

las voces de enfado, sorpresa y tristeza, por ese orden. Es decir, la

emoción mejor segmentada no depende tanto del tipo de emoción con

que entrenemos al segmentador, como de las propias características de

esa emoción, que la hacen de algún modo mejor o peor "segmentable".

Llegados a este punto queda preguntarnos cuál sería entonces el mejor

tipo de voz con el que entrenar a nuestro segmentador según el tipo de

voz que queramos segmentar. A la respuesta podemos llegar observando

la tabla por filas en lugar de por columnas. De esta manera vemos que:

El mejor resultado para todas las evaluaciones lo obtenemos

entrenando con el conjunto completo de frases, algo que en

principio podría parecer obvio porque la cantidad de muestras

Page 203: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 189

que utilizamos para entrenar es cinco veces la que tenemos si

utilizamos una sola emoción. La diferencia con respecto a

entrenar con la mejor emoción suelta es significativa, al estar

muy por debajo los intervalos de confianza para el entrenamiento

con todas las frases, [18.44, 20.80] para MFCC y [17.85, 20.18]

para PLP, frente a los intervalos que presenta el entrenamiento

con una sola emoción, [25.11, 27.72] para MFCC y [23.58, 26.15]

para PLP.

Pero si sólo quisiéramos entrenar con una emoción en lugar del

conjunto completo de frases, ¿cuál debería ser la emoción elegida

si no conocemos qué tipo de emoción será la predominante en las

locuciones que queremos segmentar? En este caso, vemos que la

voz de enfado es la que consigue mejores resultados de

segmentación para todos los casos y en ambas técnicas, por lo

que, de querer entrenar con una sola emoción, ésta debería ser la

elegida. El valor medio de la tasa de error que conseguiríamos

sería del 26.42% con MFCC y del 24.87% con PLP.

El segundo, tercer y cuarto puesto como mejores emociones de

entrenamiento depende de la técnica empleada. En MFCC

después de la voz de enfado irán, por este orden, la tristeza, la

alegría y la sorpresa. Sus tasas medias de error son del 31.45%,

33.92% y 34.02%, respectivamente. En PLP el orden será

sorpresa (30.10%), tristeza (31.72%) y alegría (36.35%).

Por último, y fuera de la voz expresiva, la voz neutra consigue aún

peores resultados de segmentación en todos los casos, con una

tasa media de error del 35.85% para MFCC y del 41.24% para

PLP. Es decir, para segmentar frases con emoción es mejor

Page 204: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 190

entrenar el segmentador con frases también con emoción que

entrenarlo con frases neutras.

Una vez estudiado el caso de las frases veremos si el experimento con

párrafos nos lleva a las mismas conclusiones o si se producen cambios

en las mismas:

TIPO BASE: mfcc

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SES

11,348123 42,406143 31,825939 37,798635 10,153584 9,044369 23,7628

7,764505 32,593857 20,392491 13,054608 8,361775 7,593857 14,96018

6,996587 20,477816 17,235495 9,470990 7,423208 7,252560 11,47611

6,996587 11,604096 16,382253 9,641638 7,252560 7,593857 9,911832

6,655290 11,348123 16,467577 9,812287 6,143345 8,276451 9,783846

10,623354 44,161545 31,957858 38,015803 7,638279 7,550483 23,32455

6,409131 31,431080 18,876207 13,345040 6,145742 5,882353 13,68159

5,794557 19,227392 15,364355 7,813872 5,004390 5,706760 9,818554

6,584723 10,711150 14,661984 8,516242 5,443371 6,057946 8,662569

6,760316 9,920983 15,276558 8,604039 5,092186 6,496927 8,691835

13,002566 44,739093 34,644996 39,178785 11,120616 8,896493 25,26376

9,409752 34,046193 23,182207 13,002566 8,383234 7,527802 15,92529

8,810950 21,129170 19,076133 10,008554 8,126604 7,185629 12,38951

7,442258 12,147134 17,621899 9,409752 7,955518 7,613345 10,36498

7,613345 11,462789 18,562874 10,350727 7,784431 7,442258 10,53607

21,344538 57,394958 41,680672 46,302521 16,554622 14,033613 32,88515

13,697479 38,571429 29,495798 24,453782 13,781513 11,512605 21,91877

13,277311 27,394958 23,865546 19,747899 14,117647 11,176471 18,26331

14,453782 17,394958 23,781513 18,151261 13,277311 12,689076 16,62465

14,537815 16,134454 22,941176 16,470588 13,109244 13,529412 16,12045

14,132762 47,237687 35,074946 40,364026 11,413276 9,914347 26,35617

9,357602 34,197002 23,040685 16,017131 9,207709 8,158458 16,6631

8,758030 22,098501 18,929336 11,820128 8,715203 7,858672 13,02998

8,907923 12,997859 18,158458 11,477516 8,522484 8,522484 11,43112

8,929336 12,248394 18,351178 11,349036 8,072805 8,972163 11,32049

9,984345 25,72307 22,67393 18,1671 9,152026 8,659536

MFCCTRAINING

R_A R_E R_N R_S R_T R_ANSTE

T

E

S

T

RA 13,97895

RN 12,83582

RANST 15,76017

RS 14,89592

RT 21,16247

Page 205: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 191

TIPO BASE: plp

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SES

11,945392 38,139932 29,948805 15,443686 9,897611 8,361775 18,9562

6,911263 10,580205 16,211604 6,996587 7,252560 7,167235 9,186576

7,167235 9,641638 13,481229 7,508532 7,081911 6,996587 8,646189

6,655290 9,556314 13,566553 7,764505 7,081911 6,996587 8,603527

6,058020 9,556314 13,054608 7,849829 7,081911 7,679181 8,546644

12,028095 39,859526 26,777875 14,135206 7,813872 6,584723 17,86655

6,145742 8,779631 14,574188 6,321335 6,321335 4,828797 7,828505

5,092186 8,165057 11,501317 5,267779 6,672520 4,741001 6,906643

5,355575 7,638279 11,676910 5,267779 5,618964 4,916594 6,745684

5,882353 7,813872 11,237928 6,057946 5,618964 4,653205 6,877378

14,200171 37,639008 31,479897 15,568862 11,548332 8,896493 19,88879

8,468777 9,153122 19,161677 7,185629 8,896493 7,014542 9,98004

8,041061 9,153122 17,194183 7,271172 8,810950 7,014542 9,580838

8,383234 9,067579 16,595381 7,356715 8,468777 6,415740 9,381238

7,698888 9,153122 15,911035 7,784431 8,383234 7,014542 9,324209

22,773109 50,252101 39,747899 24,117647 16,638655 15,378151 28,15126

14,369748 16,470588 25,882353 14,453782 12,941176 12,184874 16,05042

14,453782 14,957983 23,109244 13,613445 12,941176 11,596639 15,11204

14,369748 15,126050 22,436975 13,949580 13,865546 11,932773 15,28011

13,949580 15,462185 21,344538 14,621849 13,613445 11,680672 15,11204

15,289079 41,520343 32,055675 17,366167 11,520343 9,850107 21,26695

9,014989 11,284797 19,014989 8,779443 8,886510 7,837259 10,803

8,736617 10,513919 16,381156 8,458244 8,907923 7,623126 10,1035

8,736617 10,385439 16,124197 8,629550 8,800857 7,601713 10,0464

8,436831 10,535332 15,438972 9,122056 8,715203 7,794433 10,00714

10,00654 16,81622 19,75637 10,43567 9,335207 8,110452

PLPTRAINING

RN 9,244952

R_A R_E R_N R_S R_T R_ANSTE

RT 17,94118

T

E

S

T

RA 10,78783

RANST 12,4454

RS 11,63102

Page 206: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 192

Observando las tablas por columnas podemos realizar los siguientes

comentarios:

Entrenando al segmentador con un sólo conjunto de voces vemos

que los resultados son bastante uniformes: la voz neutra es

siempre la mejor segmentada, llegando a alcanzar un error

mínimo del 5% cuando se entrena con voces tristes en MFCC. La

segunda voz mejor segmentada en todos los casos es la alegre,

seguida de cerca por la sorprendida. La peor segmentada en todos

los casos es la voz triste.

Esto nos lleva a la misma conclusión de antes, esto es, la emoción

mejor segmentada no depende tanto del tipo de emoción con que

entrenemos al segmentador, como de las propias características

de esa emoción, que la hacen de algún modo mejor o peor

"segmentable".

De nuevo podríamos preguntarnos ahora cuál sería entonces el mejor

tipo de voz con el que entrenar a nuestro segmentador según el tipo de

voz que queramos segmentar. Observando de nuevo la tabla por filas en

lugar de por columnas, vemos que:

El mejor resultado para todas las evaluaciones lo obtenemos

entrenando con el conjunto completo de frases, algo que en

principio podría parecer obvio porque la cantidad de muestras

que utilizamos para entrenar es cinco veces la que tenemos si

utilizamos una sola emoción. No obstante, ahora la diferencia con

respecto a entrenar con la mejor emoción suelta no es

significativa con MFCC, al ser el extremo superior del intervalo de

confianza para el entrenamiento con todas las frases, [8.32, 9.00],

Page 207: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 193

mayor que el extremo inferior del intervalo que presenta el

entrenamiento con una sola emoción, [8.56, 9.74]. Para PLP, en

cambio, la diferencia sí es significativa, teniendo un intervalo de

confianza de [7.78, 8.44] para el entrenamiento con todas las

frases, y de [8.74, 9.93] para el entrenamiento con la mejor

emoción.

Pero si sólo quisiéramos entrenar con una emoción en lugar del

conjunto completo de frases, ¿cuál debería ser la emoción elegida

si no conocemos qué tipo de emoción será la predominante en las

locuciones que queremos segmentar? En este caso, vemos que la

voz de tristeza es la que consigue mejores resultados de

segmentación en media en ambas técnicas, por lo que, de querer

entrenar con una sola emoción, ésta debería ser la elegida. El

valor medio de la tasa de error que conseguiríamos sería del

9.15% con MFCC y del 9.33% con PLP.

La voz alegre consigue también muy buenos resultados de

segmentación en ambas técnicas, sobre todo en PLP, donde

supera a la voz triste en determinados números de gaussianas.

Sus tasas medias de error son del 9.98% con MFCC y 10% con

PLP.

De nuevo la voz neutra es la que consigue peores resultados de

segmentación en todos los casos, con una tasa media de error del

22.67% para MFCC y del 19.76% para PLP. Es decir,

confirmamos la idea de que para segmentar frases con emoción es

mejor entrenar el segmentador con frases también con emoción

que entrenarlo con frases neutras.

Page 208: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 194

8.6 SEGMENTACIÓN CON NORMALIZACIÓN

CEPSTRAL

En el capítulo de herramientas explicamos la normalización cepstral, y

en el dedicado a los scripts del programa vimos cómo podíamos realizar

normalización cepstral de la media y la varianza en nuestros

experimentos. Veamos ahora cómo afecta a los resultados de

segmentación realizar dicha normalización. Para ello realizaremos

nuestro experimento habitual con los grupos de coeficientes _0, _0_D_A,

_E y _E_D_A añadiéndoles normalización cepstral de la media y la

varianza. Para ello añadimos el coeficiente _Z y el indicador _cmn_cvn.

Los resultados obtenidos son los siguientes:

Page 209: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 195

TIPO BASE: mfcc (Primera tabla); plp (segunda tabla)

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

BASE DE DATOS: SES

LOCUCIONES: FANSTE FANSTE 1

26,5

45280

20,4

59990

27,2

40057

20,8

43316

26,7

12985

21,7

29756

26,7

84859

21,6

09966

224,0

77623

18,4

23575

25,0

59895

18,9

74605

24,3

17202

18,8

06900

24,4

13033

18,7

35026

323,6

22425

18,5

43364

24,3

89075

19,1

42310

24,3

17202

19,7

17298

24,4

60949

19,3

33972

423,1

19310

19,6

45424

24,1

25539

19,9

56876

24,4

84907

20,5

55822

24,0

05750

19,9

80834

523,8

85961

19,5

97508

24,1

25539

20,4

83948

24,4

13033

21,2

26641

24,0

53666

20,7

47484

24,2

50120

19,3

33972

24,9

88021

19,8

80211

24,8

49066

20,4

07283

24,7

43651

20,0

81456

127,2

59581

19,9

08412

27,6

21114

20,2

45842

25,9

58062

20,8

96602

26,3

67799

21,7

64281

225,2

59099

18,3

89973

25,1

14485

18,5

82791

24,6

08339

18,4

38178

24,7

04748

19,7

87901

323,9

57580

18,9

44324

23,7

40660

18,3

65871

23,9

81682

18,4

86382

24,3

43215

19,8

60207

423,2

82719

19,6

43288

22,7

04266

19,1

85346

23,5

71945

19,7

63799

24,4

39624

20,1

73536

523,1

86310

20,1

25331

22,8

48879

20,1

49434

23,3

55025

20,5

10966

24,2

70909

20,5

10966

24,5

89058

19,4

02266

24,4

05881

19,3

05857

24,2

95011

19,6

19185

24,8

25259

20,4

19378

PLP

_0

_0_D

_A

G A U S S I A N A S

_E

_E

_D

_A

SIN

NO

RM

AL

IZA

CIÓ

N C

EP

ST

RA

L (

_)

_0_Z

CO

N N

OR

MA

LIZ

AC

IÓN

CE

PS

TR

AL

(_

cm

n_

cvn

)

_0_D

_A

_Z

_E

_Z

_E

_D

_A

_Z

MF

CC

_0

_0_D

_A

G A U S S I A N A S

_E

_E

_D

_A

SIN

NO

RM

AL

IZA

CIÓ

N C

EP

ST

RA

L (

_)

_0_Z

CO

N N

OR

MA

LIZ

AC

IÓN

CE

PS

TR

AL

(_

cm

n_

cvn

)

_0_D

_A

_Z

_E

_Z

_E

_D

_A

_Z

Page 210: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 196

TIPO BASE: mfcc (Primera tabla); plp (segunda tabla)

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

BASE DE DATOS: SES

LOCUCIONES: FANSTE R_ANSTE - RANST

112,0

55675

8,6

29550

12,2

05567

8,8

22270

10,9

85011

8,6

08137

11,1

13490

8,8

43683

210,9

20771

7,7

94433

11,0

92077

8,1

79872

9,6

57388

7,8

58672

9,9

78587

8,2

44111

310,5

35332

7,8

37259

10,4

28266

8,1

15632

8,7

79443

7,7

51606

9,2

50535

8,0

29979

410,3

42612

7,7

94433

10,5

13919

8,0

29979

8,8

22270

7,7

30193

9,0

14989

7,8

58672

510,3

64026

8,2

86938

10,1

28480

8,0

08565

8,8

00857

7,7

94433

8,9

50749

8,2

44111

10,8

43683

8,0

68523

10,8

73662

8,2

31264

9,4

08994

7,9

48608

9,6

61670

8,2

44111

110,8

77944

8,5

01071

11,0

06424

8,5

01071

10,4

71092

8,4

58244

10,7

28051

8,4

79657

210,2

35546

7,4

30407

10,6

42398

7,6

01713

9,8

07281

7,6

65953

10,1

28480

7,7

73019

310,3

64026

7,7

51606

10,6

20985

7,6

87366

9,5

07495

7,2

80514

9,3

36188

7,6

44540

410,1

28480

7,6

65953

10,0

00000

7,7

30193

9,1

86296

7,1

30621

9,0

36403

7,3

01927

59,9

57173

7,6

44540

9,6

78801

7,9

22912

8,8

65096

7,2

59101

9,0

57816

7,8

37259

10,3

12634

7,7

98715

10,3

89722

7,8

88651

9,5

67452

7,5

58887

9,6

57388

7,8

07280

_0_D

_A

_Z

_E

_Z

_E

_D

_A

_Z

G A U S S I A N A S

_E

_D

_A

_Z

G A U S S I A N A S

PLP

SIN

NO

RM

AL

IZA

CIÓ

N C

EP

ST

RA

L (

_)

CO

N N

OR

MA

LIZ

AC

IÓN

CE

PS

TR

AL

(_

cm

n_

cvn

)

_0

_0_D

_A

_E

_E

_D

_A

_0_Z

MF

CC

SIN

NO

RM

AL

IZA

CIÓ

N C

EP

ST

RA

L (

_)

CO

N N

OR

MA

LIZ

AC

IÓN

CE

PS

TR

AL

(_

cm

n_

cvn

)

_0

_0_D

_A

_E

_E

_D

_A

_0_Z

_0_D

_A

_Z

_E

_Z

Page 211: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 197

En el experimento con frases la diferencia en los resultados de

segmentación al añadir la normalización cepstral es la siguiente:

_0 _0_D_A _E _E_D_A

-0,167705 -1,269766 0,455198 -0,766650

-0,239579 -0,383325 0,646862 0,239579

-0,694777 -1,173934 -0,071874 -0,191662

-1,365597 -0,910398 0,119789 -0,023958

-0,527072 -1,629133 0,071873 -0,263536

MFCC

_0 _0_D_A _E _E_D_A

1,301519 -0,988190 1,253315 -1,518439

0,650760 -0,048205 0,409737 -1,205110

-0,024102 0,457942 -0,602555 -1,494336

-0,289226 -0,120511 -1,735358 -0,988190

-0,168715 -0,385635 -1,422030 -0,361532

PLP

Mientras que en el experimento con párrafos la diferencia es:

_0 _0_D_A _E _E_D_A

1,070664 0,021413 1,092077 -0,021413

1,263383 -0,064239 1,113490 -0,064239

1,755889 0,085653 1,177731 0,085653

1,520342 0,064240 1,498930 0,171307

1,563169 0,492505 1,177731 -0,235546

MFCC

_0 _0_D_A _E _E_D_A

0,406852 0,042827 0,278373 0,021414

0,428265 -0,235546 0,513918 -0,171306

0,856531 0,471092 1,284797 0,042826

0,942184 0,535332 0,963597 0,428266

1,092077 0,385439 0,620985 0,085653

PLP

Por lo que se puede observar, la normalización cepstral sienta peor al

experimento con frases, lo que puede ser debido al menor número de

datos del que se dispone para realizar el entrenamiento y la evaluación.

En cambio con los párrafos, donde contamos con un cuerpo de datos

más amplio, la normalización mejora los resultados salvo determinadas

excepciones. En el caso de experimentos realizados solamente con

coeficientes estáticos (y con el coeficiente extra _0 o _E) la mejora se

produce en todos los casos, siendo más acusada con la técnica MFCC

que con la PLP. Cuando se utilizan coeficientes derivados la

Page 212: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 198

normalización produce peores resultados con 2 gaussianas, y en el caso

de _E_D_A con MFCC también con 1 y 5 mezclas. En el resto de casos

se producen leves mejoras, que en sólo un par de casos llegan al medio

punto.

8.7 VARIACIÓN DEL NÚMERO DE CANALES

En este experimento y los dos siguientes probaremos a realizar los

experimentos dando diferentes valores a algunas de las variables

definidas en los ficheros de configuración, para ver cómo afecta a la

segmentación conseguida por nuestro sistema. Empezamos por el

número de canales utilizados para el análisis por bancos de filtros. Para

ello damos diferentes valores a la variable NUMCHANS en los ficheros de

configuración config_hcopy_SES_mfcc_ y config_hcopy_SES_plp_ y

obtenemos los siguientes resultados:

Page 213: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 199

TIPO BASE: mfcc (Primera tabla); plp (segunda tabla)

COEFICIENTES: _E_D_A (39)

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

BASE DE DATOS: SES

LOCUCIONES: FANSTE R_ANSTE - RANST

18,950749 8,822270 8,608137 8,372591 8,608137 8,693790 8,843683 8,672377 8,822270

28,029979 7,837259 7,901499 7,794433 7,815846 7,944325 8,094218 8,137045 8,179872

37,623126 7,794433 7,880086 7,922912 8,051392 7,773019 7,965739 7,773019 8,115632

47,366167 7,516060 7,623126 7,366167 7,173448 7,751606 7,687366 7,644540 8,029979

57,537473 7,558887 7,944325 7,665953 7,708779 7,901499 7,922912 7,858672 8,008565

7,901499 7,905782 7,991435 7,824411 7,871520 8,012848 8,102784 8,017131 8,231264

19,014989 8,672377 8,629550 8,501071 8,394004 8,415418 8,394004 8,286938 8,265525

28,650964 7,773019 7,408994 7,601713 7,494647 7,751606 7,687366 7,773019 7,751606

37,773019 7,152034 7,430407 7,687366 7,537473 7,773019 7,751606 7,580300 7,537473

47,794433 7,044968 7,494647 7,730193 7,537473 7,922912 7,901499 7,837259 7,665953

58,029979 7,665953 7,387580 7,922912 7,730193 7,773019 7,965739 7,773019 8,008565

8,252677 7,661670 7,670236 7,888651 7,738758 7,927195 7,940043 7,850107 7,845824

PLP12 16

MFCC12 16

G

A

U

S

S

I

A

N

A

S

20 24 26 30 32

G

A

U

S

S

I

A

N

A

S

20 24 26 30

4036

36

NÚMERO DE CANALES

NÚMERO DE CANALES

32 40

En la técnica MFCC, con 3 y 5 gaussianas los mejores resultados los

obtenemos con 12 canales, mientras que para conseguir los mejores

resultados con 1 y 2 gaussianas tendríamos que doblar el número de

canales hasta 24. No obstante, el mejor dato se obtiene con 4

gaussianas y 26 canales, donde conseguimos un error mínimo del

7.17%.

Un número muy alto de canales sólo funciona con la técnica PLP y 1

sola gaussiana; para más de 1 gaussiana el número óptimo de canales

Page 214: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 200

estará entre 16 y 20; el mejor dato lo conseguimos con 4 gaussianas y

16 canales, donde el error se ve reducido hasta el 7.04%.

8.8 VARIACIÓN DEL DESPLAZAMIENTO DE

TRAMAS Y DEL TAMAÑO DE LA VENTANA DE

ANÁLISIS

Ahora probamos a cambiar la forma en la que se toman los vectores de

parámetros a partir de la señal de audio, por medio de la variación de

dos variables que vimos en el capítulo de Herramientas:

el desplazamiento de tramas, es decir, la distancia entre donde

empieza a considerarse el primer vector y donde empieza a

considerarse el segundo, que en los ficheros de configuración

viene definido por la variable TARGETRATE, y

el tamaño de la ventana de análisis, es decir, el tamaño del

segmento de la forma de onda de la señal original que será

considerado para determinar cada vector de parámetros, y que en

los ficheros de configuración viene definido por la variable

WINDOWSIZE.

En nuestro sistema por defecto hemos venido empleando siempre un

desplazamiento de tramas de 10 ms, y un tamaño de ventana de 25 ms,

de manera que cada ventana se solapa con la anterior y la siguiente.

Dado que la unidad en HTK son 100 ns, estas dos variables vienen

definidas en los ficheros de configuración como:

TARGETRATE = 100000

WINDOWSIZE = 250000

Page 215: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 201

Conservando la misma lógica de solapamiento de ventanas, probamos a

multiplicar ambos valores por 0.5 y por 1.5 para ver cómo una

disminución o un aumento de los mismos afecta a la segmentación.

Obtenemos los siguientes datos de evaluación:

TIPO BASE: mfcc (Primera tabla); plp (segunda tabla)

COEFICIENTES: _E_D_A (39)

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

BASE DE DATOS: SES

LOCUCIONES: FANSTE R_ANSTE - RANST

12,055675 8,822270 43,829787

10,813704 8,179872 43,226950

10,813704 8,115632 44,539007

11,092077 8,029979 44,361702

10,235546 8,008565 45,035461

11,002141 8,231264 44,198581

11,627409 8,501071 42,943262

10,835118 7,601713 42,730496

10,663812 7,687366 42,765957

10,835118 7,730193 42,730496

9,871520 7,922912 43,404255

10,766595 7,888651 42,914893

PLPTAMAÑO DE LA VENTANA 12.5 ms

MFCCTAMAÑO DE LA VENTANA 12.5 ms

G

A

U

S

S

I

A

N

A

S

25 ms 32.5 ms

G

A

U

S

S

I

A

N

A

S

25 ms 32.5 ms

4

5

2

3

4

5

DESPLAZAMIENTO DE TRAMAS

DESPLAZAMIENTO DE TRAMAS 5 ms 10 ms 15 ms

1

10 ms 15 ms

1

2

3

5 ms

Page 216: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 202

Hemos realizado este experimento con sólo un dato por arriba y uno por

abajo del empleado de manera habitual porque desplazamientos y

tamaños de ventana más pequeños arrojaban errores de memoria, y

mayores daban errores de procesamiento. No obstante con estos datos

nos es suficiente para ver que obtenemos peores resultados de

segmentación tanto si disminuimos como si aumentamos ambas

variables (siendo el error mucho mayor al aumentarlos), por lo que

podemos considerar óptimos el desplazamiento de 10 ms y el tamaño de

ventana de 25 ms que hemos venido empleando (y que, por otra parte,

suelen ser los valores más aceptados en todos los sistemas de

reconocimiento y segmentación consultados).

Estudiando los intervalos de confianza vemos que la diferencia entre los

errores medios del experimento con 10 y 25 ms y los del experimento

con 5 y 12.5 ms es significativa, al estar situadas las bandas del

primero (MFCC: [7.92, 8.54], PLP: [7.59, 8.19]) muy por debajo de las

del segundo (MFCC: [10.65, 11.35], PLP: [10.42, 11.12]).

Para ahondar un poco más en el resultado obtenido con un

desplazamiento de tramas menor, estudiamos el número de errores

cometidos por la segmentación automática y la desviación media de los

errores. Fijándonos por ejemplo en el dato de MFCC para 4 gaussianas,

que arroja una diferencia de dos puntos porcentuales al disminuir el

desplazamiento y el tamaño de ventana, estudiando los ficheros de

resultados y descomponiéndolos llegamos al siguiente resumen de

cálculos:

Page 217: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 203

DESPLAZAMIENTO 10 ms 5 ms

TAMAÑO VENTANA 25 ms 12.5 ms

INSTANCIAS 4670 4670

ERRORES 375 518

PORCENTAJE DE ERROR 8,029979% 11,092077%

DESV.M. (ms) 39,53749606 34,47562487

DESV.M. SIN V.A. (ms) 33,66866165 31,37126727

En la primera fila indicamos el número de instancias de transición

entre fonemas que se encuentran en los ficheros segmentados, y en la

siguiente el número de instancias que presentan error para cada

desplazamiento y tamaño de ventana. Entendemos como siempre que

una instancia ha resultado errónea cuando la frontera entre los dos

fonemas indicada por el segmentador automático se aleja más de 20 ms

de la frontera marcada en los ficheros de control (segmentados

manualmente). La siguiente fila indica el cociente de los dos datos

anteriores, es decir, el porcentaje de error que indicábamos en la

primera tabla. A continuación hemos calculado la desviación media en

ms de las instancias que presentaban error, y dado que en ambos casos

había un número pequeño de valores atípicos (valores muy altos de

desviación) que pueden falsear la media, hemos calculado también la

desviación media excluyendo un 1.35% de los valores extremos de la

muestra, obteniendo el dato de desviación media sin valores atípicos

que apuntamos en la última fila.

El resultado es interesante, ya que observamos que, en efecto, al

disminuir el desplazamiento de tramas y el tamaño de ventana el

número de errores es un 38% mayor, empeorando el porcentaje de error

al pasar del 8.03% al 11.09%; pero al mismo tiempo la desviación media

de los errores ha bajado más de 5 ms, al pasar de 39.54 a 34.48 ms.

Esta bajada también se da si no tenemos en cuenta los valores

Page 218: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 204

extremos, al pasar la desviación media de 33.67 a 31.37 ms (más de 2

ms). Es decir, al disminuir el desplazamiento de tramas y el tamaño de

ventana a la mitad se mejora la desviación media de las fronteras

marcadas incorrectamente por el segmentador con respecto a las reales,

pero al mismo tiempo aumenta el número de desviaciones mayores de

20 ms, lo que hace que aumente el porcentaje de error de la

segmentación efectuada.

8.9 INCLUSIÓN DE FILTRADO

Hasta ahora hemos estado trabajando en todo el dominio de la

frecuencia, sin imponer límites superiores ni inferiores. Puede ser

interesante introducir filtros y observar cómo se comporta el

segmentador. HTK nos permite hacerlo mediante las variables LOFREQ

y HIFREQ en los ficheros de configuración. Introducimos primero un

filtro paso banda que elimine las frecuencias muy altas y las muy bajas,

digamos entre 125 y 7800 Hz. Con estos datos introduciremos también

sus respectivos filtros paso bajo y paso alto.

Más interesante aún será introducir un filtro que simule el canal

telefónico, de esta manera podremos observar cómo se comportaría el

segmentador si las locuciones hubieran sido grabadas por teléfono. Una

buena manera de simular dicho canal sería con un filtro de entre 300 y

3400 Hz. Al igual que antes, estudiaremos también el filtro paso bajo y

el filtro paso alto de ambas frecuencias. Los datos resultan ser:

Page 219: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 205

TIPO BASE: mfcc (Primera tabla); plp (segunda tabla)

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

BASE DE DATOS: SES

LOCUCIONES: FANSTE R_ANSTE - RANST

18,822270 9,100642 8,993576 8,715203 10,963597 13,019272 9,336188

28,179872 8,029979 8,051392 8,051392 10,064240 12,976445 8,800857

38,115632 7,858672 7,730193 7,837259 9,850107 12,248394 8,800857

48,029979 7,987152 7,665953 7,944325 9,550321 11,927195 8,993576

58,008565 8,372591 8,137045 7,730193 9,571734 11,563169 8,693790

8,231264 8,269807 8,115632 8,055674 10,000000 12,346895 8,925054

18,501071 9,122056 9,122056 8,415418 10,556745 13,233405 9,764454

27,601713 8,158458 8,286938 7,858672 10,449679 11,905782 9,271949

37,687366 7,815846 7,751606 7,494647 9,850107 11,541756 8,736617

47,730193 7,708779 7,837259 7,794433 9,850107 10,792291 8,629550

57,922912 8,051392 8,265525 8,008565 10,235546 10,578158 8,779443

7,888651 8,171306 8,252677 7,914347 10,188437 11,610278 9,036403

FILTRADO

FILTRADO

LOFREQ = 300

HIFREQ = 3400

-

HIFREQ = 3400

G

A

U

S

S

I

A

N

A

S

-

HIFREQ = 3400

G

A

U

S

S

I

A

N

A

S

PLPSIN FILTRO

LOFREQ = 125

-

LOFREQ = 125

HIFREQ = 7800

-

HIFREQ = 7800

LOFREQ = 300

-

MFCCSIN FILTRO

LOFREQ = 125

-

LOFREQ = 125

HIFREQ = 7800

-

HIFREQ = 7800

LOFREQ = 300

-

LOFREQ = 300

HIFREQ = 3400

Si calculamos las diferencias entre las tasas de error del experimento

normal y el experimento con los distintos filtros, tendremos:

Page 220: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 206

-0,278372 -0,171306 0,107067 -2,141327 -4,197002 -0,513918

0,149893 0,128480 0,128480 -1,884368 -4,796573 -0,620985

0,256960 0,385439 0,278373 -1,734475 -4,132762 -0,685225

0,042827 0,364026 0,085654 -1,520342 -3,897216 -0,963597

-0,364026 -0,128480 0,278372 -1,563169 -3,554604 -0,685225

-0,620985 -0,620985 0,085653 -2,055674 -4,732334 -1,263383

-0,556745 -0,685225 -0,256959 -2,847966 -4,304069 -1,670236

-0,128480 -0,064240 0,192719 -2,162741 -3,854390 -1,049251

0,021414 -0,107066 -0,064240 -2,119914 -3,062098 -0,899357

-0,128480 -0,342613 -0,085653 -2,312634 -2,655246 -0,856531

LOFREQ = 300

HIFREQ = 3400

-

HIFREQ = 3400

MFCC

PLP

LOFREQ = 125

-

LOFREQ = 125

HIFREQ = 7800

-

HIFREQ = 7800

LOFREQ = 300

-

LOFREQ = 300

HIFREQ = 3400

-

HIFREQ = 3400

LOFREQ = 125

-

LOFREQ = 125

HIFREQ = 7800

-

HIFREQ = 7800

LOFREQ = 300

-

De este modo vemos que tan sólo la inclusión del filtro paso bajo con

frecuencia de corte superior a 7800 Hz parece mejorar un poco los

resultados del segmentador para la técnica MFCC y en dos casos de la

técnica PLP (1 y 3 gaussianas). En MFCC introducir además una

frecuencia de corte inferior a 125 Hz mejora los resultados con entre 2 y

4 gaussianas.

En cuanto al canal telefónico, el empeoramiento en el rendimiento del

segmentador es de entre 2.65 y 4.8 puntos porcentuales. Además

podemos observar que hay mucha más información en la señal de voz a

Page 221: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 207

menos de 300 Hz que en la banda de 3400 Hz para arriba, ya que al

filtrar por encima de esta frecuencia el rendimiento se verá empeorado

entre 0.51 y 1.67 puntos, mientras que al filtrar por debajo de los 300

Hz el empeoramiento será aún más acentuado, entre 1.52 y 2.85

puntos porcentuales.

8.10 DETERMINACIÓN DEL NÚMERO ÓPTIMO DE

ESTADOS, ITERACIONES Y GAUSSIANAS CON SEV

Hasta ahora hemos desarrollado experimentos con la base de datos

SES. A partir de ahora comenzaremos a utilizar la base de datos SEV,

que fue descrita en su capítulo correspondiente, para evaluar el

rendimiento de nuestro segmentador con dicha base de datos. Vamos a

utilizar las locuciones de la locutora femenina (Rosa), de las cuales

disponemos de un subconjunto de locuciones segmentadas

manualmente. Comenzamos por el experimento en que tratamos de

determinar el número óptimo de los estados, iteraciones y gaussianas,

tal y como hicimos con SES en el apartado 8.2. Los resultados

obtenidos con SEV-Rosa son los siguientes:

Page 222: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 208

TIPO BASE: mfcc

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SEV

LOCUCIONES: FPQ_ANSTECM - FPQ_ANSTECM

1 87,626515 21,582324

2 49,878831

3 28,752673

4 22,851033

5 21,496793

1 50,677120

2 22,665716 19,885959

3 21,040627

4 20,313614

5 20,042766

1 37,947256 30,363507

2 26,500356 20,798289

3 27,298646 20,000000 19,472559

4 27,013542 19,301497

5 27,056308 19,344262

1 27,127584 23,478261

2 22,423378 19,586600

3 21,938703 19,472559

4 21,824661 19,387028 19,472559

5 22,295082 19,501069

1 21,582324 21,582324

2 19,885959 19,885959

3 19,472559 19,472559

4 19,472559 19,472559

5 19,173200 19,173200 19,173200

1 20,057021 21,097648

2 18,346401 19,672131

3 18,061297 19,101924

4 18,118318 19,073414

5 18,474697 19,486814

6 19,244476

1 21,582324 20,898076

2 20,741269 19,515324

3 20,456165 18,916607

4 20,242338 19,101924

5 20,156807 19,201711

6

7 19,372773

1 38,460442 20,755524

2 37,462580 19,372773

3 37,861725 18,973628

4 38,175339 18,802566

5 38,104063 19,187455

6

7

8 19,387028

1 62,355523 20,598717

2 60,907096 19,444048

3 60,512070 18,873842

4 60,790051 18,688525

5 60,614484 19,444048

6

7

8

9 19,401283

1 84,223623 20,612972

2 83,593232 19,558090

3 83,493696 18,973628

4 83,443928 19,130435

5 83,394161 19,586600

6

7

8

9

10 19,657876

MFCC

EXPERIMENTO

GAUSSIANAS

ESTADOS = X

ITERACIONES = 5

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = X

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = 5

GAUSSIANAS = X

X = 10

T

É

R

M

I

N

O

V

A

R

I

A

B

L

E

X = 1

X = 2

X = 3

X = 4

X = 5

X = 6

X = 7

X = 8

X = 9

Page 223: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 209

TIPO BASE: plp

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SEV

LOCUCIONES: FPQ_ANSTECM - FPQ_ANSTECM

1 87,954383 21,596579

2 55,138988

3 32,715609

4 24,461867

5 23,022096

1 55,851746

2 23,891661 20,228083

3 20,684248

4 20,057021

5 19,771917

1 38,132573 32,387741

2 26,657163 20,441910

3 26,115467 19,358517 19,258731

4 25,716322 19,158945

5 25,331433 18,831076

1 24,960798 23,549537

2 22,038489 19,971490

3 21,753386 19,543835

4 21,126158 19,158945 19,173200

5 20,898076 18,788311

1 21,596579 21,596579

2 20,228083 20,228083

3 19,258731 19,258731

4 19,173200 19,173200

5 18,902352 18,902352 18,902352

1 19,657876 20,855310

2 18,731290 19,757662

3 18,189594 19,615110

4 18,203849 19,372773

5 18,175339 19,415538

6 19,287242

1 21,282965 20,598717

2 20,741269 19,429793

3 20,285103 19,002138

4 20,712758 19,258731

5 20,370634 19,287242

6

7 19,073414

1 37,690663 20,555952

2 36,721311 19,158945

3 36,336422 19,144690

4 36,421953 19,572345

5 36,635780 19,230221

6

7

8 18,802566

1 64,608632 20,541696

2 63,716167 19,144690

3 63,745428 19,244476

4 63,613753 19,814683

5 63,584492 19,600855

6

7

8

9 18,617249

1 84,389516 20,555952

2 83,858660 19,101924

3 83,593232 19,643621

4 83,477107 19,657876

5 83,410750 19,415538

6

7

8

9

10 18,503207

PLP

EXPERIMENTO

GAUSSIANAS

ESTADOS = X

ITERACIONES = 5

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = X

GAUSSIANAS = 5

ESTADOS = 5

ITERACIONES = 5

GAUSSIANAS = X

X = 10

T

É

R

M

I

N

O

V

A

R

I

A

B

L

E

X = 1

X = 2

X = 3

X = 4

X = 5

X = 6

X = 7

X = 8

X = 9

Page 224: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 210

Podemos realizar las siguientes observaciones:

Exactamente igual que nos pasaba con la base de datos SES,

utilizando 3 estados con SEV el error obtenido es bastante

elevado, y este porcentaje de error va decreciendo al ir

aumentando el número de estados hasta llegar a 6, donde

encontramos el mínimo error posible. De 7 en adelante el error irá

disparándose con cada estado adicional. Por tanto 6 parece un

número óptimo de estados, combinado con 5 iteraciones y 3-5

gaussianas.

Considerando el número de iteraciones nos ocurre lo mismo que

nos pasaba con SES, es decir, observamos que en ciertas

ocasiones realizar una nueva iteración hace que la tasa de error

aumente, en lugar de disminuir, es decir, parece que el sistema

comienza a particularizar en lugar de generalizar. Y por otra parte

el proceso completo se ralentiza enormemente con cada nueva

iteración que añadimos al mismo, por lo que podríamos

considerar un número óptimo de iteraciones aquella última

iteración que consiga una rebaja considerable de la tasa de error

sin convertir el proceso en demasiado largo. Para ello, calculamos

la mejora marginal de cada iteración, obteniendo lo siguiente:

ITERACIONES MFCC PLP

X=2 1,454027 3,250179

X=3 0,741269 0,940841

X=4 -0,085531 0,042765

X=5 0,213828 -0,114041

X=6 0,099786 -0,470421

X=7 0,156807 0,370635

X=8 0,114041 -0,142552

X=9 0,114041 0,000000

X=10 -0,285103 0,042766

Page 225: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 211

Realizar una segunda iteración nos produciría una mejora de la

tasa de error de un 1.45% y 3.25% dependiendo de la técnica, con

respecto al error obtenido en el experimento sin iteraciones. El

número óptimo de iteraciones según estos datos serían 5 ó 6 con

MFCC, y 4 con PLP, ya que con esta técnica a partir de la quinta

iteración se obtienen datos peores.

Considerando por último el número de gaussianas, vemos que

para MFCC el óptimo se encuentra en 5 mezclas, mientras que en

PLP se encuentra en 10 mezclas (manteniendo, eso sí, constantes

los estados y las iteraciones a 5).

8.11 COMBINACIONES DE COEFICIENTES CON

SEV

Como ya hicimos con SES en el apartado 8.3, vamos a realizar distintas

combinaciones posibles de los coeficientes extra para ver cómo afectan

al resultado obtenido por el segmentador. Los coeficientes que

combinaremos en el experimento son:

Coeficiente Cepstral cero: _0

Energía: _E

Coeficientes Delta: _D

Coeficientes de Aceleración: _A

Coeficientes de Tercera derivada: _T

Los resultados obtenidos para el experimento con SEV son los

siguientes:

Page 226: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 212

TIP

O B

AS

E:

mfc

c

ES

TA

DO

S:

6

ITE

RA

CIO

NE

S:

6

GA

US

SIA

NA

S:

5

BA

SE

DE

DA

TO

S:

SE

V

LO

CU

CIO

NE

S:

FP

Q_A

NS

TE

CM

- F

PQ

_A

NS

TE

CM

124,1

19743

24,1

91019

24,3

90592

22,3

94868

21,8

81682

21,5

96579

22,7

79758

19,6

86386

19,4

01283

22,1

38275

21,9

52958

20,6

12972

223,3

21454

23,8

91661

23,2

50178

20,9

40841

21,1

26158

20,2

42338

21,3

25731

18,6

88525

18,2

46614

21,5

11048

21,3

82751

19,7

00641

322,9

08054

23,2

07413

22,7

79758

20,8

69565

21,1

11903

20,2

13828

20,6

98503

17,8

90235

18,0

61297

21,4

96793

21,2

40200

19,8

28938

422,5

94440

22,8

65289

22,6

79971

20,3

99145

21,5

68068

20,3

56379

20,4

84676

17,6

33642

18,0

47042

21,4

54027

20,8

12545

19,6

72131

522,3

80613

22,7

36992

22,4

09123

20,8

41055

21,6

10834

20,6

55738

20,5

55952

17,5

9087

718,1

32573

21,6

67855

20,3

70634

19,8

28938

23,0

64861

23,3

78475

23,1

01924

21,0

89095

21,4

59729

20,6

12972

21,1

68924

18,2

97933

18,3

77762

21,6

53600

21,1

51818

19,9

28724

G A U S S I A N A SMF

CC

CO

EF

ICIE

NT

ES

0 1

3E

13

0_E

14

D 2

40_D

26

E_D

26

D_A

36

0_D

_A

39

E_D

_A

39

D_A

_T

48

0_D

_A

_T

52

E_D

_A

_T

52

Page 227: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 213

TIP

O B

AS

E:

plp

ES

TA

DO

S:

6

ITE

RA

CIO

NE

S:

6

GA

US

SIA

NA

S:

5

BA

SE

DE

DA

TO

S:

SE

V

LO

CU

CIO

NE

S:

FP

Q_A

NS

TE

CM

- F

PQ

_A

NS

TE

CM

124,3

90592

24,7

32716

24,0

62723

22,4

23378

22,2

09551

22,0

52744

22,8

22523

20,0

71276

19,3

01497

23,0

07840

21,9

10192

20,5

98717

223,3

64220

23,6

77833

22,6

94227

21,2

25944

21,4

39772

20,6

12972

20,5

41696

19,0

16393

18,4

74697

21,9

95723

21,2

82965

20,2

56593

322,2

95082

22,9

93585

22,3

52103

20,4

84676

20,5

84462

19,8

28938

20,2

85103

18,3

7491

118,4

46187

21,2

68710

20,5

27441

19,6

00855

422,0

81254

22,5

80185

21,7

10620

20,2

13828

19,9

85745

19,3

87028

20,4

13400

18,5

03207

18,5

60228

21,4

25517

20,0

42766

19,5

01069

522,1

24020

22,4

94654

21,8

67427

20,2

99359

19,9

85745

19,5

58090

20,3

70634

18,7

17035

18,5

45973

20,8

83820

20,3

56379

19,5

86600

22,8

51034

23,2

95795

22,5

37420

20,9

29437

20,8

41055

20,2

87954

20,8

86671

18,9

36564

18,6

65716

21,7

16322

20,8

23949

19,9

08767

G A U S S I A N A S

PLP

CO

EF

ICIE

NT

ES

0 1

3E

13

0_E

14

D 2

40_D

26

E_D

26

D_A

36

0_D

_A

39

E_D

_A

39

D_A

_T

48

0_D

_A

_T

52

E_D

_A

_T

52

Page 228: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 214

A la vista de los resultados podemos extraer las siguientes

conclusiones:

La inclusión únicamente del coeficiente cepstral cero (0 13)

presenta en todos los casos mejores resultados que la del

coeficiente de energía (E 13).

La inclusión de ambos coeficientes a la vez (0_E 14), mejora en

general los resultados en la técnica PLP, pero empeora los de 0 13

en MFCC para determinados números de gaussianas.

La inclusión de los coeficientes Delta (D 24) resulta ser mejor en

todos los casos que la simple inclusión de los coeficientes de los

puntos anteriores (0 13, E 13 y 0_E 14).

Añadir también los coeficientes de aceleración (D_A 36) no mejora

en todos los casos los resultados, como ocurría con SES. Por

ejemplo, con PLP y 1 gaussiana el error aumenta un 0.4%,

mientras que con 2 gaussianas disminuye en un 0.68%.

Añadir los coeficientes de tercera derivada (D_A_T 48) empeora los

resultados para ambas técnicas, como ocurría con SES, con la

única excepción de MFCC con 1 gaussiana.

Añadir a los coeficientes acelerados el coeficiente cero mejora en

general los resultados (0_D_A 39 frente a D_A 36, 0_D_A_T 52

frente a D_A_T 48), salvo algunas excepciones que encontramos

con 0_D 26 frente a D 24. Con la energía vemos que la mejora

sucede en todos los casos (E_D 26 frente a D 24, E_D_A 39 frente

Page 229: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 215

a D_A 36 y E_D_A_T 52 frente a D_A_T 48). Cuál de estos dos

coeficientes añadidos a los derivados obtiene mejores resultados

depende del número de gaussianas y de la técnica empleada. Por

ejemplo, para MFCC con 3 gaussianas E_D 26 y E_D_A_T 52

obtienen mejores resultados que 0_D 26 y 0_D_A_T 52, mientras

que 0_D_A 39 es mejor que E_D_A 39.

Finalmente, considerando toda la tabla, con MFCC se obtienen los

mejores resultados con la combinación 0_D_A 39 y 5 gaussianas,

con una tasa de error del 17.59%. Con PLP la mejor combinación

es también 0_D_A 39 con 3 gaussianas, con una tasa de error del

18.37%. La diferencia entre estos datos, obtenidos con

coeficientes derivados y acelerados, es significativa con respecto

al dato obtenido al no emplear estos coeficientes, al ser el extremo

superior de sus intervalos de confianza al 5% ([16.71, 18.48] para

MFCC y [17.48, 19.27] para PLP) mucho menores que el extremo

inferior de los intervalos de confianza de los datos de error sin

estos coeficientes adicionales ([21.41, 23.35] para MFCC y [21.12,

23.04] para PLP).

8.12 SEGMENTACIÓN INTEREMOCIONES CON

SEV

A continuación veremos el experimento de segmentación interemociones

que describimos en el apartado 8.5, con la base de datos SEV. Este

experimento cobra especial interés ahora, ya que en SEV tenemos dos

nuevas emociones, el asco y el miedo. La matriz de resultados de la

segmentación cruzada interemociones es la siguiente:

Page 230: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 216

TIPO BASE: mfcc

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SEV

13,925328 21,392533 20,887992 21,493441 16,750757 17,356206 34,106963 13,118063 19,87891

13,521695 18,163471 19,071645 18,365288 15,136226 17,154390 23,007064 12,512614 17,11655

13,723512 17,053481 18,668012 17,658930 16,347124 17,860747 22,906155 12,916246 17,14178

13,824420 16,750757 17,961655 18,668012 15,237134 18,264379 21,190716 13,319879 16,90212

13,622603 16,952573 18,869828 17,558022 15,539859 18,163471 21,594349 13,521695 16,9778

27,582846 37,621832 33,138402 37,426901 29,629630 31,481481 45,419103 26,315789 33,577

27,485380 33,235867 29,824561 33,333333 28,752437 31,384016 35,867446 25,243665 30,64084

27,680312 31,481481 30,116959 33,723197 28,849903 30,799220 34,113060 26,023392 30,34844

27,095517 30,604288 31,189084 32,846004 28,460039 30,994152 34,307992 26,608187 30,26316

26,608187 30,701754 32,066277 32,748538 28,947368 30,019493 34,113060 25,828460 30,12914

22,032193 29,979879 29,979879 28,973843 23,239437 26,559356 39,839034 21,730382 27,79175

21,227364 25,955734 26,156942 24,346076 22,132797 24,245473 27,565392 19,718310 23,91851

22,535211 25,553320 26,156942 24,949698 22,334004 25,150905 26,257545 19,215292 24,01911

22,334004 25,150905 26,659960 24,245473 22,635815 25,855131 25,553320 18,008048 23,80533

22,837022 26,458753 26,458753 25,050302 22,837022 26,559356 26,458753 18,108652 24,34608

20,119522 27,290837 25,498008 35,956175 21,314741 23,705179 38,844622 18,326693 26,38197

18,525896 23,505976 21,613546 30,179283 20,717131 22,609562 29,183267 16,633466 22,87102

19,123506 23,406375 21,015936 28,585657 19,820717 21,115538 25,697211 14,641434 21,6758

18,426295 21,015936 20,517928 27,689243 19,322709 21,812749 25,099602 14,342629 21,02839

17,529880 21,513944 21,115538 27,290837 19,123506 21,115538 24,800797 15,637450 21,01594

14,530777 21,594349 17,154390 23,612513 15,438951 17,457114 30,373360 12,008073 19,02119

14,732593 16,851665 15,438951 19,273461 15,338042 16,952573 20,080727 12,108981 16,34712

14,429869 16,044400 15,237134 19,374369 15,338042 16,750757 18,768920 11,806256 15,96872

14,934410 16,246216 15,741675 20,282543 15,237134 18,163471 19,475277 12,714430 16,59939

14,530777 16,952573 16,246216 19,878910 15,438951 18,062563 18,768920 12,714430 16,57417

15,539859 22,300706 20,484359 25,529768 18,062563 22,906155 35,116044 14,530777 21,80878

15,943491 18,365288 17,457114 18,869828 16,548940 21,190716 24,318870 13,622603 18,28961

14,934410 16,044400 17,658930 18,869828 17,053481 21,695257 21,695257 14,228052 17,77245

15,338042 16,145308 18,163471 19,979818 16,448032 21,796165 21,594349 14,429869 17,98688

14,833502 16,448032 19,071645 19,979818 17,356206 21,796165 21,695257 14,328961 18,1887

38,212181 40,373281 33,988212 40,962672 33,693517 39,587426 49,705305 29,273084 38,22446

35,166994 35,461690 31,335953 34,479371 31,237721 39,980354 39,390963 27,406680 34,30747

34,282908 35,952849 30,648330 35,461690 32,612967 38,212181 38,408644 27,111984 34,08644

34,577603 36,345776 30,058939 36,247544 31,630648 38,113949 38,015717 26,424361 33,92682

35,658153 35,461690 29,567780 35,461690 31,925344 37,721022 38,212181 26,326130 33,79175

21,796151 28,738418 25,944405 30,648610 22,665716 25,659301 39,130435 19,401283 26,74804

21,026372 24,590164 23,050606 25,630791 21,482537 24,875267 28,567356 18,246614 23,43371

21,040627 23,734854 22,851033 25,602281 21,838917 24,590164 26,913756 18,061297 23,07912

21,012117 23,264433 22,965075 25,787598 21,354241 25,074840 26,543122 18,047042 23,00606

20,883820 23,578047 23,406985 25,502495 21,667855 24,846757 26,600143 18,132573 23,07733

21,07913 24,7071 23,58598 26,5631 21,73745 24,94096 29,4825 18,31735

FPQ_N 16,90212

FPQ_M FPQ_N

FPQ_A

FPQ_C

FPQ_E

23,86885

T

E

S

T

FPQ_S

FPQ_E

FPQ_*

30,99172

24,77616

FPQ_T 34,86739

MFCC

FPQ_M

TRAINING

FPQ_A FPQ_C FPQ_T

18,80928

FPQ_*FPQ_S

17,60343

22,59462

Page 231: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 217

TIPO BASE: plp

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

COEFICIENTES: _E_D_A (39)

BASE DE DATOS: SEV

16,145308 27,346115 20,787084 42,986882 16,347124 23,915237 48,335015 14,530777 26,29919

15,338042 20,787084 16,750757 32,189707 14,228052 21,392533 26,639758 12,613522 19,99243

15,237134 19,979818 16,548940 29,263370 14,530777 21,796165 26,740666 12,714430 19,60141

15,136226 19,878910 16,851665 30,676085 14,228052 21,493441 25,933401 12,815338 19,62664

15,237134 19,374369 16,952573 30,877901 15,136226 20,887992 25,529768 12,916246 19,61403

29,337232 42,397661 32,846004 52,729045 30,799220 35,380117 61,403509 26,023392 38,86452

29,142300 35,477583 29,532164 45,614035 30,019493 34,892788 39,961014 26,023392 33,83285

27,290448 34,307992 29,044834 42,690058 29,824561 34,015595 37,621832 26,023392 32,60234

26,900585 33,235867 30,019493 43,957115 28,947368 34,307992 37,231969 25,925926 32,56579

27,192982 33,528265 30,701754 44,152047 29,434698 34,210526 36,647173 26,900585 32,846

23,038229 33,702213 26,156942 48,088531 23,440644 31,690141 53,118712 19,517103 32,34406

24,748491 26,156942 23,843058 36,921529 22,132797 30,281690 32,092555 17,907445 26,76056

24,245473 26,156942 23,742455 35,915493 22,032193 30,684105 30,482897 19,315895 26,57193

23,843058 25,251509 24,647887 35,814889 21,931590 30,181087 30,281690 19,617706 26,44618

23,943662 24,346076 24,547284 35,513078 22,132797 30,482897 30,583501 18,209256 26,21982

20,219124 30,776892 25,000000 65,537849 23,406375 29,183267 51,095618 18,824701 33,00548

21,314741 24,302789 20,717131 53,486056 22,709163 26,494024 30,179283 16,932271 27,01693

19,621514 23,705179 20,617530 51,992032 22,211155 25,697211 29,780876 16,135458 26,22012

19,521912 23,605578 22,310757 51,693227 21,812749 25,000000 28,884462 16,235060 26,13297

19,422311 23,207171 20,717131 51,494024 20,617530 26,095618 29,282869 16,035857 25,85906

15,741675 23,915237 16,347124 42,785066 15,741675 22,805247 39,051463 12,209889 23,57467

15,338042 18,970737 14,833502 29,767911 16,145308 22,098890 24,520686 12,108981 19,22301

15,741675 18,768920 13,420787 28,052472 16,044400 20,887992 23,208880 12,411705 18,5671

15,640767 18,567104 14,228052 28,859738 15,539859 20,484359 23,107972 13,420787 18,73108

15,943491 18,768920 14,429869 29,364279 15,943491 21,695257 23,410696 12,714430 19,0338

18,365288 26,841574 19,778002 44,399596 17,961655 26,034309 44,197780 15,237134 26,60192

17,658930 20,887992 16,548940 33,905146 16,952573 24,823411 25,327952 14,228052 21,29162

17,356206 20,181635 17,053481 33,097881 17,255298 24,217962 24,823411 13,824420 20,97629

17,356206 17,759839 17,759839 32,795156 17,053481 23,915237 23,713421 14,833502 20,64834

17,255298 18,869828 18,062563 31,786075 16,649849 23,814329 24,621594 15,237134 20,78708

37,917485 41,944990 36,345776 54,322200 34,970530 42,337917 62,868369 28,290766 42,37475

37,131631 36,345776 31,434185 47,642436 32,514735 40,667976 48,035363 28,978389 37,84381

35,756385 36,542240 33,005894 47,838900 33,988212 39,783890 47,151277 28,192534 37,78242

36,738703 36,738703 32,121807 46,463654 33,497053 40,766208 46,463654 26,620825 37,42633

36,149312 35,854617 32,612967 48,133595 34,086444 40,962672 46,463654 27,308448 37,69646

23,050606 32,501782 25,402708 50,178190 23,321454 30,263721 51,532431 19,301497 31,94405

23,036351 26,215253 22,024234 40,014255 22,181041 28,738418 32,487527 18,474697 26,64647

22,252316 25,744833 21,995723 38,488952 22,352103 28,225232 31,489665 18,446187 26,12438

22,238061 25,089095 22,637206 38,688525 21,938703 28,096935 30,890948 18,560228 26,01746

22,238061 24,932288 22,651461 38,845331 22,081254 28,382038 31,019244 18,545973 26,08696

22,49456 26,82416 22,87574 41,17556 22,30354 28,67711 35,40531 18,60408

FPQ_N 19,82593

FPQ_M FPQ_N

FPQ_*

FPQ_A

FPQ_C

FPQ_E

FPQ_S

T

E

S

T

TRAININGPLP

FPQ_*FPQ_SFPQ_EFPQ_C

27,36386

21,02674

34,1423

27,66851

22,06105

FPQ_A

27,64691

FPQ_T 38,62475

FPQ_T

FPQ_M

Page 232: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 218

Observando las tablas por columnas podemos realizar los siguientes

comentarios:

Entrenando al segmentador con un sólo conjunto de voces vemos

que los resultados son bastante uniformes: las voces mejor

segmentadas suelen ser la neutra (con un error medio del 16.90%

para MFCC y 19.83% para PLP), la alegre (17.60% y 21.03%) y la

sorprendida (18.81% y 22.06%). Las peor segmentadas en todos

los casos son el asco (30.99% y 34.14%) y la tristeza (34.87% y

38.62%).

Esto nos lleva a la misma conclusión a la que llegamos en el

apartado 8.5, esto es, la emoción mejor segmentada no depende

tanto del tipo de emoción con que entrenemos al segmentador,

como de las propias características de esa emoción, que la hacen

de algún modo mejor o peor "segmentable".

De nuevo podríamos preguntarnos ahora cuál sería entonces el mejor

tipo de voz con el que entrenar a nuestro segmentador según el tipo de

voz que queramos segmentar. Observando la tabla por filas en lugar de

por columnas, vemos que:

El mejor resultado para todas las evaluaciones lo obtenemos

entrenando con el conjunto completo de frases, algo que en

principio podría parecer obvio porque la cantidad de muestras

que utilizamos para entrenar es siete veces la que tenemos si

utilizamos una sola emoción. La diferencia con respecto a

entrenar con la mejor emoción suelta es significativa, al estar

muy por debajo los intervalos de confianza para el entrenamiento

con todas las frases, [17.42, 19.22] para MFCC y [17.70, 19.51]

Page 233: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 219

para PLP, frente a los intervalos que presenta el entrenamiento

con una sola emoción, [20.13, 22.03] para MFCC y [21.34, 23.27]

para PLP.

Pero si sólo quisiéramos entrenar con una emoción en lugar del

conjunto completo de frases, ¿cuál debería ser la emoción elegida

si no conocemos qué tipo de emoción será la predominante en las

locuciones que queremos segmentar? En este caso, vemos que las

voces neutra y alegre son las que consiguen mejores resultados

de segmentación en media en ambas técnicas, por lo que, de

querer entrenar con una sola emoción, deberíamos elegir una de

éstas. El valor medio de la tasa de error que conseguiríamos con

la voz alegre sería del 21.08% con MFCC y del 22.49% con PLP,

mientras que con la voz neutra sería del 21.74% y 22.30%

respectivamente.

La voz que consigue peores resultados de segmentación en MFCC

es la triste, con una tasa media de error del 29.48%; y en PLP el

miedo, con una tasa media de error del 41.18%.

Page 234: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 220

8.13 SEGMENTACIÓN CON EL LOCUTOR

MASCULINO DE SEV

Hemos desarrollado varios experimentos con las locuciones de la

locutora femenina (Rosa) de SEV, de las cuales disponemos de un

subconjunto de locuciones segmentadas manualmente, y hemos podido

realizar una evaluación de la segmentación automática de las mismas.

Para el locutor masculino de SEV, Joaquín, no podemos realizar una

evaluación numérica al no contar con locuciones segmentadas

manualmente. No obstante, hemos realizado el entrenamiento del

sistema con el conjunto total de locuciones de Joaquín y las hemos

segmentado automáticamente. A continuación hemos elegido algunos

ficheros de salida al azar, y hemos escuchado cada fonema de esta

muestra con el programa Praat. Con este programa visualizamos la

representación de la señal de voz de cada uno de los ficheros, con la

superposición de las marcas resultantes del proceso de segmentación

automático, y escuchamos cada uno de los trozos de audio

comprendidos entre dichas marcas. El resultado nos ha parecido

bastante aceptable ya que por lo general dichos trozos de audio se

correspondían de manera bastante precisa con los fonemas que

trataban de delimitar. No obstante, hemos encontrado también errores

en algunos casos especialmente conflictivos, como por ejemplo en la

transición entre dos vocales en un diptongo, en la transición entre

silencios y principios o finales de palabras, y en las consonantes

oclusivas en las que, debido a sus características, en ocasiones

confunde el principio del fonema con silencios.

Page 235: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 221

8.14 SEGMENTACIÓN CON LA BASE DE DATOS

UPC

Después de haber realizado distintos experimentos con las bases de

datos SES y SEV, utilizaremos ahora una base de datos diferentes a

esas dos. La base de datos UPC comprende dos grupos de frases cortas

y largas; el primero, etiquetado como PA, contiene 151 locuciones,

mientras que el segundo, etiquetado como SE, contiene 506 locuciones.

Todas son con voz neutra. No obstante, y aunque no podamos

experimentar con emociones con esta base de datos, nos servirá para

hacernos una idea de cómo puede funcionar el proceso de segmentación

aplicando nuestro segmentador fonético automático a un conjunto de

locuciones externas. Con los parámetros habituales (6 estados, 6

iteraciones y 5 gaussianas, y los coeficientes _E_D_A) realizaremos tres

experimentos, uno entrenando con el primer grupo de locuciones y

evaluando el otro, el segundo con dichos grupos intercambiados, y uno

tercero entrenando con toda la base de datos y segmentándola toda.

Éstos son los resultados:

Page 236: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 222

TIPO BASE: mfcc (Primera tabla); plp (segunda tabla)

COEFICIENTES: _E_D_A (39)

ESTADOS: 6

ITERACIONES: 6

GAUSSIANAS: 5

BASE DE DATOS: UPC

110,588290 12,875150 11,456666 11,640035

211,077761 12,469988 11,173679 11,573809

311,239379 13,227791 11,353762 11,940311

410,906908 13,047719 11,773954 11,909527

511,825822 12,522509 11,828264 12,058865

11,127632 12,828631 11,517265

111,691910 13,452881 12,311342 12,485378

211,516439 12,597539 11,728219 11,947399

311,211673 12,732593 11,482392 11,808886

410,754525 12,627551 11,539561 11,640546

511,036202 12,154862 11,645324 11,612129

11,242150 12,713085 11,741368

11,82450947

11,89886753

G

A

U

S

S

I

A

N

A

S

G

A

U

S

S

I

A

N

A

S

PLP TRAIN - PA

TEST - SE

TRAIN - SE

TEST - PA

TRAIN - PA y SE

TEST - PA y SE

MFCC TRAIN - PA

TEST - SE

TRAIN - SE

TEST - PA

TRAIN - PA y SE

TEST - PA y SE

EXPERIMENTO

EXPERIMENTO

Page 237: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

8. Ejecuciones y resultados 223

Los mejores resultados de segmentación se obtienen entrenando el

segmentador con el conjunto de locuciones PA y evaluando el conjunto

SE, mientras que los peores resultados se obtienen con el experimento

contrario. El error mínimo se consigue en MFCC con una sola

gaussiana, alcanzando un 10.59%, mientras que en PLP el error

mínimo se consigue con 4 gaussianas, un 10.75%.

Page 238: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 224

9. CONCLUSIONES Y LÍNEAS FUTURAS DE

INVESTIGACIÓN

Analizando las actividades que hemos desarrollado a lo largo de este

proyecto podemos extraer las conclusiones que detallamos en este

capítulo, así como sugerir posibles líneas futuras de investigación.

9.1 Conclusiones

9.1.1 Conclusiones acerca del sistema

Nuestro sistema presenta una cierta complejidad al contar en su

desarrollo con varios entornos y lenguajes de programación: se

emplean herramientas HTK, scripts de comandos de DOS en

ficheros .bat, programas desarrollados en perl, y un par de

programas desarrollados en lenguaje C.

Todo el desarrollo está basado en herramientas y programas

Open Source, por lo que pueden ser utilizados con libertad.

Nuestro sistema se pone a disposición de quienes pudieran tener

interés en el futuro de realizar trabajos de segmentación

automática o de modificar el código para desarrollos posteriores.

Page 239: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 225

Las bases de datos empleadas en este proyecto, en cambio, sí son

propietarias.

Hemos empleado nuestro sistema para segmentar archivos de voz

en castellano, partiendo de un fichero de audio en formato .wav o

.pcm, y de un fichero .lab que contiene la transcripción fonética

de la locución. Este fichero .lab a su vez fue generado con el

programa graf2fon a partir de un fichero .data que contiene una

lista con el nombre de los ficheros de la base de datos y su

correspondiente texto.

Nuestro sistema se caracteriza por soportar una alta

automatización y permitir una gran configurabilidad. En este

sentido hemos ido añadiendo nuevas funciones al desarrollo de

nuestro sistema, entre las cuales podemos incluir las siguientes:

o Se pueden definir distintas variables en el fichero de

lanzamiento (full.bat) y el sistema genera o modifica de

manera automática los ficheros necesarios para que el

experimento se ejecute con esas variables. De esta manera

se puede cambiar el algoritmo de parametrización, el

número de estados de los modelos, las gaussianas por

estado, el número de iteraciones a realizar, los coeficientes

extra a añadir al proceso (deltas, aceleraciones, cero, de

energía), y si se desea o no realizar normalización cepstral.

El usuario sólo tiene que definir dichas variables una vez y

no tiene que modificar nada más ya que el sistema realizará

Page 240: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 226

automáticamente las modificaciones necesarias para tener

en cuenta el valor de estas variables.

o Para conseguir esto hemos hecho que los ficheros de

configuración se generen automáticamente a partir de una

plantilla inicial y se tengan en cuenta las variables

definidas por el usuario.

o Del mismo modo hemos modificado los scripts dedicados al

entrenamiento, reconocimiento y segmentación para que

generen automáticamente otros scripts dependientes de las

variables definidas por el usuario. Por ejemplo, el script

encargado del entrenamiento generará en tiempo de

ejecución otro script que tendrá en cuenta el número de

iteraciones deseadas por el usuario y realizará el número

correspondiente de llamadas a la herramienta HVite.

o Igualmente los modelos se generan a partir de un prototipo

vacío con una estructura dependiente del número de

estados y gaussianas que defina el usuario. Los modelos se

irán actualizando automáticamente para todas las

gaussianas desde 1 hasta el número indicado.

o El fichero de lanzamiento full.bat permite definir de manera

muy sencilla una batería de diferentes experimentos, con

diferentes variables deseadas por el usuario, de modo que

se efectúa un barrido de experimentos de manera

desatendida. Esto es especialmente útil teniendo en cuenta

Page 241: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 227

que en ocasiones un experimento con un conjunto de

entrenamiento muy amplio puede tardar mucho tiempo en

completarse. Al desarrollarlo así hemos conseguido que el

usuario pueda definir un conjunto grande de diferentes

experimentos y pueda dejar la máquina funcionando

durante horas, sabiendo que éstos se irán ejecutando de

manera sucesiva sin que sea necesaria su intervención.

o Se ha automatizado también la generación de la lista y la

red de fonemas, de la gramática empleada y del diccionario

de fonemas. Esto permite que nuestro sistema funcione con

cualquier base de datos que se quiera utilizar

independientemente del tipo de alfabeto o diccionario que

utilice; el sistema aprenderá dicho alfabeto y generará

automáticamente el diccionario, la gramática y la red para

cada ejecución de experimentos. Hemos comprobado esta

robustez frente a distintos alfabetos con los experimentos

que hemos realizado, por ejemplo con SEV, que tenía un

alfabeto diferente a SES y el sistema se adaptó y funcionó

correctamente, y del mismo modo ocurrió con UPC.

o El sistema permite al usuario definir de manera separada

los conjuntos de locuciones a emplear para el

entrenamiento y para la segmentación y posterior

evaluación, de modo que se puede entrenar con un

conjunto de datos y segmentar ésos mismos, o entrenar con

unos datos y segmentar otros diferentes.

Page 242: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 228

o Además el sistema permite definir dos conjuntos diferentes

de evaluación (test1 y test2), es decir, se puede entrenar

con un conjunto de datos y realizar la segmentación de dos

conjuntos diferentes con resultados de la evaluación

calculados por separado para cada uno de ellos. Un posible

uso de esto es cuando se quiere segmentar manualmente

una base de datos que tiene una parte de las locuciones

segmentadas de manera manual; para uno de los conjuntos

de test definiríamos los ficheros marcados manualmente,

de manera que se segmentaran y obtuviéramos la

evaluación de su precisión, y para el otro conjunto

definiríamos el resto de ficheros, de modo que aunque éstos

no puedan ser utilizados para evaluar la bondad del

sistema sí sean también segmentados automáticamente.

Nuestro sistema tiene también la propiedad de ser modular,

existen variables que pueden ser ajustadas para que el sistema

realice reconocimiento y segmentación o sólo uno de los dos

procesos, y también para que realice el entrenamiento de los

modelos o bien se salte esa etapa y realice la segmentación

automática con modelos ya entrenados (si bien esta opción sí

requeriría de un trabajo previo de adaptación de ciertos ficheros y

su colocación en los directorios adecuados para que el sistema los

tenga en cuenta y funcione adecuadamente).

Por último nuestro sistema es en general portable entre

ordenadores con sistema operativo Windows, ya que ha sido

probado con éxito en tres versiones de este SO (Windows 2000,

Page 243: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 229

Windows XP y Windows 7). Para ser utilizado en otros sistemas

operativos como Linux sí se necesitaría un mayor trabajo de

adaptación del código del sistema.

9.1.2 Conclusiones acerca de los experimentos realizados

En este proyecto hemos ejecutado experimentos sobre una base

de datos, SES, que ya había sido utilizada con anterioridad, pero

en esta ocasión hemos tratado de realizar un conjunto de

experimentos más amplio y exhaustivo. Asimismo, hemos

trabajado con dos bases de datos nuevas: SEV-Rosa, segmentada

manualmente en parte, y UPC, segmentada manualmente por

completo, para las que hemos podido obtener datos de evaluación

del resultado de la segmentación automática. Por último hemos

trabajado con SEV-Joaquín, que no contiene marcas manuales; la

segmentación automática de estos ficheros obtenida con nuestro

sistema se ha utilizado para formar parte del conjunto de datos

de entrenamiento en la competición Albayzín 2012 de síntesis.

Como conclusión común a todos los experimentos realizados con

SES tenemos que el entrenamiento con frases produce peores

resultados en general que el entrenamiento con párrafos, debido a

la menor cantidad de datos de entrada, por lo que en estas

conclusiones resumiremos sólo los resultados obtenidos con

párrafos.

Para empezar comprobamos que utilizar las versiones 3.3 o 3.4 de

HTK no producía resultados diferentes, como esperábamos, ya

Page 244: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 230

que la nueva versión no introducía cambios en las herramientas

empleadas por nuestro sistema.

Realizamos un experimento para determinar el número óptimo de

estados, iteraciones y gaussianas, obteniendo con SES que el

menor error se da con 6 estados y 6 iteraciones, y un número de

gaussianas de 5 para MFCC y de 2 para PLP. Obtuvimos unos

errores mínimos del 8.01% y del 7.60%, respectivamente, no

siendo la diferencia entre técnicas significativa. Observamos que

hay asimetría de resultados entre bases de datos ya que con SEV

el número óptimo de estados sería 6, el de iteraciones 5 ó 6 con

MFCC y 4 con PLP, y el de gaussianas 5 con MFCC y 10 con PLP.

En el experimento en el que combinamos coeficientes extra de

todas las formas posibles concluimos:

o Que la inclusión únicamente del coeficiente cepstral cero

presenta en general mejores resultados que la del

coeficiente de energía, y que incluir ambos a la vez mejora

aún más los resultados.

o Que la inclusión de coeficientes Delta es mejor que la

combinación anterior, y que la inclusión además de los

coeficientes de aceleración mejora aún más los resultados.

o Que en cambio los coeficientes de tercera derivada

empeoran los resultados y ralentizan enormemente el

proceso.

o Que la combinación de coeficientes Delta y de aceleración

con los coeficientes cero y de energía resulta ser mejor tan

sólo en determinados casos, no en todos. Con 0_D_A

Page 245: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 231

llegamos a alcanzar un nivel de error de 7.79% con MFCC y

7.43% con PLP.

o Estas conclusiones obtenidas con SES son básicamente las

mismas que obtenemos con SEV, con algunas diferencias;

por ejemplo, con SEV la inclusión de coeficientes de

aceleración no mejora los resultados en todos los casos.

Hicimos un experimento para comprobar si era mejor entrenar

con frases o párrafos y sus diferentes combinaciones en SES y

llegamos a la conclusión de que los mejores datos de

segmentación se producen al segmentar párrafos, y que los

mejores grupos de entrenamiento son toda la base de datos, todos

los párrafos, y frases y párrafos sin segmentar, y dado que esta

última combinación alcanzaba resultados similares a los

anteriores y que el tiempo de proceso se reducía a la mitad, es la

que decidimos emplear para la mayoría de nuestros experimentos.

Realizamos un experimento de segmentación interemociones, es

decir, cruzamos cada una de las emociones como grupos de

entrenamiento y evaluación. Hay que decir ante todo que los

resultados obtenidos dependen de muchos factores, como el

locutor y la base de datos, por lo que las afirmaciones que se

hagan se entenderán sujetas a estas condiciones. Y se debe tener

en cuenta que el considerar como error las fronteras que excedan

en 20 ms de las marcadas manualmente penaliza a las emociones

con un ritmo más lento, al ser más probable que incurran en esta

desviación. Considerando todo esto, algunas conclusiones que

obtuvimos fueron:

Page 246: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 232

o Para segmentar frases con emoción es mejor entrenar el

segmentador con frases también con emoción que

entrenarlo con frases neutras.

o La voz neutra es la mejor segmentada, llegando a alcanzar

un error mínimo del 5% cuando se entrena con voces

tristes en MFCC. La peor segmentada en todos los casos es

la voz triste.

o Si sólo quisiéramos entrenar con una emoción en lugar del

conjunto completo de frases, la voz de tristeza debería ser la

elegida. Con la alegre también se consiguen buenos

resultados.

o La voz neutra como entrenamiento es la que consigue

peores resultados de segmentación en todos los casos, por

lo que confirmamos la idea de que para segmentar párrafos

con emoción es mejor entrenar el segmentador con párrafos

también con emoción que entrenarlo con frases neutras.

o Estas conclusiones son válidas con SES pero no con SEV.

Con esta base de datos vimos que las voces que consiguen

mejores resultados de segmentación son la neutra y la

alegre, mientras que las que peor sirven para entrenar al

sistema son la tristeza y el miedo.

Vimos que realizar la normalización cepstral de la media y la

varianza mejoraba en general los resultados, siendo la mejora

más acusada con la técnica MFCC que con la PLP, debido a las

características de ambas técnicas. Llegamos a obtener un 7.73%

de error con MFCC y un 7.13% con PLP.

Page 247: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 233

Hicimos varios experimentos modificando algunas de las variables

definidas en los ficheros de configuración. El primero de ellos fue

variar el número de canales (o bandas de energía). Vimos que en

MFCC los resultados óptimos se obtenían con entre 12 y 26

canales, obteniendo con éstos últimos un error mínimo del

7.17%. En PLP el número óptimo estaba entre 16 y 20, llegando a

obtener con 16 canales un error mínimo del 7.04%. No hay

diferencias significativas al aumentar o disminuir un poco el

número de canales, éstas sólo se obtienen si se toman valores

extremos de esta variable.

Variando el desplazamiento de tramas y el tamaño de la ventana

de análisis confirmamos que los valores usualmente empleados

(10 y 25 ms) son los óptimos, y que variar estos datos, a la baja y

sobre todo al alza, produce empeoramientos que sí son

significativos. Vimos también que al disminuir el desplazamiento

de tramas y el tamaño de ventana a la mitad se mejora la

desviación media de las fronteras marcadas incorrectamente por

el segmentador con respecto a las reales, ya que mejora la

resolución, pero al mismo tiempo aumenta el número de

desviaciones mayores de 20 ms, lo que hace que aumente el

porcentaje de error de la segmentación efectuada.

Realizamos otro experimento consistente en introducir un filtrado

de diferentes tipos (paso bajo, alto y banda) y a diferentes

frecuencias, y vimos que tan sólo la inclusión del filtro paso bajo

con frecuencia de corte superior a 7800 Hz parecía mejorar un

poco los resultados del segmentador. En general los mejores

Page 248: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 234

resultados se daban sin filtrado, lo que se debe a que la base de

datos SES tiene unas muy buenas condiciones de ruido y no

necesita que éste sea filtrado. También simulamos un canal

telefónico que empeoraba el rendimiento del segmentador entre

2.65 y 4.8 puntos porcentuales, y pudimos observar que hay

mucha más información en la señal de voz a menos de 300 Hz

que en la banda de 3400 Hz para arriba.

Después de realizar numerosos experimentos con SES y con SEV-

Rosa, segmentamos la base de datos SEV-Joaquín y evaluamos al

azar varios ficheros estudiándolos con Praat. El resultado nos

pareció bastante aceptable ya que por lo general los trozos de

audio se correspondían de manera bastante precisa con los

fonemas que trataban de delimitar, si bien encontramos algunos

errores en casos concretos como en la transición entre dos

vocales en un diptongo, en la transición entre silencios y

principios o finales de palabras, y en las consonantes oclusivas.

Por último segmentamos la base de datos UPC, con locuciones

sólo neutras, y alcanzamos unos errores mínimos del 10.59% con

MFCC, y del 10.75% con PLP.

A lo largo de los distintos experimentos hemos visto que

obtenemos mejores tasas de error con SES (en torno al 7-8%) que

con UPC (más del 10%) y con SEV-Rosa (en torno al 17-18%).

Esto puede depender de muchos factores relativos a la propia

base de datos, entre los que puede encontrarse la corrección del

marcaje manual o las características de la voz del locutor y su

Page 249: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 235

naturalidad al realizar las grabaciones. Se puede observar

también que las voces de mujer (SEV-Rosa y UPC) han obtenido

peores resultados que la voz masculina de SES, y sabemos que en

general es más difícil realizar el reconocimiento de una voz de

mujer que una de hombre, por lo que quizá este efecto se

produzca también en el caso de la segmentación, aunque esto no

deja de ser una hipótesis.

9.2 Líneas futuras de investigación

Entre las tareas que podrían realizarse para profundizar en la línea

abierta por este proyecto podríamos enumerar las siguientes:

Mejorar el programa graf2fon para tener en cuenta el efecto de

coarticulación entre palabras (por ejemplo, que se fundieran una

palabra que termina por a con la siguiente que empieza por a).

Segmentar la base de datos UPC con emociones tanto para la

locutora como para el locutor (a la hora de hacer nuestros

experimentos sólo contábamos con locuciones neutras con voz

femenina).

Experimentar con modelos independientes de locutor, o probar

con modelos independientes, realizar adaptación y comprobar si

se mejora la segmentación automática. En [Pérez 2008] se

comprobó que el reconocimiento sí mejoraba tras realizar

Page 250: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

9. Conclusiones y líneas futuras de investigación 236

adaptación, por lo que sería interesante comprobar si se produce

también una mejora de la segmentación o no.

Page 251: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

10. Bibliografía 237

10. BIBLIOGRAFÍA

1. [Álvarez 2001] Agustín Álvarez Marquina: "Apuntes de

Fundamentos del Reconocimiento Automático de la Voz". Departamento

de Arquitectura y Tecnología de Sistemas Informáticos. Facultad de

Informática. Madrid. UPM. 2001.

2. [Young 2006] S. Young, G. Evermann, M. Gales, y otros: "The HTK

Book (for HTK Version 3.4)". Cambridge University Engineering

Department. Diciembre de 2006.

3. [Martínez 1998] Gerardo Martínez Salas: "Adaptación de un

modelo de duraciones y entonación para sintetizar habla con emociones".

Proyecto fin de carrera. ETSI Telecomunicación. Madrid. UPM. 1998.

4. [González 2000] Mario González del Campo Muñoz: "Síntesis de

voz por selección de unidades. Aplicación a síntesis de dominio

restringido". Proyecto fin de carrera. ETSI Telecomunicación. Madrid.

UPM. 2000.

5. [Alcázar 2007] Rosario Alcázar Prior: "Desarrollo de un conversor

texto-voz con emociones y aplicación a la interacción hablada en entornos

inteligentes". Proyecto fin de carrera. ETSI Telecomunicación. Madrid.

UPM. 2007.

Page 252: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

10. Bibliografía 238

6. [Izard 1971] C. Izard: "The face of emotion". Appleton-Century-

Crofts. New York. 1971.

7. [Scherer 2001] K. R. Scherer: "Appraisal considered as a process

of multilevel sequential checking". In "Appraisal processes in emotion:

theory, methods, research" (eds Scherer K. R., Schorr A., Johnstone T.),

pp. 92–120. Oxford University Press. New York. 2001.

8. [Reeve 1994] J. M. Reeve: "Emoción y motivación". McGraw-Hill.

1994.

9. [Fernández 2003] E. G. Fernández Abascal, M. P. Jiménez

Sánchez, M. D. Martín Díaz: "Emoción y motivación. La adaptación

humana". Centro de Estudios Ramón Areces. 2003.

10. [Scherer 1979] K. R. Scherer: “Personality markers in speech”.

Cambridge University Press. 1979.

11. [Russell 1980] J. A. Russell: "A circumplex model of affect". Vol.

39, nº 6. 1161-1178. 1980.

12. [Carrillo 2007] R. Carrillo Aguilar: "Diseño y manipulación de

Modelos Ocultos de Markov, utilizando herramientas HTK. Una tutoría".

Ingeniare, revista chilena de ingeniería, vol. 15, nº 1, pp. 18-26. 2007.

13. [Microsoft 2012] Microsoft: "Windows XP Professional Product

Documentation. Command-line reference."

Page 253: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

10. Bibliografía 239

http://www.microsoft.com/resources/documentation/windows/xp/all/

proddocs/en-us/ntcmds.mspx. 2012

14. [Equinoccial 2010] Unidad Educativa Equinoccial: "Apuntes sobre

la shell de MS-DOS". http://www.equinoccial.edu.ec. Ecuador. 2010.

15. [Perldoc 2012] "Official documentation for the Perl programming

language". http://perldoc.perl.org

16. [Lizama 2012] Uriel Lizama: “Tutoriales Perl en español”.

http://perlenespanol.com

17. [Pérez 2008] Nuria Pérez Magariños: "Mejora de la interfaz vocal de

control de un robot autónomo móvil. Adaptación acústica y generación

supervisada de mapas". Proyecto fin de carrera. ETSI Telecomunicación.

Madrid. UPM. 2008.

18. [Montero 2003] Juan Manuel Montero Martínez: "Estrategias para

la mejora de la naturalidad y la incorporación de variedad emocional a la

conversión texto a voz en castellano". Tesis doctoral. ETSI

Telecomunicación. Madrid. UPM. 2003.

19. [Barra-Chicote 2008] R. Barra-Chicote, J.M. Montero, J. Macias-

Guarasa, S.L. Lufti, J.M. Lucas, F. Fernandez-Martinez, L.F. Dharo, R.

San-Segundo, J. Ferreiros, R. Cordoba, M. Pardo: "Spanish Expressive

Page 254: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

10. Bibliografía 240

Voices: corpus for emotion research in Spanish". In proceedings of 6th

international conference on Language Resources and Evaluation.

Marrakech (Morocco). 2008.

20. [Barra-Chicote 2012] Roberto Barra-Chicote: Website dedicado a

la base de datos SEV - http://lorien.die.upm.es/~barra/voices/

21. [Torre 2003] D. Torre Toledano, L. A. Hernández Gómez, L.

Villarrubia Grande: "Automatic Phonetic Segmentation". IEEE

Transactions on speech and audio processing, Vol 11. Nº 6. Nov 2003.

Page 255: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

11. Pliego de condiciones 241

11. PLIEGO DE CONDICIONES

11.1 Condiciones generales

La obra será realizada bajo la dirección técnica de un Ingeniero de

Telecomunicación y el número de programadores necesarios.

La ejecución material de la obra se llevará a cabo por el procedimiento

de contratación directa. El contratista tiene derecho a obtener, a su

costa, copias del pliego de condiciones y del presupuesto. El ingeniero,

si el contratista lo solicita, autorizará estas copias con su firma,

después de confrontarlas.

Se abonará al contratista la obra que realmente se ejecute, de acuerdo

con el proyecto que sirve de base para la contrata.

Todas las modificaciones ordenadas por el ingeniero-director de las

obras, con arreglo a sus facultades, o autorizadas por la superioridad,

serán realizadas siempre que se ajusten a los conceptos de los pliegos

de condiciones y su importe no exceda la cifra total de los presupuestos

aprobados.

El contratista, o el organismo correspondiente, quedan obligados a

abonar al ingeniero autor del proyecto y director de obra, así como a

Page 256: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

11. Pliego de condiciones 242

sus ayudantes, el importe de sus respectivos honorarios facultativos por

dirección técnica y administración, con arreglo a las tarifas y honorarios

vigentes.

Tanto en las certificaciones de obra como en la liquidación final, se

abonarán las obras realizadas por el contratista a los precios de

ejecución material que figuran en el presupuesto, por cada unidad de

obra.

En el caso excepcional en el que se ejecute algún trabajo no consignado

en la contrata, siendo admisible a juicio del ingeniero-director de las

obras, se pondrá en conocimiento del organismo correspondiente,

proponiendo a la vez la variación de precios estimada por el ingeniero.

Cuando se juzgue necesario ejecutar obras que no figuren en el

presupuesto de la contrata, se evaluará su importe a los precios

asignados a ésta u otras obras análogas.

Si el contratista introduce en el proyecto, con autorización del

ingeniero-director de la obra, alguna mejora en su elaboración, no

tendrá derecho sino a lo que le correspondería si hubiese efectuado la

obra estrictamente contratada.

El ingeniero redactor del proyecto se reserva el derecho de percibir todo

ingreso que en concepto de derechos de autor pudiera derivarse de una

posterior comercialización, reservándose además el derecho de

introducir cuantas modificaciones crea convenientes.

Page 257: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

11. Pliego de condiciones 243

11.2 Condiciones generales a todos los programas

• Estarán realizados en lenguajes estándar.

• Se entregarán tres copias de los listados para cada programa o

subrutina.

• Los programas y subrutinas deberán ir documentados, indicando

brevemente su función, entradas y salidas, y cualquier otra información

de interés.

• Se entregará, junto con los programas, un manual de uso e

instalación.

11.3 Condiciones generales de prueba

Los programas y subrutinas que se entreguen deberán funcionar sobre

un ordenador PC o compatible con microprocesador Intel Core i7 1600

MHz o superior y con, al menos, 6 GB de RAM. Se ejecutarán bajo

sistema operativo Windows 7 Home Premium o superior, en entorno

local.

Solamente se aceptarán los programas si funcionan correctamente en

todas sus partes, rechazándose en caso contrario. Si, por causas

debidas al contratista, los programas no funcionaran bajo las

Page 258: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

11. Pliego de condiciones 244

condiciones expuestas anteriormente, la empresa contratante se

reservará el derecho de rescindir el contrato.

11.4 Recursos materiales

• Ordenador PC compatible, Intel Core i7 1600 MHz, 6 GB de

memoria RAM y 500 GB de disco duro.

• Altavoces.

• Tarjeta de red Ethernet.

11.5 Recursos lógicos

• Sistema operativo Windows 7 Home Premium.

• Compilador Microsoft Visual C++ 6.0

• Office 2007.

Page 259: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

12. Presupuesto 245

12. PRESUPUESTO

El presupuesto consta de cuatro apartados: el cálculo del presupuesto

de ejecución material, el presupuesto de ejecución por contrata que

incluirá el cálculo de los gastos generales y del beneficio industrial, el

coste de la dirección de obra y, por último, el presupuesto total, suma

de todos los conceptos anteriores.

Todas las cantidades que aparecen están contempladas en Euros.

12.1 Presupuesto de ejecución material

Se incluye en este presupuesto los gastos en herramientas empleadas,

tanto hardware como software, así como la mano de obra.

En la ejecución de este proyecto han participado las siguientes

personas:

• Un Ingeniero Superior de Telecomunicación, encargado del

desarrollo y redacción del proyecto, así como de la obtención e

interpretación de los resultados.

• Un mecanógrafo, encargado de la escritura del proyecto en un

procesador de textos, elaboración de gráficos, etc.

Page 260: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

12. Presupuesto 246

12.1.1 Relación de salarios

Partimos del sueldo base mensual de cada una de las personas que han

intervenido en el proyecto para calcular el sueldo base diario respectivo.

A éste habrá que añadir las obligaciones sociales.

Sueldo base

mensual Sueldo base

diario Gratificación

Sueldo total diario

Ingeniero

Superior de Telecomunicación

1.334,59 44,49 6,07 50,56

Mecanógrafo

632,49 21,08 5,67 26,76

12.1.2 Relación de obligaciones sociales

CONCEPTO Vacaciones anuales retribuidas 8,33%

Indemnización por despido 1,60%

Seguro de accidentes 7,00%

Subsidio familiar 2,90%

Subsidio de vejez 1,80%

Abono días festivos 12,00%

Días de enfermedad 0,75%

Plus de cargas sociales 4,25%

Otros conceptos 15,00%

TOTAL 53,63%

12.1.3 Relación de salarios efectivos totales

Sueldo diario Obligaciones

sociales Total/día

Ingeniero Superior de

Telecomunicación

50,56 27,11 77,67

Page 261: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

12. Presupuesto 247

Mecanógrafo

26,76 14,35 41,1

12.1.4 Coste de la mano de obra

Para calcular el coste de la mano de obra basta con aplicar el número

de días trabajado por cada persona por el salario respectivo.

Días

Salario(€)/día

Total (€)

Ingeniero Superior

de Telecomunicación

330 77,67 25.630,7

Mecanógrafo

40 41,1 1.644,13

TOTAL COSTE DE MANO DE OBRA

27.274,83

12.1.5 Coste total de materiales

Para la ejecución de este proyecto se han empleado un ordenador

personal tipo PC basado en el microprocesador Intel Core i7 y una

impresora HP Officejet 6500 Wireless, para la elaboración de toda la

documentación necesaria. También se incluyen los gastos de material

fungible y de oficina.

Los costes referentes a los materiales utilizados se reflejan en la

siguiente tabla:

Page 262: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

12. Presupuesto 248

Precio (€) Uso (meses)

Amortización (años)

Total (€)

1 ordenador personal para diseño

1.502,53 12 5 300,51

Compilador Microsoft Visual C++

420,71 12 5 84.14

Impresora HP Officejet 6500 780,71 1 5 13,01

Placa de red Ethernet 120,2 - - 120,2

Material fungible y de oficina 120,2 - - 120,2

TOTAL GASTO DE MATERIAL 638,06

12.1.6 Importe total del presupuesto de ejecución

material

El presupuesto de ejecución material se calcula basándose en los costes

de mano de obra y los costes materiales.

CONCEPTO IMPORTE (€)

COSTE TOTAL DE MATERIALES

638,06

COSTE TOTAL DE MANO DE OBRA

27.274,83

TOTAL PRESUPUESTO DE EJECUCIÓN MATERIAL

27.912,89

12.2 Importe de ejecución por contrata

Al importe de ejecución material hay que añadirle los siguientes

conceptos:

CONCEPTO

IMPORTE (€)

GASTOS GENERALES Y FINANCIEROS (22%)

6.140,83

Page 263: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

12. Presupuesto 249

BENEFICIO INDUSTRIAL (6%)

1.674,77

TOTAL G.G. Y B.I.

7.815,6

Resultando:

IMPORTE DE EJECUCIÓN POR CONTRATA

35.728,49

12.3 Honorarios Facultativos

Este proyecto se encuadra dentro del grupo XII: Aplicaciones de la

Electrónica y Aparatos de Telecomunicación. Si se aplican las tarifas

correspondientes sobre el importe del presupuesto de ejecución material

se tiene:

Hasta 30.050,61 (Coef. 1,0 sobre 7%)

2.103,54

Hasta 60.101,21 (Coef. 0,9 sobre 7%)

359,16

TOTAL HONORARIOS FACULTATIVOS (€)

2.462,7

Los honorarios que hay que aplicar son los correspondientes tanto por

redacción del proyecto como por dirección, por lo que el total de

honorarios es:

Honorarios de Ingeniero por redacción

2.462,7

Honorarios de Ingeniero por dirección

2.462,7

TOTAL HONORARIOS 4.925,4

Page 264: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

12. Presupuesto 250

12.4 Importe Total del Proyecto

El Importe Total del Proyecto es la suma del Importe de Ejecución por

Contrata, los Honorarios de Redacción y los Honorarios de Dirección, al

cual habrá que aplicar el 18% de IVA.

EJECUCIÓN POR CONTRATA

35.728,49

HONORARIOS

4.925,40

IMPORTE

40.653,89

IVA (18%)

7.317,70

IMPORTE TOTAL

47.971,59

El importe total del presente proyecto asciende a la cantidad de

CUARENTA Y SIETE MIL NOVECIENTOS SETENTA Y UN euros CON

CINCUENTA Y NUEVE céntimos.

EL INGENIERO AUTOR DEL PROYECTO

Fdo: Juan Carmona Mariscal

MADRID, JULIO DE 2012

Page 265: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 251

ANEXO 1. PROGRAMAS AJENOS

EMPLEADOS

En el capítulo dedicado a la implementación del segmentador fonético

automático describimos detalladamente el código de los scripts que

hemos desarrollado para hacer funcionar dicho sistema. En

determinados momentos del proceso hicimos uso de programas

desarrollados por terceros, dejando indicado en ese capítulo la función

que tenían. En este anexo incluimos el código de dichos programas,

donde se deja constancia de la autoría de los mismos.

A.1.1 Macro.exe

#include "stdio.h"

/*******************************************************************/

/****************** Macro file Generator ************************/

/*******************************************************************/

/* */

/* This program takes the vFloors file that is created */

/* after invoking HCompV and generates a Macro file */

/* required for further HMM training */

/* */

/******************************************************************/

/* Title : macro_gen.c */

/* Author: Gary Lee */

Page 266: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 252

/* Date: 30 March 1998 */

/* Version: 1 */

/* Change History: */

/* Author of modifications: Günter Hirsch / Ericsson */

/* - 2 additional input parameters defined to achieve */

/* a more global usability */

/* - <VECSIZE> and <PARAMETER_TYPE> */

/* - output file name also input parameter */

/* */

/******************************************************************/

/*===========================================================*/

/* Copyright(c) 1998 MOTOROLA LAND MOBILE PRODUCTS SECTOR */

/* Jays Close, Viables Ind. Estate */

/* Basingstoke, England */

/*---------------------------------------------------------------------------------------------------------------*/

/* ALL RIGHTS RESERVED: */

/* No part of this software may be reproduced in any form */

/* or by any means or used to make any derivative work */

/* (such as transformation or adaptation) without the */

/* authorisation of the relevant authority in MOTOROLA'S LAND */

/* MOBILE PRODUCTS SECTOR. */

/*===========================================================*/

int main(int argc, char *argv[])

{

FILE *fp;

FILE *outfile;

char c;

if(argc != 5)

{ printf("Usage: %s VECSIZE PARAMETER_TYPE infile outfile\n", argv[0]);

exit(1);

}

Page 267: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 253

if ( (fp = fopen(argv[3], "r")) == NULL)

{

fprintf(stderr, "cannot open file %s!\n", argv[3]);

exit(-1);

}

if ( (outfile = fopen(argv[4], "w")) == NULL)

{

fprintf(stderr, "cannot open file %s!\n", argv[4]);

exit(-1);

}

fprintf(outfile, "~o\n<STREAMINFO> 1 %s\n", argv[1]);

fprintf(outfile, "<VECSIZE> %s\n", argv[1]);

fprintf(outfile, "<NULLD>\n<%s>\n", argv[2]);

while((c=getc(fp))!=EOF)

fprintf(outfile,"%c",c);

fclose(fp);

fclose(outfile);

return(0);

}

A.1.2 CopiaModelos.exe

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <windows.h>

#define FALSE 0

#define TRUE 1

//SES

Page 268: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 254

#define NELEMS(a) (sizeof(a)/sizeof(a[0]))

/*******************************************************************/

/****************** Model file Generator ************************/

/*******************************************************************/

/* */

/* This program takes the hmmdef file and */

/* generates a HMM Model file */

/* */

/* */

/*******************************************************************/

/* Title : models_gen.c */

/* Author: Gary Lee */

/* Date: 27 March 1998 */

/* Version: 1 */

/* Change History: version 1.1 7th July 1998 */

/* cure of seg fault on sun */

/* char c, entry[9]; -> char c, entry[90]; */

/* */

/*******************************************************************/

/* */

/* The execution of htk's HCompV cmd generates a */

/* file (hmmdef) that gives the initial training */

/* parameters; which is the same for each digit. */

/* However, as we model sil differently from the */

/* rest of the digits. We have to create a new */

/* model file. model_gen.c creates a models file */

/* with sil explictly defined to a 5 states, 10 */

/* mixture model. */

/*******************************************************************/

/*===========================================================*/

/* Copyright(c) 1998 MOTOROLA LAND MOBILE PRODUCTS SECTOR */

/* Jays Close, Viables Ind. Estate */

Page 269: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 255

/* Basingstoke, England */

/*---------------------------------------------------------------------------------------------------------------*/

/* ALL RIGHTS RESERVED: */

/* No part of this software may be reproduced in any form */

/* or by any means or used to make any derivative work */

/* (such as transformation or adaptation) without the */

/* authorisation of the relevant authority in MOTOROLA'S LAND */

/* MOBILE PRODUCTS SECTOR. */

/*===========================================================*/

#define MAX_NUM_FON 1000

#define MAX_LONG_FON 100

char listaFonemas[MAX_NUM_FON+1][MAX_LONG_FON];

int CargaFonemas(char *fon)

{

FILE *fp=fopen(fon,"rt");

int cont=0;

int tieneComaInicial=0;

if (fp==NULL)

{

printf("falta el fichero %s\n",fon);

exit(1);

}

while (feof(fp)==0)

{

char linea[MAX_LONG_FON];

int j,k;

if (fgets(linea,MAX_LONG_FON,fp)==NULL)

break;

for (j=0,k=0; linea[k]!=0; k++)

{

if (linea[k]!='"' && linea[k]!=' ' && linea[k]!=',' && linea[k]!='\n' && linea[k]!='\r')

listaFonemas[cont][j++]=linea[k];

Page 270: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 256

}

listaFonemas[cont][j]=0;

cont++;

listaFonemas[cont][0]=0;

}

fclose(fp);

if (strcmp(listaFonemas[0],"COMA")==0)

tieneComaInicial=1;

return tieneComaInicial;

}

void fonemaImprimir(char *fon,FILE *fp)

{

int i;

for (i=0; i<strlen(fon); i++)

{

if (fon[i]=='\'' || fon[i]=='/')

fprintf(fp,"\\");

fprintf(fp,"%c",fon[i]);

}

}

int main(int argc, char *argv[])

{

int CAT=FALSE, i;

FILE *fp;

FILE *outfile;

char c, entry[90];

int tieneComaInicial=CargaFonemas("..\\labels\\fonemas.c");

if(argc !=6)

{ printf("Usage: infile outfile phon_network.syn monophones.dct modo\n");

exit(1);

Page 271: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 257

}

outfile = fopen(argv[2], "w");

if (outfile==NULL)

{

printf("no se puede abrir %s",argv[2]);

exit(1);

}

for (i=1; listaFonemas[i-1][0]!=0; i++)

{

fp = fopen(argv[1], "r");

if (fp==NULL)

{

printf("no se puede abrir %s",argv[1]);

exit(1);

}

CAT=FALSE;

while(CAT==FALSE)

{

fscanf(fp,"%s",entry);

if(strncmp(entry,"\"hmmdef\"",8)==0||

strncmp(entry,"\"proto",6)==0)

{

fprintf(outfile,"~h \"%s\"",listaFonemas[i-1]);

CAT=TRUE;

}

}

if(CAT==TRUE)

{

while((c=getc(fp))!=EOF) fprintf(outfile,"%c",c);

fclose(fp);

Page 272: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 258

}

else

MessageBox(NULL,"falta la sección hmmdef o

proto",argv[1],MB_OK);

}

// ATAJO:

// .syn

outfile = fopen(argv[3], "wt");

if (outfile==NULL)

{

printf("no se puede abrir %s",argv[3]);

exit(1);

}

fprintf(outfile,"$phon = ");

if (strcmp(argv[5],"IDENTIFICATION")==0)

{

fonemaImprimir(listaFonemas[tieneComaInicial],outfile); // SALTA LA COMA

for (i=tieneComaInicial+1; listaFonemas[i][0]!=0; i++)

{

fprintf(outfile," | ");

fonemaImprimir(listaFonemas[i],outfile);

}

if (tieneComaInicial)

fprintf(outfile,";\n(\nCOMA $phon COMA\n)\n");

else

fprintf(outfile,";\n(\n$phon\n)\n");

}

else

{

fonemaImprimir(listaFonemas[0],outfile);

for (i=1; listaFonemas[i][0]!=0; i++)

{

Page 273: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 259

fprintf(outfile," | ");

fonemaImprimir(listaFonemas[i],outfile);

}

fprintf(outfile,";\n(\n< $phon >\n)\n");

}

fclose(outfile);

//.dct

outfile = fopen(argv[4], "wt");

if (outfile==NULL)

{

printf("no se puede abrir %s",argv[4]);

exit(1);

}

for (i=0; listaFonemas[i][0]!=0; i++)

{

fonemaImprimir(listaFonemas[i],outfile);

fprintf(outfile," ");

fonemaImprimir(listaFonemas[i],outfile);

fprintf(outfile,"\n");

}

fclose(outfile);

return(0);

}

A.1.3 Score_mono.exe

/****************************************************************************/

#ifdef DOCUMENTATION

.MODULE score_mono.c

Page 274: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 260

.LIBRARY score

.TYPE programa

.DESCRIPTION

.SYSTEM Unix (SunOS 4.1.3)

.APPLICATION score

.ARGUMENTS Ver score

.NARRATIVE

.RETURNS == 0 Si no hubo error

< 0 En caso contrario

.AUTHOR AGA Ascensión Gallardo Antolín

.COMMENTS

.LANGUAGE C

.ENDOC END DOCUMENTATION

#endif /* #ifdef DOCUMENTATION */

/****************************************************************************/

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#include <alloc.h>

#include "libscore.h"

int main(int argc, char *argv[])

{

int i, j, err = 0;

char alphName[MAX_PATH];

char mlfNameRef[MAX_PATH];

char mlfNameDec[MAX_PATH];

char resultsName[MAX_PATH];

TAlph alph; /* Alphabet */

TLabelSeg *labelRef; /* Reference labels */

TLabelSeg *labelDec; /* Decoded labels */

int nFilesRef = 0, nFilesDec = 0;

Page 275: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 261

TTransition *segResults;

float tol[5] = {5*1e-3, 10*1e-3, 15*1e-3, 20*1e-3, 25*1e-3}; /* Tolerance */

float trans_errors, total_errors, total_instances;

/* Configuration options */

if (argc < 5)

{

printf("USAGE: score alphabet ref_labels dec_labels results_file");

err = -1;

return err;

}

strcpy (alphName, argv[1]);

strcpy (mlfNameRef, argv[2]);

strcpy (mlfNameDec, argv[3]);

strcpy (resultsName, argv[4]);

/* Read the alphabet */

//alph = (TAlph *)malloc(sizeof(TLabelSeg));

if ((err = ReadAlphabet(alphName, (TAlph *)&alph)) != 0)

{

printf("Cannot read the alphabet file %s\n", alphName);

err = -2;

return err;

}

printf("Alphabet %s contains %d phonemes\n", alphName, alph.nPhons);

/* Read the number of files in the reference label file */

if ((nFilesRef = ReadNumFiles(mlfNameRef)) <= 0)

{

printf("Cannot read number of files from file %s\n", mlfNameRef);

err = -3;

Page 276: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 262

return err;

}

printf ("The number of reference label files is %d\n", nFilesRef);

/* Alloc memory for reference labels */

labelRef = (TLabelSeg *)malloc(sizeof(TLabelSeg)*nFilesRef);

if (labelRef == NULL)

{

printf("Avalaible memory exhausted for labels in %s\n", mlfNameRef);

err = -4;

return err;

}

/* Read the reference labels */

if ((err = LoadLabels(mlfNameRef, labelRef, alph)) != 0)

{

printf("Cannot read from file %s\n", err);

err = -5;

return err;

}

/* Read the number of files in the decoded label file */

if ((nFilesDec = ReadNumFiles(mlfNameDec)) <= 0)

{

printf("Cannot read number of files from file %s\n", mlfNameDec);

err = -6;

return err;

}

printf ("The number of decoded label files is %d\n", nFilesDec);

/* Alloc memory for decoded labels */

labelDec = (TLabelSeg *)malloc(sizeof(TLabelSeg)*nFilesDec);

Page 277: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 263

if (labelDec == NULL)

{

printf("Avalaible memory exhausted for labels in %s\n", mlfNameDec);

err = -7;

return err;

}

/* Read the reference labels */

if ((err = LoadLabels(mlfNameDec, labelDec, alph)) != 0)

{

printf("Cannot read from file %s\n", err);

err = -8;

return err;

}

/* Alloc memory for the structure containing the evaluation results */

segResults = (TTransition *)malloc(sizeof(TTransition)*alph.nPhons*alph.nPhons);

if (segResults == NULL)

{

printf("Avalaible memory exhausted for the structure with the evaluation

results\n");

err = -9;

return err;

}

/* Evalution of the time boundaries for the five tolerances considered */

for (i = 0; i < 5; i++)

{

if ((err = EvaluationBoundaries(nFilesRef, labelRef, nFilesDec, labelDec,

alph, tol[i], segResults)) != 0)

{

printf("Error in the evaluation process per tolerances\n");

err = -10;

Page 278: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 264

return err;

}

total_errors = 0;

total_instances = 0;

printf("\nSegmentation results\n\n");

for (j = 0; j < alph.nPhons*alph.nPhons-1; j++)

{

if (segResults[j].nInstances)

{

printf("Instances for transition %s-%s = %d\n",

segResults[j].nameTransition[0],

segResults[j].nameTransition[1], segResults[j].nInstances);

trans_errors = segResults[j].errorMarks[0]+segResults[j].errorMarks[1];

printf("Total errors: Perc = %f\n",

(float)(trans_errors)/(float)segResults[j].nInstances*100);

if (trans_errors)

{

printf("Right errors: Perc = %f ",

(float)segResults[j].errorMarks[0]/(float)trans_errors*100);

if (segResults[j].errorMarks[0])

printf("Average = %f ms\n",

(float)segResults[j].shiftMarks[0]*1e3/(float)segResults[j].errorMarks[0]);

else

printf("Average = 0.0 ms\n");

printf("Left errors: Perc = %f ",

(float)segResults[j].errorMarks[1]/(float)trans_errors*100);

if (segResults[j].errorMarks[1])

printf("Average = %f ms\n",

Page 279: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 265

(float)segResults[j].shiftMarks[1]*1e3/(float)segResults[j].errorMarks[1]);

else

printf("Average = 0.0 ms\n");

} /* if (trans_errors) */

printf("\n");

total_instances += segResults[j].nInstances;

total_errors += trans_errors;

} /* if (segResults[j].nInstances) */

} /* for (j = 0; j < alph.nPhons*alph.nPhons-1; j++)*/

printf("***********************************************\n");

printf("Total errors for tol %f ms = %f\n",

tol[i]*1e3, (float)total_errors/(float)total_instances*100);

} /* for (i = 0; i < 5; i++) */

/* Evalution of the time boundaries and output to a file */

if ((err = EvaluationBoundariesDet(nFilesRef, labelRef, nFilesDec, labelDec,

alph, resultsName)) != 0)

{

printf("Error in the evaluation process in file %s\n", resultsName);

err = -11;

return err;

}

/* Free memory */

UnloadAlphabet((TAlph *)&alph);

if (labelRef != NULL)

free(labelRef);

if (labelDec != NULL)

free(labelDec);

if (segResults != NULL)

Page 280: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.1. Programas ajenos empleados 266

free(segResults);

printf("Exiting program %s with code %d\n", argv[0], (int)err);

return err;

} /* End of Main */

Page 281: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.2. Ficheros de configuración 267

ANEXO 2. FICHEROS DE CONFIGURACIÓN

En el capítulo dedicado a la implementación del segmentador fonético

automático describimos detalladamente el código de los scripts que

hemos desarrollado para hacer funcionar dicho sistema. Muchas de las

herramientas de HTK hacen uso de ficheros de configuración cuyo

contenido relevante ha sido explicado en dicho capítulo. En este anexo

incluimos el contenido estándar de estos ficheros de configuración, si

bien se debe tener en cuenta que algunas variables pueden sufrir

modificaciones en ciertos momentos del proceso o dependiendo del

experimento que hayamos ejecutado, modificaciones que han sido

explicadas en el capítulo correspondiente.

A.2.1 CONFIG_FILE_HCOPY : config_hcopy_SES_mfcc_

MAXTRYOPEN = 2

SOURCEFORMAT = NOHEAD

SOURCERATE = 625.0

SOURCEKIND = WAVEFORM

TARGETFORMAT = HTK

TARGETRATE = 100000.0

TARGETKIND = MFCC_E_D_A

HPARM: SAVECOMPRESSED = T

HPARM: SAVEWITHCRC = T

HPARM: ZMEANSOURCE = T

HPARM: WINDOWSIZE = 250000.0

Page 282: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.2. Ficheros de configuración 268

HPARM: USEHAMMING = T

HPARM: PREEMCOEF = 0.97

HPARM: NUMCHANS = 40

HPARM: LPCORDER = 12

HPARM: COMPRESSFACT = 0.3333333

HPARM: NUMCEPS = 12

HPARM: CEPLIFTER = 22

HPARM: ESCALE = 1.0

HPARM: ENORMALISE = T

HPARM: SILFLOOR = 50.0

HPARM: USEPOWER = T

HPARM: CEPSCALE = 10

# Next lines to read & write binary data machine dependent

#HPARM: LOFREQ = 125

#HPARM: HIFREQ = 7800

HPARAM: TRACE = 1

#NATURALREADORDER = TRUE

#NATURALWRITEORDER = TRUE

A.2.2 CONFIG_FILE_HCOPY : config_hcopy_SES_plp_

# template used for front end processing

MAXTRYOPEN = 2

SOURCEFORMAT = NOHEAD

SOURCERATE = 625.0

SOURCEKIND = WAVEFORM

TARGETFORMAT = HTK

TARGETRATE = 100000.0

#TARGETKIND = PLP_0_D_A

TARGETKIND = PLP_0_D_A

HPARM: SAVECOMPRESSED = T

HPARM: SAVEWITHCRC = T

HPARM: ZMEANSOURCE = T

Page 283: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.2. Ficheros de configuración 269

HPARM: WINDOWSIZE = 250000.0

HPARM: USEHAMMING = T

HPARM: PREEMCOEF = 0.97

HPARM: NUMCHANS = 24

HPARM: LPCORDER = 12

HPARM: COMPRESSFACT = 0.3333333

HPARM: NUMCEPS = 12

HPARM: CEPLIFTER = 22

HPARM: ESCALE = 1.0

HPARM: ENORMALISE = T

HPARM: SILFLOOR = 50.0

HPARM: USEPOWER = T

HPARM: CEPSCALE = 10

# Next lines to read & write binary data machine dependent

#HPARM: LOFREQ = 125

#HPARM: HIFREQ = 7800

HPARAM: TRACE = 1

#NATURALREADORDER = TRUE

#NATURALWRITEORDER = TRUE

A.2.3 CONFIG_FILE_HCOMPV : config_hcompv_mfcc_

TARGETKIND = MFCC_E_D_A #Basic parametisation

MAXTRYOPEN = 2

#DELTAWINDOW = 3

#ACCWINDOW = 2

HNET:TRACE = 1

FORCEOUT = T # Needed for no token survived

# next line to read data machine dependent

#NATURALREADORDER = TRUE

#NATURALWRITEORDER = TRUE

Page 284: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.2. Ficheros de configuración 270

A.2.4 CONFIG_FILE_HCOMPV : config_hcompv_plp_

TARGETKIND = PLP_E_D_A #Basic parametisation

MAXTRYOPEN = 2

#DELTAWINDOW = 3

#ACCWINDOW = 2

HNET:TRACE = 1

FORCEOUT = T # Needed for no token survived

# next line to read data machine dependent

#NATURALREADORDER = TRUE

#NATURALWRITEORDER = TRUE

A.2.5 CONFIG_FILE_CMN : config_mfcc_cmn_cvn.cmn

TARGETKIND = MFCC_0_D_A_Z # Basic parameterisation

MAXTRYOPEN = 2

#NATURALREADORDER = TRUE

A.2.6 CONFIG_FILE_CMN : config_plp_cmn_cvn.cmn

TARGETKIND = PLP_0_D_A_Z # Basic parameterisation

MAXTRYOPEN = 2

#NATURALREADORDER = TRUE

A.2.7 CONFIG_FILE_CVN : config_mfcc_cmn_cvn.cvn

TARGETKIND = MFCC_0_D_A_Z

MAXTRYOPEN = 2

CMEANDIR = /usuarios_jcarmona/segmentation/segmenter/cmn

CMEANMASK = *%%%%%%%%%%%%.mfc

Page 285: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.2. Ficheros de configuración 271

A.2.8 CONFIG_FILE_CVN : config_plp_cmn_cvn.cvn

TARGETKIND = PLP_0_D_A_Z

MAXTRYOPEN = 2

CMEANDIR = /usuarios_jcarmona/segmentation/segmenter/cmn

CMEANMASK = *%%%%%%%%%%%%.plp

A.2.9 CONFIG_FILE_TRAIN : config_tr_mfcc_

HPARM: TARGETKIND = MFCC_E_D_A

MAXTRYOPEN = 2

#NATURALREADORDER = TRUE

#NATURALWRITEORDER = TRUE

#HFWDBKWD: PRUNEINIT = 200.0

#HFWDBKWD: PRUNEINC = 200.0

#HFWDBKWD: PRUNELIM = 1200.1

#HFWDBKWD: MINFORPROB = 20.0

HFWDBKWD: TRACE = 1

#CMEANDIR = /usuarios_jcarmona/segmentation/segmenter/cmn

#CMEANMASK = *%%%%%%%%%%%%.mfc

#VARSCALEDIR = /usuarios_jcarmona/segmentation/segmenter/cvn

#VARSCALEMASK = *%%%%%%%%%%%%.mfc

A.2.10 CONFIG_FILE_TRAIN : config_tr_mfcc_cmn_cvn

HPARM: TARGETKIND = MFCC_0_D_A_Z

MAXTRYOPEN = 2

#NATURALREADORDER = TRUE

#NATURALWRITEORDER = TRUE

#HFWDBKWD: PRUNEINIT = 200.0

Page 286: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.2. Ficheros de configuración 272

#HFWDBKWD: PRUNEINC = 200.0

#HFWDBKWD: PRUNELIM = 1200.1

#HFWDBKWD: MINFORPROB = 20.0

HFWDBKWD: TRACE = 1

CMEANDIR = /usuarios_jcarmona/segmentation/segmenter/cmn

CMEANMASK = *%%%%%%%%%%%%.mfc

VARSCALEDIR = /usuarios_jcarmona/segmentation/segmenter/cvn

VARSCALEMASK = *%%%%%%%%%%%%.mfc

A.2.11 CONFIG_FILE_TRAIN : config_tr_plp_

HPARM: TARGETKIND = PLP_E_D_A

MAXTRYOPEN = 2

#NATURALREADORDER = TRUE

#NATURALWRITEORDER = TRUE

#HFWDBKWD: PRUNEINIT = 200.0

#HFWDBKWD: PRUNEINC = 200.0

#HFWDBKWD: PRUNELIM = 1200.1

#HFWDBKWD: MINFORPROB = 20.0

HFWDBKWD: TRACE = 1

#CMEANDIR = /usuarios_jcarmona/segmentation/segmenter/cmn

#CMEANMASK = *%%%%%%%%%%%%.plp

#VARSCALEDIR = /usuarios_jcarmona/segmentation/segmenter/cvn

#VARSCALEMASK = *%%%%%%%%%%%%.plp

A.2.12 CONFIG_FILE_TRAIN : config_tr_plp_cmn_cvn

HPARM: TARGETKIND = PLP_0_D_A_Z

MAXTRYOPEN = 2

#NATURALREADORDER = TRUE

Page 287: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.2. Ficheros de configuración 273

#NATURALWRITEORDER = TRUE

#HFWDBKWD: PRUNEINIT = 200.0

#HFWDBKWD: PRUNEINC = 200.0

#HFWDBKWD: PRUNELIM = 1200.1

#HFWDBKWD: MINFORPROB = 20.0

HFWDBKWD: TRACE = 1

CMEANDIR = /usuarios_jcarmona/segmentation/segmenter/cmn

CMEANMASK = *%%%%%%%%%%%%.plp

VARSCALEDIR = /usuarios_jcarmona/segmentation/segmenter/cvn

VARSCALEMASK = *%%%%%%%%%%%%.plp

Page 288: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.3. Textos de las bases de datos empleadas 274

ANEXO 3. TEXTOS DE LAS BASES DE

DATOS EMPLEADAS

A.3.1 BASE DE DATOS SES: PÁRRAFOS (R)

Párrafo 1

Los participantes en el Congreso marcharon después a El Escorial. Se

trasladaron allí en un amplio autobús, en el que un guía iba explicando

los monumentos relevantes del recorrido. La visita al monasterio fue

comentada por el mismo guía que debía saber mucho sobre El Greco,

en cuyo cuadro "el martirio de San Mauricio" se extendió ampliamente;

no debía ser igual su conocimiento del resto de los cuadros que

componían la pinacoteca, sobre los cuales pasó como un rayo, dando

lugar a sonrisas cómplices.

Párrafo 2

Sergio era un joven serio y trabajador que vivía cerca de la hospedería

del Monasterio de Guadalupe, en las Villuercas, comarca perteneciente

a la provincia de Cáceres. Se ganaba la vida vendiendo recuerdos

alusivos a la Virgen Morenita, desde llaveros a platos con la imagen

grabada en esmalte vidriado. Tenía un problema y era que su tiendecita

era de mala construcción y estaba en una parte del pueblo muy

empinada, fenómeno por otra parte normal en aquel lugar. Había

mucho turismo en la zona. Sergio tuvo la mala suerte de perder su

Page 289: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.3. Textos de las bases de datos empleadas 275

tienda en las últimas inundaciones, pues un corrimiento de tierras se la

llevó por delante, con lo cual se le acabó su modo de vida.

Párrafo 3

Pablo estudiaba en la Universidad Politécnica de Madrid y estaba

deseando regresar a Medellín; echaba de menos los productos de la

matanza y los quesos frescos que hacía su abuela. Ya faltaba poco para

las vacaciones; entonces volvería a las orillas del Guadiana, bajo los

chopos. Su deseo era tan grande que a veces se le hacían años los

pocos días que faltaban.

Párrafo 4

La vida diaria a menudo no es tan fácil, aunque estemos en el final del

siglo veinte. Sobre todo cuando los dos en la pareja trabajan. Siempre

hay que preguntarse si ya se cambió la ropa, si la puerta tiene el cerrojo

o si tengo la llave en el bolsillo. Yo llevo al niño en el coche. Todos los

días; al colegio. Pero ¿quién hace la compra? Al final de la semana todo

se acaba. No queda fruta los viernes. Los sábados dejaron la cuenta al

cero. Y los domingos, aunque te dices que vivirás una feliz experiencia,

la cosa no es tan sencilla: el niño sale con sus amigos. ¿Hay algún chico

en la esquina? ¿Se cayó en el jardín? Desde luego, siempre gozan de

perfecta salud y yo estoy aquí preocupándome por nada.

Definitivamente, vivir no es tan sencillo ni al final del siglo veinte.

A.3.2 BASE DE DATOS SES: FRASES (F)

01: No queda fruta los viernes

02: ¿Ya se cambió de ropa?

Page 290: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.3. Textos de las bases de datos empleadas 276

03: ¿Hay algún chico en la esquina?

04: El final del siglo veinte.

05: ¿La puerta tiene cerrojo?

06: Tengo la llave en el bolsillo.

07: ¿Se cayó en el jardín?

08: ¿Rompió la yema del huevo?

09: Gozan de perfecta salud.

10: Vivirás una feliz experiencia.

11: Dejaron la deuda al cero

12: Le gusta mucho el gregoriano.

13: Yo llevo al niño en el coche.

14: Llegó la reina del puño cerrado.

15: Arrizabalaga dejará la reyerta.

A.3.3 BASE DE DATOS SEV: FRASES PROVENIENTES DE

SES (F)

101: Los participantes en el Congreso marcharon después a El

Escorial.

202: Se ganaba la vida vendiendo recuerdos alusivos a la Virgen

Morenita, desde llaveros a platos con la imagen grabada en

esmalte vidriado.

302: Echaba de menos los productos de la matanza y los quesos

frescos que hacía su abuela.

Page 291: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.3. Textos de las bases de datos empleadas 277

A.3.4 BASE DE DATOS SEV: FRASES PROVENIENTES DEL

QUIJOTE (Q)

00110: Tirad, llegad, venid y ofendedme en cuanto pudiéres, que

vosotros veréis el pago que lleváis de vuestra sandez y demasía.

00210: Y tal es la suavidad de la voz con que los canta, que

encanta.

A.3.5 BASE DE DATOS SEV: FRASES PROVENIENTES DE

PROSODIA (P)

10110: Al leer la palabra "plan", hay ya quien se figura que voy a

desenvainar un proyecto de ley con quinientos o mil artículos y

un haz de reglamentos complementarios.

10910: Yo les contesto que quien en realidad da una broma al

país es el ministro, que, puesto de gran uniforme, sube a la

tribuna parlamentaria y lee una ley de instrucción pública con

arreglo a los últimos adelantos pedagógicos.

20510: ¿A usted qué impresión le hacía tener un padre marino?

20610: Pues, realmente, muy poca.

30110: Usted tiene un oficio muy interesante, ¿podría explicarme

un poco cómo llegó a él?

30210: Bueno, a mí siempre me habían interesado las Ciencias

Naturales, y tuve la gran suerte de poder empezar a trabajar con

un gran maestro, aquí, en el museo.

41010: ¿Vienes?

41050: ¿Te vienes?

Page 292: Desarrollo de un segmentador fonético automático para ...lorien.die.upm.es/juancho/pfcs/JCM/PFCJuanCarmonaMariscal.pdf · universidad politÉcnica de madrid escuela tÉcnica superior

Desarrollo de un segmentador fonético automático para habla expresiva

basado en modelos ocultos de Markov Juan Carmona Mariscal

A.3. Textos de las bases de datos empleadas 278

51010: ¿Estarán allí?

51080: ¿En dónde trabajas?