lorien.die.upm.eslorien.die.upm.es/.../dst/pfc_dst_entregado_final.docx · web viewercepción de...

337
UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS DE TELECOMUNICACIÓN DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA PROYECTO FIN DE CARRERA Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª DOLORES SEGOVIA TORRES Ingeniero de Telecomunicación Madrid, 2010

Upload: doankien

Post on 30-Jan-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

UNIVERSIDAD POLITÉCNICA DE MADRIDESCUELA TÉCNICA SUPERIOR DE INGENIEROS

DE TELECOMUNICACIÓNDEPARTAMENTO DE INGENIERÍA ELECTRÓNICA

PROYECTO FIN DE CARRERA

Desarrollo de un conversor texto-voz multiemoción en castellano

por concatenación de difonemas

Mª DOLORES SEGOVIA TORRESIngeniero de Telecomunicación

Madrid, 2010

Page 2: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide
Page 3: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

UNIVERSIDAD POLITÉCNICA DE MADRIDDEPARTAMENTO DE INGENIERÍA ELECTRÓNICAESCUELA TÉCNICA SUPERIOR DE INGENIEROS

DE TELECOMUNICACIÓN

PROYECTO FIN DE CARRERADesarrollo de un conversor

texto-voz multiemoción en castellano por concatenación de difonemas

Mª DOLORES SEGOVIA TORRESIngeniero de Telecomunicación

Tutor del ProyectoJUAN MANUEL MONTERO MARTÍNEZ

Doctor Ingeniero de Telecomunicación2010

Page 4: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide
Page 5: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

PROYECTO FIN DE CARRERA

Título: Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas

Autora: Mª Dolores Segovia Torres

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. José Manuel Pardo Muñoz Firma:

Vocal: D. Ricardo de Córdoba Herralde Firma:

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

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

Fecha de Lectura:

Calificación:

Page 6: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide
Page 7: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

RESUMEN:La interacción entre seres humanos y máquinas se está convirtiendo poco a poco

en una realidad en nuestra sociedad y se busca que día a día esa interacción se

realice de forma lo más fácil y accesible posible para el ser humano. La forma básica

de comunicación humana es mediante la voz y la expresión corporal. A pesar de que

ya existen sistemas que permiten la interacción mediante la voz, en ocasiones, estos

carecen de naturalidad por lo que en este proyecto se ha implementado una primera

versión de un sintetizador de habla con emociones, por concatenación de difonemas,

para así poder humanizar los sistemas.

A lo largo de la memoria, se explica todo el proceso seguido para la generación de

la nueva versión multiemoción.

Finalmente, se presentan las conclusiones obtenidas y las posibles líneas futuras

de investigación.

PALABRAS CLAVE:

síntesis de emociones, síntesis por concatenación, difonema, modelado de prosodia

Page 8: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

A mis padres

Page 9: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide
Page 10: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

ÍNDICE GENERAL ÍNDICE DE FIGURAS...................................................................................................XV

ÍNDICE DE TABLAS.................................................................................................XVIII

ÍNDICE DE CUADROS.................................................................................................XX

GLOSARIO..................................................................................................................XXI

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

1.1 INTRODUCCIÓN A LOS SISTEMAS DE SÍNTESIS DE VOZ...........................................1

1.2 OBJETIVOS DEL PROYECTO..................................................................................2

1.3 FASES DEL PROYECTO........................................................................................2

1.4 HERRAMIENTAS UTILIZADAS.................................................................................3

2. INTRODUCCIÓN A LOS SISTEMAS DE SÍNTESIS DE VOZ.................................5

2.1 INTRODUCCIÓN...................................................................................................5

2.2 ARQUITECTURA GENERAL DE UN SINTETIZADOR DE HABLA.....................................5

2.2.1 Procesamiento de Lenguaje Natural (NLP).................................................6

2.2.2 Proceso de síntesis......................................................................................7

2.2.2.1 Clasificación de los procesos de síntesis de habla..............................................7

2.2.2.2 Síntesis por formantes........................................................................................10

2.2.2.3 Síntesis por concatenación................................................................................11

2.2.2.4 Comparación de los métodos de síntesis...........................................................13

2.3 APLICACIONES DE LA SÍNTESIS DE HABLA...........................................................14

3. ANÁLISIS DE LAS EMOCIONES..........................................................................15

3.1 INTRODUCCIÓN.................................................................................................15

3.2 CONCEPTO DE EMOCIÓN...................................................................................15

3.2.1 Componentes de la emoción......................................................................17

3.2.2 Función de las emociones..........................................................................17

3.3 CLASIFICACIÓN DE LAS EMOCIONES...................................................................18

3.3.1 Clasificación discreta o básica de las emociones.......................................18

3.3.2 Estudio dimensional de las emociones.......................................................19

3.4 EFECTOS DE LAS EMOCIONES EN EL HABLA........................................................20

3.4.1 Pitch............................................................................................................21

3.4.2 Duración.....................................................................................................21

3.4.3 Cualidad de la voz......................................................................................21

3.5 EMOCIONES IMPLEMENTADAS EN EL SINTETIZADOR BORIS...................................22

3.5.1 La emoción Tristeza...................................................................................22

3.5.2 La emoción Alegría.....................................................................................23

3.5.3 La emoción Sorpresa..................................................................................24

Page 11: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

3.5.4 La emoción Enfado.....................................................................................24

4. SEGMENTACIÓN Y MARCADO DE LA BASE DE DATOS.................................26

4.1 INTRODUCCIÓN.................................................................................................26

4.2 BASE DE DATOS O CORPUS DE LOGATOMOS......................................................26

4.3 SEGMENTACIÓN FONÉTICA Y MARCACIÓN DE F0 AUTOMÁTICAS............................27

4.3.1 Técnicas de segmentación fonética............................................................27

4.3.1.1 Segmentación fonética automática basada en Modelos Ocultos de Markov.....28

4.3.2 Técnicas de marcación de pitch.................................................................28

4.4 SEGMENTACIÓN FONÉTICA Y MARCACIÓN DE F0 MANUAL....................................30

4.4.1 Problemas detectados durante la revisión manual.....................................32

4.4.1.1 Fonemas de duración 0 segundos (ModificaTextgrid.exe).................................32

4.4.1.2 Fonema ‘sp’ no contemplado en sintetizador de difonemas (CambiaSp.exe). . .36

4.4.2 Conclusiones de la revisión manual de segmentación...............................37

4.4.3 Conclusiones de la revisión manual de la marcación.................................41

5. GENERACIÓN DE LA BASE DE DATOS DE DIFONEMAS.................................44

5.1 INTRODUCCIÓN.................................................................................................44

5.2 PROCESO DE GENERACIÓN DEL CORPUS............................................................44

5.3 DETALLE DE PROGRAMAS..................................................................................50

5.3.1 GeneraParPcm.exe....................................................................................50

5.3.2 SacadifVC.exe............................................................................................52

5.3.2.1 Problemas detectados y modificaciones realizadas...........................................58

5.4 OBTENLISTADIF.EXE.........................................................................................61

5.5 GENDB.EXE......................................................................................................63

5.5.1.1 Problemas detectados y modificaciones realizadas...........................................65

6. SINTETIZADOR DE VOZ BORIS...........................................................................68

6.1 INTRODUCCIÓN.................................................................................................68

6.2 DESCRIPCIÓN GENERAL.....................................................................................68

6.3 BLOQUE DE PROCESADO DE LENGUAJE DEL SINTETIZADOR..................................70

6.3.1 Descripción general del Bloque..................................................................70

6.3.2 Implementación del bloque de procesado..................................................71

6.3.2.1 Inicialización del sistema....................................................................................72

6.3.2.2 Generación de los bloques de palabra...............................................................78

6.3.2.3 Generación de los bloques de fonema...............................................................84

6.3.2.4 Asignación de tono y duraciones a los fonemas................................................89

6.4 BLOQUE DE SÍNTESIS DE HABLA.........................................................................93

6.4.1 Descripción general del bloque...................................................................93

6.4.2 La síntesis TD-PSOLA................................................................................94

6.4.2.1 El proceso de síntesis........................................................................................95

Page 12: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

6.4.3 Implementación del bloque de síntesis.......................................................97

6.5 BLOQUE DE SALIDA.........................................................................................100

6.5.1 Descripción general del Bloque de Salida................................................100

6.5.2 Implementación del bloque.......................................................................101

6.5.2.1 Liberación de recursos del sistema..................................................................102

6.6 MODIFICACIONES REALIZADAS EN EL SINTETIZADOR..........................................102

6.6.1 Módulos de entonación y duraciones heredados......................................102

6.6.1.1 Asignación de duraciones a los fonemas.........................................................102

6.6.1.2 Asignación de frecuencia media a los fonemas...............................................107

6.6.2 Adaptación al nuevo formato del archivo de base de datos.....................119

6.6.3 Control de unidades ensordecidas en el sintetizador...............................119

6.6.4 Las Secuencias de Control.......................................................................120

6.6.4.1 Descripción e implementación en el programa................................................120

6.6.4.2 Análisis de las secuencias de control disponibles............................................121

6.6.5 Introducción de emociones con distinto grado..........................................127

7. IMPLEMENTACIÓN DE EMOCIONES EN EL HABLA.......................................130

7.1 CORPUS S.E.S...............................................................................................130

7.2 ESTRUCTURA DE LOS FICHEROS DE INICIALIZACIÓN DE EMOCIONES...................131

7.3 MODELADO PROSÓDICO DEL ESTADO NEUTRO..................................................133

7.3.1 Caracterización del estado neutro............................................................133

7.4 MODELADO PROSÓDICO DE LA EMOCIÓN ALEGRÍA.............................................143

7.4.1 Caracterización de la emoción alegría......................................................144

7.5 MODELADO PROSÓDICO DE LA EMOCIÓN TRISTEZA...........................................154

7.5.1 Caracterización de la emoción tristeza.....................................................155

7.6 MODELADO PROSÓDICO DE LA EMOCIÓN SORPRESA.........................................163

7.6.1 Caracterización de la emoción sorpresa...................................................164

7.7 MODELADO PROSÓDICO DE LA EMOCIÓN ENFADO.............................................174

7.7.1 Caracterización de la emoción enfado......................................................175

8. CONCLUSIONES OBTENIDAS DURANTE EL PROCESO Y LÍNEAS FUTURAS DE INVESTIGACIÓN...........................................................................................186

8.1 CONCLUSIONES..............................................................................................186

8.2 LÍNEAS FUTURAS DE INVESTIGACIÓN................................................................190

9. BIBLIOGRAFÍA....................................................................................................191

10. PLIEGO DE CONDICIONES................................................................................194

10.1 CONDICIONES GENERALES...............................................................................194

10.2 CONDICIONES GENERALES A TODOS LOS PROGRAMAS......................................195

10.3 CONDICIONES GENERALES DE PRUEBA.............................................................195

Page 13: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

10.4 RECURSOS MATERIALES..................................................................................195

10.5 RECURSOS LÓGICOS.......................................................................................195

11. PRESUPUESTO...................................................................................................196

11.1 PRESUPUESTO DE EJECUCIÓN MATERIAL..........................................................196

11.1.1 Relación de salarios................................................................................196

11.1.2 Relación de obligaciones sociales..........................................................197

11.1.3 Relación de salarios efectivos totales.....................................................197

11.1.4 Coste de la mano de obra.......................................................................197

11.1.5 Coste total de materiales........................................................................198

11.1.6 Importe total del presupuesto de ejecución material...............................198

11.2 IMPORTE DE EJECUCIÓN POR CONTRATA..........................................................199

11.3 HONORARIOS FACULTATIVOS...........................................................................199

11.4 IMPORTE TOTAL DEL PROYECTO......................................................................200

I. ANEXO I...............................................................................................................203

1. MANUAL PROGRAMA PRAAT................................................................................203

Menús y manejo del programa............................................................................203Análisis de etiquetas.......................................................................................................204

Análisis de marcas de F0................................................................................................206

2. MANUAL REVISIÓN MANUAL DE MARCAS Y SEGMENTACIÓN....................................208

Revisión de marcas F0........................................................................................208

Revisión de la segmentación...............................................................................218

3. LENGUAJE PERL.................................................................................................222

Variables y datos.................................................................................................222

Entrada/Salida.....................................................................................................222

Estructuras de control..........................................................................................223

Expresiones regulares y patrones de búsqueda..................................................223

Manejo de archivos..............................................................................................225

4. CREACIÓN FICHERO POR LOTES...........................................................................225

Page 14: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

ÍNDICE DE FIGURAS FIGURA 1: ESQUEMA DE UN SINTETIZADOR DE HABLA.......................................................................6

FIGURA 2: SISTEMA DE SÍNTESIS DE HABLA BASADO EN HMM (HTS) [KTHZ 09]..............................9

FIGURA 3: ESQUEMA DEL SINTETIZADOR POR FORMANTES DE KLATT [KLATT 1987].........................11

FIGURA 4: REPRESENTACIÓN TEMPORAL DE LOS CONCEPTOS: EMOCIÓN, ESTADO DE ÁNIMO Y

PERSONALIDAD..................................................................................................................... 16

FIGURA 5: REPRESENTACIÓN BIDIMENSIONAL DE LAS EMOCIONES (ADAPTACIÓN DEL MODELO

PROPUESTO POR RUSSELL) [RUSSELL 1980].........................................................................20

FIGURA 6: RELACIÓN ENTRE SEÑAL EGG Y EL CIERRE Y APERTURA DE LA GLOTIS [HCMT 04]........29

FIGURA 7: SEÑAL DE EGG FILTRADA Y MARCAS DE PITCH GENERADAS...........................................30

FIGURA 8: VISUALIZACIÓN DEL ERROR PRODUCIDO EN EL PROCEDIMIENTO DE SEGMENTACIÓN

AUTOMÁTICO EN EL FICHERO L_A_18600..............................................................................33

FIGURA 9: SOLUCIÓN DEL ERROR PRODUCIDO EN EL PROCEDIMIENTO DE SEGMENTACIÓN AUTOMÁTICO

EN EL FICHERO L_A_18600..................................................................................................34

FIGURA 10: FRONTERA FONÉTICA DE SEPARACIÓN ENTRE LOS FONEMAS /N/ Y /M/...........................38

FIGURA 11: RUIDO PREVIO AL LOGATOMO “BUZO” EN EL FICHERO L_T_09100................................39

FIGURA 12: ENSORDECIMIENTO DE FONEMAS FINALES EN LA EMOCIÓN TRISTEZA.............................40

FIGURA 13: DIAGRAMA DE FLUJO DEL PROCESO DE GENERACIÓN DEL CORPUS DE DIFONEMAS.........44

FIGURA 14: DIAGRAMA GENERACIÓN FICHEROS DE MUESTRAS Y PARÁMETROS................................45

FIGURA 15: DIAGRAMA DE FICHEROS NECESARIOS Y GENERADOS EN LA SÍNTESIS DE DIFONEMAS....47

FIGURA 16: EJEMPLO REAL DE ORDENACIÓN DE DIFONEMAS CON MISMO NOMBRE DE LA SERIE

L_N_07600......................................................................................................................... 48

FIGURA 17: DETALLE DE FICHEROS QUE INTERVIENEN EN LA SELECCIÓN AUTOMÁTICA.....................49

FIGURA 18: ESQUEMA DE FICHEROS QUE INTERVIENEN EN LA GENERACIÓN DEL ARCHIVO DE BASE

DATOS FINAL........................................................................................................................ 50

FIGURA 19: ESQUEMA DEL SINTETIZADOR DE HABLA POR CONCATENACIÓN BORIS...........................69

FIGURA 20: ESQUEMA DEL BLOQUE DE PROCESADO DE TEXTO......................................................71

FIGURA 21: ESTRUCTURA EMOLISTA..............................................................................................76

FIGURA 22: ESQUEMA DE LA ESTRUCTURA TBLKPALABRA..............................................................83

FIGURA 23: DIAGRAMA PSD_MAIN HASTA GENERACIÓN DE BLOQUES DE PALABRA...........................84

FIGURA 24: ESQUEMA DE LA ESTRUCTURA TBLKFONEMA...............................................................89

FIGURA 25: ESQUEMA DEL BLOQUE DE SÍNTESIS DE HABLA...........................................................94

FIGURA 26: SEÑAL DE VOZ CON SUS MARCAS DE PITCH.................................................................95

FIGURA 27: POSICIÓN DE LAS MARCAS EN EL EJE DE SÍNTESIS.......................................................96

FIGURA 28: CORRELACIÓN ENTRE LOS EJES DE ANÁLISIS Y SÍNTESIS [MGCM00]............................97

FIGURA 29: ESQUEMA DEL BLOQUE DE SALIDA............................................................................101

FIGURA 30: GRABACIÓN FRASE “NO QUEDA FRUTA LOS VIERNES.” CON EMOCIÓN NEUTRA.............134

FIGURA 31: GRABACIÓN FRASE “EL FINAL DEL SIGLO VEINTE” CON ESTADO NEUTRO......................135

Page 15: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

FIGURA 32: GRABACIÓN FRASE “TENGO LA LLAVE EN EL BOLSILLO” EN ESTADO NEUTRO...............136

FIGURA 33: GRABACIÓN FRASE “GOZAN DE PERFECTA SALUD.” CON EMOCIÓN NEUTRA.................138

FIGURA 34: GRABACIÓN FRASE “VIVIRÁS UNA FELIZ EXPERIENCIA” EN ESTADO NEUTRO.................139

FIGURA 35: GRABACIÓN FRASE “LE GUSTA MUCHO EL GREGORIANO” EN ESTADO NEUTRO.............140

FIGURA 36: GRABACIÓN FRASE “LLEGÓ LA REINA DEL PUÑO CERRADO” EN ESTADO NEUTRO.........141

FIGURA 37: GRABACIÓN FRASE “NO QUEDA FRUTA LOS VIERNES” EN EMOCIÓN ALEGRÍA................145

FIGURA 38: GRABACIÓN FRASE “EL FINAL DEL SIGLO VEINTE” CON LA EMOCIÓN ALEGRÍA...............146

FIGURA 39: GRABACIÓN FRASE “TENGO LA LLAVE EN EL BOLSILLO” CON EMOCIÓN ALEGRÍA...........148

FIGURA 40: GRABACIÓN FRASE “VIVIRÁS UNA FELIZ EXPERIENCIA” CON EMOCIÓN ALEGRÍA............149

FIGURA 41: GRABACIÓN FRASE “LE GUSTA MUCHO EL GREGORIANO” EN EMOCIÓN ALEGRÍA...........150

FIGURA 42: GRABACIÓN “LLEGÓ LA REINA DEL PUÑO CERRADO.” CON EMOCIÓN ALEGRÍA.............152

FIGURA 43: GRABACIÓN FRASE “NO QUEDA FRUTA LOS VIERNES.” CON EMOCIÓN TRISTEZA...........156

FIGURA 44: GRABACIÓN FRASE “LA PUERTA TIENE CERROJO.” CON TRISTEZA...............................157

FIGURA 45: GRABACIÓN FRASE “GOZAN DE PERFECTA SALUD.” CON EMOCIÓN TRISTEZA...............158

FIGURA 46: GRABACIÓN FRASE “VIVIRÁS UNA FELIZ EXPERIENCIA” CON TRISTEZA..........................160

FIGURA 47: GRABACIÓN FRASE “LE GUSTA MUCHO EL GREGORIANO” CON TRISTEZA......................161

FIGURA 48: GRABACIÓN FRASE “NO QUEDA FRUTA LOS VIERNES.” CON EMOCIÓN SORPRESA.........165

FIGURA 49: GRABACIÓN FRASE “EL FINAL DEL SIGLO VEINTE” CON EMOCIÓN SORPRESA................167

FIGURA 50: GRABACIÓN FRASE “VIVIRÁS UNA FELIZ EXPERIENCIA” CON SORPRESA.......................168

FIGURA 51: GRABACIÓN FRASE “LE GUSTA MUCHO EL GREGORIANO” CON SORPRESA....................170

FIGURA 52: GRABACIÓN FRASE “LLEGÓ LA REINA DEL PUÑO CERRADO” CON SORPRESA................171

FIGURA 53: GRABACIÓN FRASE “NO QUEDA FRUTA LOS VIERNES.” CON EMOCIÓN ENFADO.............176

FIGURA 54: GRABACIÓN FRASE “EL FINAL DEL SIGLO VEINTE” CON EMOCIÓN ENFADO....................178

FIGURA 55: GRABACIÓN FRASE “TENGO LA LLAVE EN EL BOLSILLO” CON EMOCIÓN ENFADO...........179

FIGURA 56: GRABACIÓN FRASE “VIVIRÁS UNA FELIZ EXPERIENCIA” CON ENFADO...........................180

FIGURA 57: GRABACIÓN FRASE “LE GUSTA MUCHO EL GREGORIANO” CON ENFADO........................182

FIGURA 58: GRABACIÓN FRASE “LLEGÓ LA REINA DEL PUÑO CERRADO” CON ENFADO....................183

FIGURA 59: OBJECT WINDOW DEL PROGRAMA PRAAT CON OBJETOS CARGADOS...........................204

FIGURA 60: EDITOR DE TEXTGRID EN EL QUE APARECE EL OBJETO RESULTANTE DE LA

SEGMENTACIÓN AUTOMÁTICA PARA SU MODIFICACIÓN E INFORMACIÓN ADICIONAL..................205

FIGURA 61: EDITOR DE TEXTGRID EN EL QUE APARECE EL OBJETO MODIFICADO...........................206

FIGURA 62: EDITOR DE OBJETO TEXTGRID CON NIVEL TEXTTIER (1) E INTERVALTIER (2)..............207

FIGURA 63: EDITOR DE SCRIPT DEL PROGRAMA PRAAT................................................................208

FIGURA 64: FONEMA OCLUSIVO...................................................................................................209

FIGURA 65: FONEMA FRICATIVO..................................................................................................210

FIGURA 66: FONEMA FINAL DE LOGATOMO...................................................................................211

FIGURA 67: EJEMPLO DE MARCADO DEL HIATO /OA/.....................................................................212

FIGURA 68: FONEMA APROXIMANTE /G/ ENTRE DOS VOCALES EN ESTADO NEUTRO........................213

FIGURA 69: FONEMA APROXIMANTE /G/ ENTRE DOS VOCALES EN EMOCIÓN SORPRESA...................213

FIGURA 70: EJEMPLO FONEMA OCLUSIVO INICIO DE LOGATOMO....................................................214

Page 16: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

FIGURA 71: EJEMPLO FONEMA NASAL /M/ ENTRE DOS VOCALES....................................................215

FIGURA 72: FONEMA LATERAL /L/ ENTRE DOS VOCALES................................................................216

FIGURA 73: MARCADO FONEMA VIBRANTE /R/ ENTRE VOCALES.....................................................217

FIGURA 74: MARCADO FONEMA VIBRANTE MÚLTIPLE /RR/ ENTRE VOCALES....................................217

FIGURA 75: EJEMPLO SEGMENTACIÓN FONEMA OCLUSIVO /K/.......................................................219

FIGURA 76: EJEMPLO SEGMENTACIÓN FONEMA FRICATIVO /T/......................................................220

FIGURA 77: EJEMPLO SEGMENTACIÓN FONEMA /Ñ/.......................................................................221

FIGURA 78: EJEMPLO SEGMENTACIÓN HIATO /AE/.........................................................................221

Page 17: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

ÍNDICE DE TABLAS TABLA 1: MODIFICACIONES REALIZADAS EN EL ARRAY TTRADFON DEL PROGRAMA SACADIFVC.EXE.59

TABLA 2: DIFERENCIAS DETECTADAS EN EL TAMAÑO DE VARIABLES EN GENDB.EXE.........................66

TABLA 3: ASIGNACIÓN DE F0 PARA GRUPOS FÓNICOS CON UNA TÓNICA........................................114

TABLA 4: ASIGNACIÓN DE F0 EN LA ZONA INICIAL.........................................................................115

TABLA 5: COEFICIENTES PARA LA ASIGNACIÓN DE F0 EN LA PARTE FINAL......................................117

TABLA 6: SECUENCIA DE CONTROL [T:X] (TONO GLOBAL DEL HABLA, FACTOR ADITIVO)..................122

TABLA 7: SECUENCIA DE CONTROL [P:X] (TONO LOCAL DEL HABLA, FACTOR ADITIVO)...................122

TABLA 8: SECUENCIA DE CONTROL [M:X] (TONO GLOBAL DEL HABLA, FACTOR MULTIPLICATIVO).....123

TABLA 9: SECUENCIA DE CONTROL [W:X] (TONO LOCAL DEL HABLA, FACTOR MULTIPLICATIVO).......124

TABLA 10: SECUENCIA DE CONTROL [V:X] (VELOCIDAD GLOBAL DE HABLA)....................................125

TABLA 11: SECUENCIA DE CONTROL [U:X] (VELOCIDAD LOCAL DE HABLA)......................................125

TABLA 12: SECUENCIA DE CONTROL [E:X] (EMOCIONES)...............................................................126

TABLA 13: SECUENCIA DE CONTROL [N:X] (GRADOS EN EMOCIONES)............................................127

TABLA 14: SECUENCIA DE CONTROL [B:X] (INTRODUCCIÓN DE PAUSAS).........................................127

TABLA 15: PARÁMETROS ENTONACIÓN "NO QUEDA FRUTA LOS VIERNES" (ESTADO NEUTRO)..........135

TABLA 16: PARÁMETROS ENTONACIÓN "EL FINAL DEL SIGLO VEINTE" (ESTADO NEUTRO)................136

TABLA 17: PARÁMETROS ENTONACIÓN "TENGO LA LLAVE EN EL BOLSILLO" (ESTADO NEUTRO).......137

TABLA 18: PARÁMETROS ENTONACIÓN "GOZAN DE PERFECTA SALUD" (ESTADO NEUTRO)..............138

TABLA 19: PARÁMETROS ENTONACIÓN "VIVIRÁS UNA FELIZ EXPERIENCIA" (ESTADO NEUTRO).........139

TABLA 20: PARÁMETROS ENTONACIÓN "LE GUSTA MUCHO EL GREGORIANO" (ESTADO NEUTRO).....141

TABLA 21: PARÁMETROS ENTONACIÓN "LLEGÓ LA REINA DEL PUÑO CERRADO" (ESTADO NEUTRO). 142

TABLA 22: RESUMEN PARÁMETROS ENTONACIÓN ESTADO NEUTRO...............................................142

TABLA 23: CARACTERIZACIÓN DE LA ENTONACIÓN DEL ESTADO NEUTRO.......................................143

TABLA 24: PARÁMETROS ENTONACIÓN "NO QUEDA FRUTA LOS VIERNES" (EMOCIÓN ALEGRÍA).......146

TABLA 25: PARÁMETROS ENTONACIÓN "EL FINAL DEL SIGLO VEINTE" (EMOCIÓN ALEGRÍA).............147

TABLA 26: PARÁMETROS ENTONACIÓN "TENGO LA LLAVE EN EL BOLSILLO" (EMOCIÓN ALEGRÍA).....148

TABLA 27: PARÁMETROS ENTONACIÓN "VIVIRÁS UNA FELIZ EXPERIENCIA" (EMOCIÓN ALEGRÍA).......150

TABLA 28: PARÁMETROS ENTONACIÓN "LE GUSTA MUCHO EL GREGORIANO" (EMOCIÓN ALEGRÍA)...151

TABLA 29: PARÁMETROS ENTONACIÓN "LLEGÓ LA REINA DEL PUÑO CERRADO" (EMOCIÓN ALEGRÍA)

......................................................................................................................................... 152

TABLA 30: RESUMEN PARÁMETROS ENTONACIÓN ALEGRÍA............................................................153

TABLA 31: CARACTERIZACIÓN DE LA ENTONACIÓN DE LA EMOCIÓN ALEGRÍA..................................153

TABLA 32: VALORES FINALES DE PARÁMETROS DE ENTONACIÓN CON ALEGRÍA..............................154

TABLA 33: PARÁMETROS ENTONACIÓN "NO QUEDA FRUTA LOS VIERNES" (EMOCIÓN TRISTEZA)......157

TABLA 34: PARÁMETROS ENTONACIÓN "LA PUERTA TIENE CERROJO" (EMOCIÓN TRISTEZA)............158

TABLA 35: PARÁMETROS ENTONACIÓN "GOZAN DE PERFECTA SALUD" (EMOCIÓN TRISTEZA)..........159

TABLA 36: PARÁMETROS ENTONACIÓN "VIVIRÁS UNA FELIZ EXPERIENCIA" (EMOCIÓN TRISTEZA).....160

Page 18: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

TABLA 37: PARÁMETROS ENTONACIÓN "LE GUSTA MUCHO EL GREGORIANO" (EMOCIÓN TRISTEZA). 162

TABLA 38: RESUMEN PARÁMETROS ENTONACIÓN EMOCIÓN TRISTEZA...........................................162

TABLA 39: CARACTERIZACIÓN DE LA ENTONACIÓN DE LA EMOCIÓN TRISTEZA.................................163

TABLA 40: PARÁMETROS ENTONACIÓN "NO QUEDA FRUTA LOS VIERNES" (EMOCIÓN SORPRESA)....166

TABLA 41: PARÁMETROS ENTONACIÓN "EL FINAL DEL SIGLO VEINTE" (EMOCIÓN SORPRESA)..........167

TABLA 42: PARÁMETROS ENTONACIÓN "VIVIRÁS UNA FELIZ EXPERIENCIA" (EMOCIÓN SORPRESA)...169

TABLA 43: PARÁMETROS ENTONACIÓN "LE GUSTA MUCHO EL GREGORIANO" (EMOCIÓN SORPRESA)

......................................................................................................................................... 171

TABLA 44: PARÁMETROS ENTONACIÓN "LLEGÓ LA REINA DEL PUÑO CERRADO" (EMOCIÓN SORPRESA)

......................................................................................................................................... 172

TABLA 45: RESUMEN PARÁMETROS ENTONACIÓN EMOCIÓN SORPRESA.........................................172

TABLA 46: CARACTERIZACIÓN DE LA ENTONACIÓN DE LA EMOCIÓN SORPRESA..............................173

TABLA 47: VALORES FINALES DE PARÁMETROS DE ENTONACIÓN EN SORPRESA.............................174

TABLA 48: PARÁMETROS ENTONACIÓN "NO QUEDA FRUTA LOS VIERNES" (EMOCIÓN ENFADO)........177

TABLA 49: PARÁMETROS ENTONACIÓN "EL FINAL DEL SIGLO VEINTE" (EMOCIÓN ENFADO)..............178

TABLA 50: PARÁMETROS ENTONACIÓN "TENGO LA LLAVE EN EL BOLSILLO" (EMOCIÓN ENFADO)......180

TABLA 51: PARÁMETROS ENTONACIÓN "VIVIRÁS UNA FELIZ EXPERIENCIA" (EMOCIÓN ENFADO).......181

TABLA 52: PARÁMETROS ENTONACIÓN "LE GUSTA MUCHO EL GREGORIANO" (EMOCIÓN ENFADO).. .182

TABLA 53: PARÁMETROS ENTONACIÓN "LLEGÓ LA REINA DEL PUÑO CERRADO" (EMOCIÓN ENFADO)184

TABLA 54: RESUMEN PARÁMETROS ENTONACIÓN EMOCIÓN ENFADO.............................................184

TABLA 55: CARACTERIZACIÓN DE LA ENTONACIÓN DE LA EMOCIÓN SORPRESA..............................185

TABLA 56: SUELDOS DE LAS PERSONAS QUE HAN INTERVENIDO EN EL PROYECTO.........................196

TABLA 57: OBLIGACIONES SOCIALES...........................................................................................197

TABLA 58: SALARIOS EFECTIVOS TOTALES...................................................................................197

TABLA 59: COSTE DE LA MANO DE OBRA.....................................................................................197

TABLA 60: COSTE DE MATERIALES..............................................................................................198

TABLA 61: PRESUPUESTO DE EJECUCIÓN MATERIAL.....................................................................198

TABLA 62: IMPORTE DE EJECUCIÓN POR CONTRATA.....................................................................199

TABLA 63: HONORARIOS FACULTATIVOS......................................................................................199

TABLA 64: HONORARIOS TOTALES...............................................................................................199

TABLA 65: IMPORTE TOTAL DEL PROYECTO..................................................................................200

TABLA 66: PATRONES DE BÚSQUEDA EN PERL.............................................................................224

TABLA 67: COMANDOS PARA SUSTITUCIONES EN PERL.................................................................224

TABLA 68: SÍMBOLOS EMPLEADOS EN FICHEROS POR LOTES........................................................226

Page 19: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

ÍNDICE DE CUADROS CUADRO 1: SOLUCIÓN MANUAL DEL PROBLEMA DE FONEMAS DE DURACIÓN 0.................................34

CUADRO 2: ASIGNACIONES DE VARIABLES EN PERL......................................................................222

CUADRO 3: ESQUEMA DE ESTRUCTURAS DE CONTROL EN PERL....................................................223

CUADRO 4: EJEMPLO MANEJO DE FICHEROS EN PERL..................................................................225

Page 20: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

GLOSARIO BSC: Boundary Specific Correction

DTW: Dynamic Time Warping

EGG: Electroglotógrafo

F0: Frecuencia fundamental

GNU: GNU No es Unix

GPL: Licencia Pública General de GNU

HMM: Hidden Markov Models

HTK: Hidden Markov Model Toolkit

LPC: Linear Predictive Coding

MFCCs: Mel-frequency Cepstral Coefficients

NLP: Natural Languaje Processing

PSOLA: Pitch Synchronous Overlapp-Add

TD-PSOLA: Time Domain Pitch Synchronous Overlapp-App

TTS: Text To Speech

Page 21: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

1. INTRODUCCIÓN

1.1 Introducción a los sistemas de síntesis de voz

Durante los últimos años, los sistemas de síntesis de habla se han ido incorporando

a la sociedad a través de aplicaciones reales en diferentes áreas y cada vez crece

más el número de máquinas que hablan. Por ejemplo, los anuncios electrónicos en la

megafonía de estaciones y de aeropuertos, los servicios de información telefónica sin

operadores humanos, los sistemas interactivos de voz, los audio libros, los sistemas

de respuesta automatizada, etc.

Actualmente la inteligibilidad de estos sistemas de síntesis de habla es similar a la

de la voz humana pero, es importante tener en cuenta que la lengua hablada es capaz

de transmitir una riqueza de información que va más allá del significado obvio

lingüístico de las palabras. Esa riqueza adicional viene dada por lo que se denomina

prosodia, es decir, la información transmitida a través de la melodía y el ritmo del habla

y que está relacionada con parámetros como son: la frecuencia fundamental, el acento

y la duración.

En la mayoría de los casos las voces sintéticas suenan todavía en cierto modo

aburridas, con un mismo estilo de habla estándar, lo que hace que resulte una voz

sintetizada no natural. Para mejorar la naturalidad de la voz sintética se debe

considerar la variabilidad que existe en la comunicación oral entre los humanos

mencionada anteriormente.

Así pues, desde el inicio del desarrollo de los sintetizadores de habla ha habido

diferentes intentos de dotarlos de la capacidad para generar voces con emoción y

estilos de habla diferenciados del estilo por defecto habitual de los sistemas TTS (text

to speech). Los primeros intentos de síntesis de emociones se realizaron sobre

sistemas basados en reglas, mediante sistemas de síntesis por formantes. Éstos son

capaces de producir los diferentes alófonos del habla a partir de una serie de

parámetros que controlan el sintetizador y permiten la manipulación de las

características de la fuente de voz, lo cual resulta muy útil a la hora de sintetizar

algunas emociones [ARCL + 08] . Sin embargo, la inteligibilidad y naturalidad del habla

generada es comparativamente peor que la de los sistemas de síntesis utilizados

actualmente. Estos sistemas son los sistemas de síntesis de habla por concatenación

de unidades o segmentos, los cuales concatenan las unidades pregrabadas extraídas

de una base de datos para generar nuevas frases. Este hecho provoca que la voz

generada mantenga las características propias del locutor y en cierta medida del estilo

1

Page 22: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

en que fueron grabadas haciendo que la calidad y naturalidad de la voz sintetizada

aumente notablemente.

El presente proyecto, abarca todo el proceso de síntesis de habla mediante

concatenación de unidades (difonemas) pregrabadas para diferentes emociones,

desde el procesado de las grabaciones iniciales de una locutora, hasta la integración

final en el sintetizador de los resultados obtenidos.

1.2 Objetivos del proyecto

El objetivo fundamental del proyecto es la obtención de voz sintetizada con

emociones (alegría, enfado, miedo, sorpresa y tristeza). Para ello es necesaria la

mejora del conversor texto-voz existente conocido como Boris y la adaptación del

mismo a la síntesis de emociones.

De forma paralela se obtiene, a partir del corpus de grabaciones existente, la base

de datos necesaria para la síntesis multiemoción.

1.3 Fases del proyecto

A continuación se enumeran las tareas más importantes que ha habido que afrontar

durante el desarrollo del proyecto. Algunas de estas tareas se pueden realizar de

forma paralela a otras mientras que otras son requisito previo para poder realizar las

siguientes.

Extracción de difonemas, a partir de los logatomos grabados en diferentes

ficheros de voz, para cada una de las emociones a utilizar. Se crea una base

de datos multiemoción con todos los difonemas que utilizará la adaptación del

sintetizador.

Adaptación del sintetizador existente a la nueva situación de multiemoción. Se

modifica la carga de la base de datos y su utilización dentro del sintetizador. Se

incorpora el lenguaje de etiquetas específico para las emociones.

Modificación de los módulos prosódicos de entonación y duraciones del

sintetizador existente para la adaptación al entorno multiemoción con el que se

trabaja a lo largo del proyecto.

Adaptación del modelo de prosodia (duración, entonación e intensidad) a las

características propias de la nueva locutora.

Interpretación de los resultados obtenidos en la síntesis de un conjunto de

frases disponibles.

2

Page 23: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

1.4 Herramientas utilizadas

Se han utilizado diferentes herramientas durante las distintas etapas del proyecto

para conseguir los diferentes objetivos de una forma eficaz y rápida.

Praat: Es un programa para el análisis, síntesis y la manipulación de habla

creado por Paul Boersma y David Weenink del Instituto de Ciencias Fonéticas

de la Universidad de Amsterdam. Entre todas las funciones de las que está

dotado las que destacan son las de análisis y entre ellas, el análisis espectral,

de formantes, de pitch, de intensidad y de cualidad de la voz son los que se

usan de forma preferente en el análisis de voz [Praat]. También tiene funciones

de manipulación de pitch, de duración, de intensidad y de formantes, y

funciones de filtrado del habla. El programa, además, permite la creación y

utilización de scripts para realizar tareas de forma automática. En el manual

adjunto se puede obtener más información sobre el manejo del programa y

sobre su utilización en la revisión del marcado y la segmentación automática.

C: Es un lenguaje de programación de propósito general que ofrece economía

sintáctica, control de flujo, estructuras sencillas y un buen conjunto de

operadores. No es un lenguaje de muy alto nivel, es sencillo y no está

especializado en ningún tipo de aplicación, por lo cual se puede decir que es un

lenguaje potente con un campo de aplicación ilimitado. Este lenguaje se ha

ligado estrechamente al sistema operativo UNIX, ya que se desarrollaron

conjuntamente, pero a la hora de utilizarlo se puede decir que C no está ligado

a ningún sistema operativo ni máquina concreta y permite desarrollar cualquier

tipo de aplicación.

Perl: Son las siglas de Practical Extraction and Report Language (lenguaje

práctico de extracción e informes). Es un lenguaje de programación de

propósito general creado por Larry Wall y originalmente desarrollado, partiendo

de diferentes herramientas UNIX, para la manipulación de texto y que en la

actualidad es utilizado para un amplio rango de tareas incluyendo

administración de sistemas, desarrollo web, programación en red, desarrollo de

GUI, etc. Hereda ciertas estructuras de los intérpretes de comandos de UNIX

como el csh, awk y sed. [Perl 6] Está diseñado para que sea práctico, eficiente,

completo. Es multiplataforma, soporta tanto la programación estructurada como

la programación orientada a objetos y la programación funcional. Perl es un

lenguaje interpretado aunque compila los programas antes de ejecutarlos. En el

manual anexo se muestra brevemente la estructura del lenguaje.

3

Page 24: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Batch: Los archivos batch son archivos de procesamiento por lotes que

contienen un conjunto de comandos MS-DOS y se guardan con extensión

*.bat. Los archivos sólo pueden ser ejecutados mediante el intérprete de

MS_DOS, CMD. Las instrucciones o los comandos contenidos son ejecutados

de forma secuencial. Los archivos por lotes se utilizan para automatizar

procesos y se introdujeron alrededor de 1956 para aumentar la capacidad de

procesamiento de programas, siendo el mecanismo más tradicional y antiguo

para ejecutar tareas que se conoce [Barajas 96]. En principio cualquier

comando de MS-DOS puede formar parte de un archivo por lotes. En el anexo

adjunto se explica brevemente las herramientas necesarias para crear un

archivo por lotes.

Audacity: Es un programa de código abierto distribuido bajo la Licencia

Pública General de GNU (GPL). Es un editor de audio que resulta muy útil para

el trabajo con muestras de habla. Es fácil de usar, multilingüe y dispone de

diferentes versiones para Windows, Mac OS X, GNU/Linux y otros sistemas

operativos [Audacity]. Puede grabar y editar audio en varias pistas, pudiendo

cortar, copiar, unir y mezclar distintos sonidos. Entre sus funciones destaca

también la posibilidad de modificar la velocidad y el tono de una grabación.

4

Page 25: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

2. INTRODUCCIÓN A LOS SISTEMAS DE SÍNTESIS DE VOZ

2.1 Introducción

La finalidad que tienen los sistemas de síntesis de habla es generar voz a partir de

un determinado texto que se pasa como entrada. A esta voz generada se le denomina

voz sintetizada o artificial. La síntesis de habla ha supuesto un avance muy importante

en el mundo de la tecnología, y especialmente en el desarrollo de sistemas que

necesitan comunicarse con el usuario de manera verbal.

En la actualidad, existe un gran número de aplicaciones que utilizan la síntesis de

voz como base. Estas aplicaciones las podemos encontrar de forma habitual en

nuestra vida cotidiana, como puede ser en los sistemas de notificación o advertencias

del transporte público, estaciones o aeropuertos, en los sistemas de respuesta

automatizada o en los servicios de información telefónica automáticos entre otros

[Alcázar 08].La evolución que se ha dado en los sistemas de conversión de texto a voz (TTS

‘text to speech’) ha sido posible gracias a los progresos realizados en distintas áreas

entre los que destacan: los avances en teoría lingüística, en el modelo de la

caracterización acústica-fonética de los sonidos, en el modelado matemático para la

generación de voz, en la programación estructurada y en el diseño hardware de los

ordenadores.

2.2 Arquitectura general de un sintetizador de habla

Hoy en día, existe una amplia gama de procedimientos a través de los cuales se

puede generar voz artificial. A pesar de la variedad, todos los procesos de síntesis de

habla comparten una arquitectura común que se puede dividir en dos etapas o

subprocesos. El primero de estos está formado por un conjunto de módulos que se

encargan de leer el texto de entrada, procesarlo para determinar la estructura de las

frases y la composición fonética de cada palabra, y generar una serie de parámetros

con información variada sobre las características de la voz. El segundo, por su parte,

consta de un conjunto de módulos que transforman la información que se obtiene del

proceso anterior en una señal de voz artificial de salida. A estos dos subprocesos se

les denomina comúnmente Módulo de Procesamiento de Lenguaje Natural (Natural

Language Processing o NLP) y Módulo de Síntesis, respectivamente [Alcázar 08].

5

Page 26: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

En la siguiente figura se muestra el proceso de síntesis descrito:

FIGURA 1: ESQUEMA DE UN SINTETIZADOR DE HABLA

A continuación se describe en detalle cada uno de los bloques.

2.2.1 PROCESAMIENTO DE LENGUAJE NATURAL (NLP)

Este bloque del proceso de síntesis de habla genera, a partir del texto de entrada,

una lista de parámetros que representan la variación con el tiempo de las

características de la voz (descripción prosódica del texto) y una lista de fonemas que

representan la transcripción fonética del texto (descripción fonética). La descripción

prosódica establece el ritmo, la intensidad y la entonación que se imprimirán a la voz

artificial de salida. La descripción fonética se refiere a los fonemas que aparecen

cuando las palabras del texto son pronunciadas [Alcázar 08]. En el bloque de Procesamiento de Lenguaje Natural se pueden distinguir tres

módulos con funciones diferenciadas:

Analizador de Texto: Toma el texto de entrada y lo adapta al formato

necesario para poder ser tratado por el resto de módulos del bloque de

procesamiento. El módulo de análisis tiene como fin principal la generación de

una cadena de palabras a partir del texto de entrada. Por ello, se realizará una

conversión a palabras de los números, abreviaturas, siglas, etc. que aparezcan.

Se dará un tratamiento especial a los signos de puntuación que puedan formar

parte del texto para obtener información adicional como puede ser asignación

de pausas o entonación.

Convertidor de Texto a Fonemas: Una vez que el analizador ha convertido el

texto de entrada en una cadena de palabras que este módulo puede manejar,

se procede a realizar la trascripción fonética del texto, que consiste en la

extracción de los fonemas que componen cada una de las palabras.

Generador Prosódico: Asigna a cada uno de los fonemas de la cadena

obtenida en el convertidor, la duración, intensidad y entonación que cada uno

6

Page 27: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

de ellos deberá tener a la hora de la síntesis para dotar a la voz sintetizada de

la variabilidad requerida. Los valores asignados dependen del sentido, el

énfasis o la emoción de la que se quiera transmitir en cada palabra o en la

sentencia completa.

La información que se obtiene al final de este bloque se pasa al segundo módulo, el

Bloque de Síntesis, que es donde realmente se generará el habla.

2.2.2 PROCESO DE SÍNTESIS Una vez generadas la descripción fonética y prosódica del texto de entrada en el

NLP se procede a sintetizar la señal de voz en el bloque de síntesis. Es en este punto,

donde se producen las principales diferencias entre los distintos tipos de sintetizadores

conocidos.

2.2.2.1 Clasificación de los procesos de síntesis de habla

Como ya se ha mencionado, en la actualidad existe una amplia variedad de

métodos que se utilizan en la síntesis del habla. Aunque los sistemas se pueden

agrupar atendiendo a distintas características, la más empleada es aquella que los

clasifica de acuerdo a las reglas que siguen para la reconstrucción del habla.

Se pueden distinguir cuatro tipos diferentes de sintetizadores:

Sintetizadores articulatorios: Están basados en los mecanismos naturales

del procesamiento de la voz. El principal objetivo de estos sintetizadores es

controlar, de forma similar a como lo hace el cerebro, un modelo del aparato

fonador humano. Para ello se realizará una analogía entre los parámetros de

control circuitales y los parámetros relativos a los órganos articulatorios y sus

movimientos. Estos sintetizadores son los menos desarrollados hoy en día,

debido a la dificultad que presentan a la hora de obtener y controlar

automáticamente los parámetros (tamaño de la cavidad oral y la tráquea, la

posición en la que se encuentra la lengua, etc.) [MGCM 00].

Sintetizadores por formantes: Estos sintetizadores están basados en un

modelo fonético del mecanismo de producción del habla (modelo de fuente y

filtro). Están constituidos por una serie de filtros que modelan la resonancia del

tracto vocal, siendo estos filtros excitados por una fuente que simula las

cuerdas vocales. La voz es generada mediante la variación de distintos

parámetros que aplican a señales armónicas. La principal ventaja de estos

sistemas es que son muy flexibles y fácilmente manipulables. Resultan muy

interesantes para realizar estudios fonéticos [Alcázar 08].

7

Page 28: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Sintetizadores derivados de las técnicas de predicción lineal (LPC): Se

basan en la posibilidad de modelar el tracto vocal como una serie de cilindros

huecos de diámetro variable. Cada cilindro condiciona la forma de la onda

sonora al entrar en el siguiente. Por esta razón, las propiedades de la onda

sonora final pueden predecirse. Son sintetizadores de análisis-síntesis, en los

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

polos, que simula el tracto vocal, son parámetros calculados utilizando la

predicción lineal y aprovechando la periodicidad de la onda sonora.

Dependiendo del método de codificación que se utiliza, existen varios tipos de

sintetizadores siendo los más comunes los multipulso (MLPC).

Sintetizadores por concatenación de forma de onda: Para generar el habla,

concatenan unidades digitalizadas previamente grabadas, minimizando así el

ruido de codificación, y ajustan la prosodia original de estas unidades a la del

texto a sintetizar. Este tipo de sintetizadores están basados en métodos

PSOLA (Pitch Synchronous Overlap-Add) que permiten modificar el tono y

duración de las unidades pregrabadas en el momento de la síntesis. Modifican

la frecuencia fundamental de la señal actuando directamente sobre la

representación de la misma en el dominio del tiempo, pudiendo modificar de

forma sencilla la curva prosódica a los requisitos deseados. La complejidad de

estos sistemas es alta, pero la calidad obtenida es buena, especialmente

cuando se dispone de una gran cantidad de unidades y se puede realizar una

selección dinámica. Dependiendo de la unidad elegida para la concatenación

existen diferentes tipos de sintetizadores entre los que se encuentran: los de

concatenación de fonemas, de difonemas, de trifonemas, de sílabas, de

palabras y de segmentos de longitud variable. La unidad a concatenar se elige

de forma que se logre minimizar el ruido de concatenación presente en este

tipo de sintetizadores manteniendo un equilibrio con el tamaño de la base de

datos necesaria para el almacenamiento de las unidades. Un caso particular de

este tipo de sintetizadores son los sistemas de selección de unidades, en los

cuales no se modifica la prosodia de las unidades pregrabadas. Es necesario,

por tanto, disponer de un mayor número de unidades grabadas en diferentes

contextos para así concatenar directamente unas con otras [MGCM 00].

Sintetizadores estadísticos paramétricos basados en Modelos ocultos de Markov (HMM): Son los sintetizadores más recientes. La idea surge en 1995

con Keiichi Tokuda y es desarrollada en el Nagoya Institute of Technology y

Tokyo Institute of Technology. En el año 2002 aparece la primera versión del

sintetizador HTS de código abierto y durante los últimos años ha aumentado su

8

Page 29: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

popularidad y uso debido a la calidad de los resultados obtenidos y a la

flexibilidad que ofrece a la hora de modificar las características de la voz del

corpus de partida para la síntesis de habla [HTS]. Estos sistemas pueden

reproducir fácilmente las características del habla original porque el espectro de

frecuencias (tracto vocal), la frecuencia fundamental (fuente glotal) y la

duración (prosodia) se modelan de forma simultánea por HMM pudiendo ser

generados después por los modelos entrenados. Se trabaja con un árbol de

decisión para cada uno de los tres parámetros (modelado independiente). En el

proceso de síntesis, se utiliza un modelo de excitación mixta que se basa en la

suma de un tren de impulsos con manipulación de fase y un ruido gausiano

[BCYM+08]. Las características del habla se modifican transformando los

parámetros modelados, mediante técnicas de adaptación de locutores

utilizadas en sistemas de reconocimiento. De este modo, partiendo de un

corpus de unidades de habla neutra se pueden sintetizar distintas emociones e

incluso se puede obtener voz femenina partiendo de un corpus de voz

masculina. Entre las ventajas de este sistema destaca la robustez del mismo

evitando discontinuidades y errores graves. Es menos sensible a las

imprecisiones que se puedan producir en la segmentación que el sistema

anterior. Ofrece una buena calidad de la voz y flexibilidad de las características

del habla generada.

En la figura 2 se muestra el esquema del modelo propuesto por Tokuda:

FIGURA 2: SISTEMA DE SÍNTESIS DE HABLA BASADO EN HMM (HTS) [KTHZ 09]

9

Page 30: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Se describen seguidamente, los dos sistemas de síntesis más clásicos que se han

descrito: el sintetizador de formantes y el de concatenación.

2.2.2.2 Síntesis por formantes

Como ya se ha comentado, los sistemas que utilizan la síntesis por formantes se

basan en la teoría acústica de producción de habla, que en su forma más sencilla

postula que es posible ver la voz como el resultado de la excitación de un filtro lineal

por una o más fuentes de sonido [Alcázar 08].

Modelado de la fuente de voz

Las fuentes primarias del sonido son:

Fuente cuasi periódica: Excitación producida por la vibración de las cuerdas

vocales (fonemas sonoros).

Fuente aperiódica (ruido): Turbulencia causada por una diferencia de presión a

través de una constricción, es decir, el ruido producido por la fricación (fonemas

sordos).

La fuente de voz usada en los sintetizadores por formantes ha evolucionado desde

los trenes de impulsos filtrados utilizados en los primeros diseños, hasta modelos

matemáticos mucho más complejos que permiten tener mayor control sobre

parámetros como la frecuencia fundamental, la amplitud, la proporción de tiempo que

la glotis está abierta en un periodo, etc..

Modelado de la función de transferencia del tracto vocal

El tracto vocal filtra la onda glotal generada amplificando cada componente de

frecuencia con una determinada ganancia. En el modelo de síntesis por formantes se

dispone de un conjunto de filtros lineales que tienen como objetivo simular los efectos

resonantes del tubo acústico formado por la faringe, la cavidad bucal y los labios. La

función de transferencia del tracto vocal se puede modelar como un filtro todo polos.

Cada par de polos complejos conjugados produce un pico local en la parte positiva del

espectro, conocido como formante1.

H ( z )= G

1+∑k=1

p

ak z−k

1 Los formantes son resonancias producidas en las cavidades de los órganos de producción de la voz. Las frecuencias a las que se dan dependen de la longitud del tracto, de la posición de las constricciones o estrechamientos del mismo y del grado de estos estrechamientos.

10

Page 31: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

A veces, la representación de la función de transferencia del tracto vocal en

términos de polos se ha completado con ceros (antirresonadores) para modelar las

propiedades absorbentes del sonido que tienen los tubos secundarios en

articulaciones complejas como las nasales y las vocales nasalizadas.

En el sistema desarrollado por Holmes se suman las salidas de un conjunto de

resonadores conectados en paralelo, estando la ganancia de cada formante

controlada por un parámetro independiente. Por otra parte, está el modelo propuesto

por Klatt [ Klatt 1987] que consta de un sintetizador con formantes en cascada o serie

para la síntesis de los fonemas sonoros y con formantes en paralelo para la síntesis de

los fricativos.

En la figura 3 se muestra el esquema del modelo propuesto por Klatt.

FIGURA 3: ESQUEMA DEL SINTETIZADOR POR FORMANTES DE KLATT [KLATT 1987]

Parámetros de un sintetizador por formantes

Los parámetros que controlan un sintetizador de formantes son del tipo ‘Ancho de

banda del primer resonador serie’, ‘Frecuencia central del cuarto resonador paralelo’ o

‘Ganancia del generador de onda glotal’. Dependiendo del tipo de control que se

realice sobre estos parámetros, se tiene una subdivisión de sintetizadores de

formantes:

Sistemas de síntesis por regla : Los parámetros se calculan de acuerdo a un

conjunto de reglas dependientes del contexto, ya que cada fonema tiene un

espectro diferente dependiendo del contexto en el que se encuentra [Alcázar 08].

Sistemas de análisis-síntesis: Los parámetros se obtienen por análisis o

parametrización de segmentos de voz natural.

Los sintetizadores de formantes tienen también un conjunto de reglas para predecir

las duraciones de los segmentos sintetizados y la curva de tono fundamental.

11

Page 32: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

2.2.2.3 Síntesis por concatenación

La síntesis del habla por concatenación se basa en grabar y almacenar voz natural

fragmentada en segmentos o unidades de síntesis (base o corpus de unidades) y

concatenar las unidades adecuadas para producir cualquier mensaje. Es muy común

su utilización por los buenos resultados que ofrece.

Selección de unidades de concatenación

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

calidad en la voz sintetizada. Las limitaciones en la calidad del habla generada se

deben fundamentalmente a dos tipos de distorsión:

De concatenación: los segmentos de voz utilizados están condicionados por

la coarticulación con el contexto de donde se extraen (en general diferente

del contexto donde se insertan).

De unidad: las características prosódicas de los segmentos de voz son, por

norma, diferentes a la prosodia requerida para el habla sintética (si se

modifica la prosodia se introduce distorsión y si no se modifica existe una

pérdida de naturalidad).

Se debe llegar a un compromiso entre la mejor calidad segmental posible (a mayor

longitud de los segmentos, menos puntos de concatenación) y la cantidad de memoria

necesaria para almacenar las unidades pregrabadas [Alcázar 08].Los efectos de coarticulación tienden a minimizarse en el centro acústico de un

fonema, lo cual llevó a Peterson a proponer el difonema (unidad de voz que incluye la

transición entre dos alófonos2 consecutivos, formados por la parte estacionaria del

primer alófono, la transición del primero al segundo y la parte estacionaria del segundo

alófono) como la unidad más satisfactoria para la concatenación. Ésta es la unidad con

la que se ha trabajado en el proyecto.

Si se considera que en el castellano existen unos 30 alófonos, el número máximo

de difonemas sería de 302=900. Aunque no todos los difonemas se utilizan, si se

muestrean a 16 KHz y con un tamaño de 16 bits ocuparían unos 5 Mbyte. [Alcázar 08] Por otro lado, se hace necesaria 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 (por ejemplo, oclusiva + “r” + vocal).

2 Un fonema es la unidad teórica básica del habla que permite distinguir palabras en una lengua. Un alófono es la realización concreta y específica de un sonido. Un fonema puede ser representado por una familia de alófonos asociados a un sonido específico. Por ejemplo, el grafema “d” tiene un fonema, /d/ y el fonema /d/ tiene dos alófonos, [d] y [δ] (diferenciados por la forma de articular el fonema).

12

Page 33: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Se puede reducir el tamaño de la memoria necesaria para el almacenamiento de

las unidades de concatenación de las siguientes formas:

Evitando guardar las unidades difonema formadas por consonante +

consonante que no se puedan dar nunca en el lenguaje.

Tratando algunos alófonos en determinados contextos como una unidad de tipo

fonema, como por ejemplo los fricativos sordos.

Grabación de los elementos de concatenación

Los difonemas deben ser grabados por un locutor que sea capaz de controlar y

mantener constante la cualidad de la voz, de forma que no haya cambios repentinos

en el espectro de la fuente en el medio de las sílabas. Éstas no son unidades que

puedan ser grabadas aisladamente sino que deben ser extraídas de algún contexto.

Entre todos los posibles contextos de los que se pueden extraer difonemas (frase

natural, portadora, palabras aisladas y logatomos), se ha elegido los logatomos para la

grabación del locutor. Los logatomos son palabras cortas que incluyen la unidad

requerida y que no tienen por qué tener significado semántico.

Una vez obtenida la grabación, quedan por realizar dos tareas fundamentales:

Marcado de los fonemas que componen la grabación : Debido al gran

volumen de trabajo que supone realizar un marcado manual de las grabaciones

de una base de datos, se realiza, en la mayoría de los casos un marcado

automático mediante técnicas de reconocimiento de habla. Aunque el marcado

manual es el que mejores resultados ofrece, el tiempo que se utiliza es amplio

y existe el peligro de que si la segmentación se realiza por varias personas se

puedan producir errores en el criterio de segmentación. El marcado automático

ofrece un mismo criterio de segmentación y reduce el tiempo de procesado.

Los errores que se puedan producir con la segmentación automática se ven

compensados por la reducción del tiempo de procesado [Alcázar 08]. Selección del punto de corte : En este punto pueden destacarse dos

estrategias que buscan la suavización de la transición entre unidades

adyacentes para reducir el efecto sonoro del habla cortada o de la diptongación

[Alcázar 08]. Estas estrategias son:

Escoger el punto de corte mediante un procesado previo o algoritmo de

selección óptimo que tenga como objetivo minimizar la distancia entre el

alófono de la unidad actual y el mismo alófono de la unidad siguiente.

No utilizar ningún algoritmo de selección óptima para resolver la falta de

continuidad formántica por métodos de suavizado durante la síntesis.

13

Page 34: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

2.2.2.4 Comparación de los métodos de síntesis

Al analizar las distintas técnicas disponibles para la síntesis de habla, se observa

que los sintetizadores por concatenación son los que presentan mejores resultados en

lo referente a calidad de voz sintetizada y grado de naturalidad. Los sintetizadores por

formantes obtienen buenos resultados en inteligibilidad pero la voz generada tiene un

tono robótico y poco natural. Los sintetizadores por formantes presentan una

importante ventaja frente a los de concatenación ya que permiten la manipulación de

las características de la voz, lo cual resulta de gran importancia para la síntesis de

emociones, puesto que, las características de la fuente de voz así como del tracto

vocal pueden cambiar de una emoción a otra. En los sintetizadores por concatenación

la fuente de voz es única y corresponde a la grabación previa de los difonemas. Es por

ello que en casos de síntesis con emociones se requieren diferentes bases de datos

para que las unidades pregrabadas no sufran grandes alteraciones al ajustar la

prosodia requerida por el texto.

2.3 Aplicaciones de la síntesis de habla

Como ya se ha mencionado anteriormente, la síntesis de voz tiene aplicaciones en

varias áreas y cada vez crece más el número de máquinas que interactúan con los

humanos. En cualquiera de las aplicaciones el mensaje a reproducir se especifica de

forma simbólica y después se convierte en voz.

Algunas de las aplicaciones que se pueden mencionar son:

Interfaces habladas de videojuegos y sistemas multimedia

Lectores de correo electrónico

Sistemas de respuesta automatizada o sistemas telefónicos sin operadores

Sistemas de anuncio de viajes en autobuses o aeropuertos

Los audio libros y sistemas de apoyo a la enseñanza

Asimismo, la síntesis de voz también tiene aplicaciones en apoyo a personas con

determinados tipos de discapacidad. En el caso de personas con discapacidad visual,

la síntesis de voz representa una gran ayuda en la interacción del usuario con los

ordenadores, ya que una forma de que los invidentes reciban información del

ordenador es a través del sonido.

14

Page 35: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

3. ANÁLISIS DE LAS EMOCIONES

3.1 Introducción

El habla es el principal medio de comunicación entre los hombres. Es por ello que

siempre se ha tenido un gran interés en los mecanismos de producción de voz y se

han creado sistemas capaces simular y reconocer voz electrónicamente. El mayor

inconveniente que se presenta a la hora de simular la voz se debe a la variabilidad de

ésta. Numerosos estudios demuestran que con la voz se pueden expresar diferentes

aspectos del estado físico y emocional del locutor, incluyendo la edad, el sexo, la

personalidad, etc.

Muchos sintetizadores ofrecen la posibilidad de cambiar los parámetros que

controlan la voz para dotarla de diferentes tonalidades y conseguir la naturalidad

esperada, sin afectar seriamente a la inteligibilidad del habla. Si las modificaciones que

se realizan a la voz sintetizada reflejan adecuadamente los cambios que experimenta

la voz humana cuando expresa emociones es posible simular diferentes emociones a

través de la voz sintetizada.

Para implementar con éxito los efectos emocionales en la voz sintetizada hay que

tener en cuenta dos factores fundamentales:

Conocer cómo pueden distinguirse las características emocionales de la voz y

cómo pueden describirse dichas características usando los métodos de

procesado de voz.

Incorporar a los algoritmos de síntesis de voz, los parámetros o reglas

necesarias para implementar las emociones.

El objetivo del presente proyecto es expresar la emoción alegría, tristeza, sorpresa

y enfado, a través de la voz generada mediante el sintetizador por concatenación.

Para conseguir el propósito, en este caso, es necesario obtener bases de datos

diferenciadas para cada emoción a implementar.

3.2 Concepto de emoción

El concepto de emoción ha sido estudiado y analizado en muchas ocasiones. A

pesar de que existen multitud de modelos teóricos al respecto, se tiene un

conocimiento poco preciso de la emoción. Esto es debido a que la emoción es un

campo difícil de investigar, en el que los estudios sistemáticos son escasos y la

metodología que se utiliza para la investigación es diversa y variada. [Chóliz 05]

15

Page 36: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

En general la definición más aceptada es la que considera que la emoción es un

estado complejo del organismo que se origina en respuesta a la información percibida

del entorno y predispone a una cierta respuesta o acción, es decir, la emoción es un

cambio que lleva a la persona a la acción en un sentido determinado. [Bisquerra 2000]

Las emociones disponen a la acción, pero también contienen un elemento más

interno que forma los sentimientos o estados de ánimo, los cuales son más duraderos

y menos espontáneos por lo que no están tan relacionados con la acción directa e

inmediata que se obtiene con la emoción. La naturaleza de los estados de ánimo es

más ambigua que la de la emoción. Aunque se pueden diferenciar fácilmente las

emociones de los estados de ánimo, resulta imposible definir cuándo una emoción se

convierte en un estado de ánimo.

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 personalidad de cada persona actúa como

moduladora de las emociones y de los estados de ánimo de forma diferenciada y

característica.

Así, representando estos tres conceptos en un eje temporal se tendría:

FIGURA 4: REPRESENTACIÓN TEMPORAL DE LOS CONCEPTOS: EMOCIÓN, ESTADO DE ÁNIMO Y PERSONALIDAD

En el proceso que desencadena cualquier emoción pueden distinguirse dos fases

[Bisquerra 2000] :

Percepción de algún cambio en las condiciones internas o externas de la

persona.

Evaluación y valoración del cambio para producir una tendencia hacia la acción

o hacia el afrontamiento. Como consecuencia de esto se producen una serie de

cambios fisiológicos, modificaciones en la expresión corporal, etc., aunque los

efectos que finalmente se exteriorizan sufren determinadas modificaciones que

en general van asociadas a la culturización y el aprendizaje.

16

Page 37: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

3.2.1 COMPONENTES DE LA EMOCIÓN

Existen un gran número de factores a tener en cuenta a la hora de caracterizar

cada emoción. Todos los análisis sobre una emoción tienen al menos tres

componentes característicos según [FJM 03] :

Componente fisiológico: Como resultado del fenómeno emocional, se

obtienen respuestas psicofisiológicas involuntarias. Algunas de ellas pueden

ser taquicardia, rubor, sudoración, sequedad en la boca, variación en el tono

muscular, etc.

Componente conductual–expresivo: Toda emoción lleva implícito un

lenguaje no verbal que aporta señales precisas que facilitan su identificación,

de forma que si se analiza el comportamiento de un individuo se puede

averiguar la emoción que experimenta. 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.

Componente experiencial–cognitivo: Relacionado con la vivencia afectiva,

con el hecho de sentir y de experimentar propiamente la emoción. La

experiencia emocional varía en intensidad dependiendo de diversos factores,

como la importancia que se le da a la situación que genera la emoción o su

proximidad temporal.

3.2.2 FUNCIÓN DE LAS EMOCIONES

A partir del propio concepto de la emoción se puede comprender que ésta, tiene

una función importante en el comportamiento humano, ya que es el elemento que lo

origina y que le da sentido. Todas las emociones tienen una función que las hace

útiles y permiten que la persona reaccione adecuadamente ante determinadas

circunstancias. Según [Reeve 94], las tres funciones principales de las emociones son:

Función adaptativa: Las emociones desarrollan un papel fundamental en la

adaptación al entorno. Preparan fisiológica y físicamente al organismo para la

acción, facilitando la conducta apropiada a cada situación.

Función social: Comunican el estado del organismo y sus intenciones de

comportamiento. La expresión de las emociones permite a los demás predecir

el comportamiento asociado con las mismas, lo cual tiene un indudable valor en

los procesos de relación interpersonal. Por tanto, las emociones facilitan la

interacción social, controlan la conducta de los demás y permiten la

comunicación de los estados afectivos o promueven la conducta prosocial

[Izard 89]. Así, emociones como la felicidad favorecen los vínculos sociales y

17

Page 38: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

las relaciones interpersonales, mientras que otras como la ira pueden generar

situaciones de evitación o de confrontación.

Función motivacional: Facilita las conductas motivadas. La emoción energiza

la conducta motivada. La relación entre motivación y emoción no se limita al

hecho de que en toda conducta motivada se producen reacciones emocionales,

sino que una emoción puede determinar la aparición de la propia conducta

motivada, dirigirla hacia determinado objetivo y hacer que se ejecute con

intensidad. Se puede decir que toda conducta motivada produce una reacción

emocional y a su vez la emoción facilita la aparición de unas conductas

motivadas y no otras.

3.3 Clasificación de las emociones

A la hora de clasificar o distinguir las distintas emociones se pueden seguir dos

enfoques o criterios distintos. Por un lado se pueden clasificar las emociones

suponiendo que cada una de ellas es única frente al resto, que son reacciones

afectivas innatas presentes en todos los humanos y que se expresan de forma

característica (clasificación discreta), y por otro suponiendo un escenario en una

determinada dimensión en el que la distinción se establece en términos de gradación

(clasificación continua). [LMGC 01]

3.3.1 CLASIFICACIÓN DISCRETA O BÁSICA DE LAS EMOCIONES

Este enfoque es originado por el hecho de que algunas emociones poseen unas

características que las hace únicas y distinguibles del resto. En este punto, se puede

distinguir entre emociones primarias y emociones secundarias. La cuestión de la

existencia de emociones básicas es un tema controvertido, sobre el que no existe

todavía el suficiente consenso entre los investigadores. [Chóliz 05]

Según este criterio, las emociones primarias están determinadas por una expresión

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

Las emociones secundarias derivan de las primarias, obteniéndose a veces como

combinación de ellas. Además, éstas no presentan rasgos faciales distintivos ni una

tendencia específica a la acción.

En cuanto a las emociones que se podrían considerar primarias, cada autor

propone un número y unas emociones determinadas que no suelen coincidir con las

que proponen otros investigadores. A pesar de ello, la mayoría de los analistas

consideran sólo 6: alegría, tristeza, ira, sorpresa, miedo y asco. Por el contrario, hay

un numeroso grupo de emociones secundarias como pueden ser aburrimiento,

impaciencia, vergüenza o ternura.

18

Page 39: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

3.3.2 ESTUDIO DIMENSIONAL DE LAS EMOCIONES

Este método 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. Para la distinción entre emociones se utilizan unas

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

emociones que existen (incluidas las definidas en el otro método como primarias y

secundarias).

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

enfoque, la más utilizada es la desarrollada por Russell [RWM 89] [Hofer 04] que

sugiere que todas las emociones pueden ser ubicadas en el interior de un círculo

definido en un espacio bidimensional, siendo estas dimensiones:

Valencia afectiva: Permite diferenciar las emociones en función de lo

placenteras o agradables que sean (positivas ↔ 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.

Actividad: Permite diferenciar las emociones por la presencia o no de energía

y tensión.

Según este criterio, la representación de las distintas emociones en un plano

bidimensional sería la siguiente:

FIGURA 5: REPRESENTACIÓN BIDIMENSIONAL DE LAS EMOCIONES (ADAPTACIÓN DEL MODELO PROPUESTO POR RUSSELL) [RUSSELL 1980]

19

Page 40: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

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 dimensión actividad 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.

3.4 Efectos de las emociones en el habla

Las primeras investigaciones sobre cómo afectaban las emociones al

comportamiento y al lenguaje de los animales fueron descritas brevemente por Darwin

[Darwin 1872]. Recientemente los efectos de las emociones en el habla han sido

estudiados por investigadores acústicos que han analizado la señal de voz, por

lingüistas que han estudiado los efectos léxicos y prosódicos, y por psicólogos.

Muchas de las investigaciones en este campo hacen hincapié en la importancia de los

rasgos prosódicos (velocidad de la voz, el contorno de intensidad, frecuencia

fundamental (F0), rango de F0, etc.) y de la cualidad de voz a la hora de expresar

diferentes emociones en la comunicación verbal [Cosi 07].

En los sistemas TTS, los algoritmos de procesamiento de voz para la síntesis de

voz emocional se han centrado principalmente en el control de la duración y el tono de

fonemas, que son los principales parámetros prosódicos que transmiten la información

emocional, pero hay que destacar que la calidad de voz juega un papel importante en

el discurso emotivo.

A continuación, se analiza en detalle el efecto de las emociones en la duración, el

tono y la calidad de la voz.

3.4.1 P ITCH

El pitch es la frecuencia de vibración de las cuerdas vocales. Se considera que las

características de la frecuencia fundamental son las principales portadoras de la

información sobre las emociones. Entre estas podemos resaltar:

Valor medio F0: Expresa el nivel de excitación del locutor. Una media elevada

de F0 indica un mayor grado de excitación.

Rango de F0: Distancia entre el valor máximo y mínimo de la frecuencia

fundamental. Las variaciones del rango respecto al estado neutro reflejan la

excitación emocional.

Fluctuaciones de F0: Que las fluctuaciones entre los valores altos y bajos de

pitch sean abruptas o suaves depende de las emociones. La curva de tono es

20

Page 41: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

discontinua para las emociones consideradas como negativas (miedo, enfado)

y es suave para las emociones positivas (alegría).

3.4.2 DURACIÓN

La duración es el componente de la prosodia 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 los fonemas. Las emociones pueden distinguirse por una serie de

parámetros que conciernen a la duración, como son:

Velocidad de locución: Se mide en sílabas por segundo o palabras por

minuto. Normalmente un locutor en estado de excitación acortará la duración

de las sílabas por lo que la velocidad se verá incrementada.

Número de pausas y 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.

3.4.3 CUALIDAD DE LA VOZ

La intensidad, las variaciones en la amplitud de la onda y en la duración, el cociente

entre energías a baja y alta frecuencia, el nivel de ruido de aspiración y el índice de

ruido armónico son algunas de las características relacionadas con la cualidad de la

voz que se pueden controlar en los sintetizadores.

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

amplitud de la forma de onda.

Irregularidades vocales (shimmer, jitter): El shimmer refleja las fluctuaciones

de la amplitud de onda de un ciclo a otro, mientras que el jitter muestra las

variaciones del periodo fundamental.

Cantidad relativa de energía en alta frecuencia frente a baja frecuencia del espectro de voz: Una gran cantidad de energía en altas frecuencias está

asociada con agitación, mientras que una baja concentración de energía

denota calma o depresión.

Nivel de ruido de aspiración: Describe la generación de ruido respiratorio. La

componente fundamental tiende a ser más fuerte mientras que las altas

frecuencias son reemplazadas por ruido aspiratorio. Es una de las

características del tracto vocal más relacionada con la personalización de la

voz.

Índice de ruido armónico: Cociente entre la cantidad de energía de la parte

armónica de la señal y el resto.

21

Page 42: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

3.5 Emociones implementadas en el sintetizador Boris

Como ya se ha comentado este proyecto pretende generar voz emocional a través

de un sintetizador por concatenación. Aunque el sintetizador parta de unidades

pregrabadas con emociones, será necesario realizar ciertas modificaciones en la

prosodia para conseguir los efectos deseados en cada emoción.

A continuación se realiza el análisis de cada una de las emociones que se desea

sintetizar: tristeza, alegría, sorpresa y enfado. Sólo se detallan los efectos producidos

en el habla y algunas de las características principales que las distinguen, a pesar de

que, como ya se ha mencionado, cada emoción lleva asociado un determinado

comportamiento fisiológico así como una serie de gestos, movimientos corporales y

expresiones vocales específicos que facilitan su reconocimiento por parte de

observadores externos [Cefire 2005].

3.5.1 LA EMOCIÓN TRISTEZA

La tristeza es un sentimiento negativo caracterizado por un decaimiento en el

estado de ánimo habitual, que se acompaña de una reducción significativa del nivel de

activación cognitiva y conductual. Aparece como consecuencia de algún cambio en el

entorno que no necesariamente tiene que venir provocado por agentes externos al

individuo y que es valorado como algo desagradable. La tristeza empuja al abandono

de un objetivo o a su sustitución por otro (motivación hacia la reintegración).

En general, las causas que originan la emoción tristeza también pueden actuar

como desencadenantes de un enfado. Sin embargo, existe una importante diferencia

entre ambos estados emocionales y es que, mientras que en el caso de la tristeza no

se encuentra ningún plan o procedimiento que permita aderezar la situación, en el

enfado tras evaluar las circunstancias se deduce que mediante un plan de acción

preciso se puede llegar a una solución [Cefire 2005].

En el caso de la tristeza, las variaciones que se producen en la expresión vocal son

[Alcázar 08]:

Descenso del tono medio y homogeneidad de la curva. Estrechamiento del

rango de F0.

Disminución de la intensidad de la señal vocal.

Velocidad de locución lenta y alargamiento de las pausas.

Introducción de suspiros.

La implementación de las características vocales de la emoción tristeza en el

sintetizador se tratará en los siguientes capítulos.

22

Page 43: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

3.5.2 LA EMOCIÓN ALEGRÍA

La alegría es el sentimiento positivo que surge cuando un objeto o acontecimiento

se evalúa como deseable o favorable para la obtención de determinadas metas u

objetivos. De forma general, es una experiencia emocional de duración breve, aunque

ocasionalmente puede experimentarse como un estado de placer intenso. La alegría

favorece las relaciones interpersonales al mostrar una clara disposición para iniciar un

contacto social (induce a la reproducción del suceso) [Cefire 2005].

Dentro de la alegría se pueden distinguir distintas categorías o niveles de

intensidad. Así, las manifestaciones específicas de esta emoción vendrán

determinadas por distintos factores entre los que se puede citar el nivel de expectativa

que existe en que el acontecimiento desencadenante de la alegría se pueda dar, o la

cualidad de inesperado, puesto que en general los sucesos agradables inesperados o

novedosos se evalúan más positivamente que los esperados.

La alegría lleva asociada los siguientes cambios en la expresión vocal [Alcázar 08]:

Incremento del valor del tono medio y del rango de F0.

Aumento en la intensidad de la voz.

Incremento de la velocidad de locución y disminución de pausas.

En capítulos posteriores se tratarán las modificaciones realizadas en el sistema

para dotar al sintetizador de esta emoción.

3.5.3 LA EMOCIÓN SORPRESA

La sorpresa es la emoción más singular de todas las que se tratan. Es una reacción

causada por un estímulo imprevisto, novedoso o extraño. Se realiza una evaluación

rápida, automática y afectiva. Es la emoción más breve y tiende a transformarse en un

corto periodo de tiempo en otro estado emocional. Es por ello que su nivel de valencia

puede derivar en positivo o negativo según la emoción en la que se convierta (miedo,

alegría, tristeza, enfado,…).

La sorpresa prepara al individuo para afrontar de forma efectiva los acontecimientos

(induce a la exploración). Para ello, provoca el bloqueo de otras actividades que

pudieran interferir con la reacción apropiada ante las nuevas exigencias de la situación

y origina un incremento en la sensibilidad de los órganos sensoriales para mejorar así

la receptibilidad del organismo.

Se ha optado, en este proyecto, por la implementación de la emoción sorpresa con

valencia positiva, es decir, que deriva en una emoción positiva. Los cambios

producidos en el habla con la expresión de la sorpresa en el caso de valencia positiva

son [Alcázar 08]:

23

Page 44: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Aumento del tono medio y de la variabilidad tonal (rango de F0).

Finalización de la entonación en modo ascendente.

Alargamiento de silabas tónicas y de la última palabra de una sentencia.

Vocalizaciones espontáneas.

Las modificaciones realizadas para la implementación de la sorpresa en el

sintetizador se tratan posteriormente.

3.5.4 LA EMOCIÓN ENFADO

El enfado se produce cuando el individuo se ve sometido a situaciones que le

producen frustración o que le resultan desagradables. Permite generar de forma rápida

conductas de defensa o ataque ante situaciones desagradables o generadoras de

frustración (induce a la destrucción del suceso), de modo que, se interrumpen el resto

de actividades en curso y se centra la atención en la situación negativa. Para que se

produzca la acción, el individuo debe percibir que existe alguna solución al estímulo

desencadenante, por lo que actuará de forma urgente y eficaz para afrontarlo. El nivel

de enfado dependerá de la urgencia con la que la situación deba ser resuelta.

El enfado genera una serie de cambios en la expresión del habla que se

manifiestan en [Alcázar 08]:

Incremento de la intensidad de la voz.

Aumento del valor del tono medio y del rango de F0.

Incremento en la velocidad de locución.

Irregularidad de la fuente glotal y de la curva de tono.

Las modificaciones realizadas en el sintetizador para la implementación del enfado

se detallan en los siguientes capítulos.

24

Page 45: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

4. SEGMENTACIÓN Y MARCADO DE LA BASE DE DATOS

4.1 Introducción

Un paso previo e indispensable en la generación de voz emocional mediante el

sintetizador basado en concatenación de unidades Boris, es generar la base de datos

con las unidades a concatenar. Como se avanzó en el capítulo 2 de esta memoria, el

difonema es la unidad que se presenta como la mejor alternativa para la

concatenación ya que es con la que se obtiene la mejor relación entre el tamaño

necesario para el almacenamiento de la base de datos y la distorsión producida en la

concatenación. Es por ello, que Boris trabaja con difonemas.

Los difonemas utilizados en este proyecto se han extraído de un contexto previo, ya

que no son unidades que puedan ser grabadas aisladamente. La extracción se ha

realizado a través de logatomos3 puesto que simplifican mucho la selección de las

unidades requeridas.

Se parte, por tanto, de una base de datos formada por diferentes logatomos

grabados, que hay que marcar y segmentar para la posterior extracción de los

difonemas deseados.

4.2 Base de datos o Corpus de logatomos

El corpus de partida contiene grabaciones de logatomos pronunciadas por una

actriz con voz neutra y simulando alegría, enfado, sorpresa y tristeza (las emociones

con las que se ha trabajado). Para la grabación del audio se han utilizado varios

micrófonos disponibles en la sala: uno enganchado a la cabeza de la actriz, otro de

solapa, uno situado sobre la mesa, etc. [BCMMG+07].

La base de datos se compone, para cada una de las emociones, de 570

logatomos/emoción. En total, se dispone de 2850 logatomos que cubren la principal

distribución de difonemas españoles. Los logatomos se agrupan en 114 unidades de

habla para la interpretación de los mismos por parte de la actriz, a la que se pidió que

durante la grabación hiciera pausas entre los logatomos con el fin de que se grabasen

como si estuvieran aislados.

El corpus formado por los ficheros de voz pregrabada con cada una de las

emociones, será procesado y manipulado para la obtención de los difonemas

necesarios para la síntesis por concatenación.

3 Llisterri (1991:71) define un logatomo como una palabra sin sentido pero cuyas características fonológicas responden a lo que podría ser una palabra en la lengua que se estudia.

25

Page 46: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

4.3 Segmentación fonética y marcación de F0 automáticas

Hoy en día la segmentación más precisa se realiza de forma manual, sin embargo,

este no es un trabajo sencillo, ya que resulta muy extenuante, costoso y demanda

mucho tiempo para ser completado. Es por ello necesaria la utilización de técnicas que

permitan la segmentación automática.

En los últimos años se han empezado a aplicar técnicas de reconocimiento de voz

para la segmentación y el marcado automático de frases, palabras o logatomos

grabados. Se explican, a continuación, las técnicas automáticas de segmentación

fonética y marcación de frecuencia fundamental existentes, entrando en el detalle de

aquellas técnicas que han sido utilizadas en este trabajo.

4.3.1 TÉCNICAS DE SEGMENTACIÓN FONÉTICA

Existen diversos métodos para la segmentación fonética a partir de la transcripción

fonética u ortográfica de las locuciones. Estos métodos dividen la señal de entrada en

segmentos definidos explícitamente por la trascripción fonética u ortográfica

valiéndose de unos patrones de referencia o de algún tipo de modelo [DFGM 00].

Los sistemas más utilizados se basan en el uso de un reconocedor que utiliza

modelos ocultos de Markov (Hidden Markov Models, HMMs) o el alineamiento

temporal (Dynamic Time Wrapping, DTW) para modelar cada una de las unidades

acústicas [ABGC 05].

Alineamiento temporal: El algoritmo DTW se utiliza para conseguir un

alineamiento temporal entre la señal de voz que se va a segmentar y una ya

segmentada. La señal de voz segmentada es una señal sintetizada con los

mismos fonemas que la que queremos segmentar. Como la base de datos

utilizada para la síntesis está etiquetada, conocemos las fronteras de los

fonemas sintetizados. La segmentación se obtiene mapeando las fronteras en

la señal de voz a segmentar.

Modelos ocultos de Markov: En los sistemas que utilizan HMMs, conociendo

la transcripción fonética de la base de datos, la segmentación automática se

genera mediante un alineamiento forzado entre la señal de voz a segmentar y

la secuencia obtenida de los modelos correspondientes. Esta técnica se ha

usado en la segmentación automática de los ficheros que conforman el corpus

utilizado en este proyecto.

Como mejora adicional de los métodos de segmentación fonética que existen, se

puede efectuar un refinamiento local utilizando el método de corrección específica de

las fronteras fonéticas obtenidas (Boundary Specific Correction, BSC).

26

Page 47: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

4.3.1.1 Segmentación fonética automática basada en Modelos Ocultos de Markov

La técnica de segmentación que se ha utilizado en este proyecto es la basada en

HMMs. La segmentación se ha desarrollado usando el conjunto de herramientas HTK

(Hidden Markov Model Toolkit ). HTK permite construir modelos ocultos de Markov

(HMM) que modelan determinadas series de tiempo. El proceso de segmentación

llevado a cabo está dividido en dos etapas. La primera es la etapa de entrenamiento

en la que diferentes herramientas del conjunto estiman los parámetros del set de

entrenamiento, empleando una serie de locuciones y las transcripciones asociadas. En

la segunda etapa, de reconocimiento, se transcriben locuciones desconocidas

mediante una serie de herramientas de reconocimiento [HTK].

La segmentación automática se genera forzando el alineamiento entre los datos de

habla y los HMMs disponibles en base a la transcripción dada, a través del

alineamiento básico de Viterbi. Las fronteras entre los distintos fonemas se sitúan en

los instantes de tiempo en los que tienen lugar las transiciones entre los

correspondientes modelos HMM [GABCM 07].

En el sistema utilizado se ha considerado un repertorio de 50 fonemas españoles,

cada uno de los cuales se representa mediante un modelo de densidad independiente

del contexto, continuo y que puede tener tres estados diferentes. Los modelos se

entrenan utilizando el algoritmo convencional de Baum-Welch (no exige marcas de

tiempo) en la transcripción fonética de frases en el set de entrenamiento.

Como vectores de entrada, el sistema utiliza 12 coeficientes Mel-Frequency

Cepstral Coefficients (MFCCs) calculados a partir de un banco de filtros, el logaritmo

de la energía y sus correspondientes derivadas temporales de primer y segundo

orden. La ventana de extracción de parámetros es de 25ms con 5ms de separación

entre tramas [LMS 08].

4.3.2 TÉCNICAS DE MARCACIÓN DE PITCH

Para la obtención de las marcas de pitch o frecuencia fundamental (F0), nos hemos

basado, en el estudio de la señal proporcionada por el EGG (electroglotógrafo).

El electroglotógrafo, utiliza dos electrodos situados sobre la superficie del cartílago

tiroides, los cuales aplican un débil voltaje de alta frecuencia. [LMS 08] Dado que el

tejido humano conduce muy bien la corriente eléctrica y el aire no, el grado de

impedancia varía constantemente según el grado de contacto existente entre las dos

cuerdas vocales durante la fonación. La apertura y cierre de la glotis4 hace variar la

4 La glotis es el espacio que existe entre las cuerdas vocales en la parte superior de la tráquea.

27

Page 48: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

resistencia, de manera que midiendo la corriente entre ambos electrodos podemos

medir el movimiento de la misma.

En la figura se muestra la relación entre la señal del EGG y la apertura y cierre de

las cuerdas vocales. Puede apreciarse que el cierre total de las cuerdas se da cuando

la señal del EGG alcanza el 90% del valor máximo.

FIGURA 6: RELACIÓN ENTRE SEÑAL EGG Y EL CIERRE Y APERTURA DE LA GLOTIS [HCMT 04]

La duración entre dos momentos consecutivos de cierre glotal corresponde a un

período fundamental, y su inversa a la frecuencia fundamental de la voz. Teniendo

esto en cuenta, el algoritmo para el cálculo de la frecuencia fundamental se realiza de

la siguiente forma:

1. Obtención de la señal del EGG: Mediante el electroglotógrafo se capta la

señal producida por la apertura y el cierre de la glotis.

2. Filtrado de la señal del EGG: Se realiza mediante un filtro paso banda con el

fin de eliminar el ruido y las señales parásitas. Sabiendo que la frecuencia

fundamental media de la voz humana está entre 50 y 150 Hz en el caso de voz

masculina y entre 100 y 300 Hz para la femenina (nuestro caso), la banda de

paso con la que se ha trabajado queda definida entre 50Hz y 800Hz. Cabe

destacar que el tono medio puede superar los rangos mencionados en el caso

de habla con emociones.

3. Derivación del EGG: Se calcula la derivada del EGG (DEGG), señal central en

la figura anterior. Como se observa en la misma, los máximos de dicha señal

coinciden con el momento de cierre de las cuerdas vocales y los mínimos con

los momentos de apertura. En la señal inferior de la figura, se puede observar

esto más claramente ya que se tiene la señal DEGG suavizada.

28

Page 49: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

4. Obtención de las marcas de F0: Como se ha comentado anteriormente, el

cierre total de las cuerdas se da cuando la señal del EGG alcanza el 90% del

valor máximo. Por ende, se ha elegido tomar el punto entre el 70% y el 90% del

valor máximo de la señal para colocar cada marca.

En la siguiente figura se visualiza en el programa Praat un ejemplo de la señal de

EGG filtrada y las marcas de pitch generadas por el procedimiento.

FIGURA 7: SEÑAL DE EGG FILTRADA Y MARCAS DE PITCH GENERADAS

4.4 Segmentación fonética y marcación de F0 manual

Tras la segmentación y el marcado de F0 automáticos, se realiza la revisión manual

de los resultados obtenidos para, en el caso de la marcación, eliminar las marcas

espurias y remarcar las zonas en las que el algoritmo pierde la sincronización, y en el

caso de la segmentación, para minimizar los errores de precisión que se puedan

producir.

Algunos de los problemas que hay que solucionar con la revisión manual de las

marcas son:

El algoritmo pone un gran número de marcas muy próximas entre sí en los

fonemas fricativos: /f/, /x/, /j/, /z/, que en realidad son sordos. Estas marcas

deben de ser eliminadas y dejar sólo algunas, muy espaciadas entre sí, para

que no existan discontinuidades en la curva de tono y sirvan de referencia.

Si el tono es bajo, como en el caso de la tristeza, el algoritmo tiende a poner

una marca espuria entre dos reales, duplicando el tono.

29

Page 50: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Cuando existen fonemas sonoros largos o aparecen varios fonemas sonoros

seguidos, el algoritmo suele perder la sincronización y no marca hasta que

recupera la sincronización. Es por ello que se encuentran zonas sonoras en las

que no existen marcas de pitch. Este fenómeno es más frecuente cuando el

tono es elevado, como en la sorpresa o la alegría.

Cuando el programa cambia el criterio de elección del punto donde colocar la

marca dentro de un periodo, se produce una discontinuidad en la curva de

tono. El problema es diferente al caso anterior ya que aquí no se pierde la

curva de tono, sino que ésta se mostrará con irregularidades.

En las transiciones de un fonema oclusivo a una vocal, suele aparecer un pico

espurio en la curva de tono debido a que la primera marca del sonoro suele

estar muy cerca de la segunda.

Los fonemas vibrantes, debido a su naturaleza, son muy irregulares lo que

dificultará la marcación automática produciéndose errores similares a los que

se dan en la marcación de los fonemas sordos.

En el caso de la segmentación, aunque no se produce un nivel alto de errores de

bulto, la segmentación obtenida puede resultar, en algunos casos, poco precisa

(errores en las fronteras fonéticas). La precisión en la segmentación de la señal de voz

resulta un factor esencial para una síntesis de voz de calidad, ya que un pequeño

error en la segmentación puede dar lugar a un error audible en la voz sintética

[Toledano 01].

Para la revisión del marcado y la segmentación de los logatomos pregrabados se

ha utilizado el programa de análisis y síntesis de habla Praat cuyo manual se

encuentra anexo. Los pasos que se han realizado para la revisión manual de cada uno

de los ficheros segmentados y marcados automáticamente son:

1. Apertura del programa Praat.

2. Se carga, para cada uno de los archivos del corpus, el fichero WAV que

contiene la señal de EGG comentada anteriormente y el fichero WAV con la

señal de voz segmentada.

3. Ejecución del script realizado en praat para la obtención de las marcas de pitch.

Se ha modificado el script para unificar de forma automática el fichero de

marcas generado por el procedimiento (con extensión *.PointProcess) con el

fichero que contiene la información de la segmentación fonética automática

(con extensión *.TextGrid).

30

Page 51: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

4. Visualización de forma simultánea en el programa Praat del fichero de audio

con la señal de voz y el fichero unificado con las marcas de pitch y las de

segmentación fonética.

5. Se modifican las marcas de pitch y las fronteras fonéticas que, según los

conocimientos adquiridos tras la lectura de bibliografía, no están colocadas de

forma adecuada. Anexado a esta memoria el lector puede encontrar un

documento resumen de las pautas a seguir durante el proceso de revisión.

6. Se guarda el fichero de salida unificado y modificado, que contiene tanto las

marcas de pitch como las de segmentación fonética. Este fichero será

necesario para la obtención de los difonemas que formarán la base de datos

final de difonemas.

En total se ha revisado tanto la segmentación fonética como la marcación del pitch

de los 570 ficheros que conforman el corpus de logatomos (114 ficheros/emoción).

4.4.1 PROBLEMAS DETECTADOS DURANTE LA REVISIÓN MANUAL

Durante la revisión manual de los primeros ficheros de voz, se detectaron una serie

de inconvenientes surgidos de la segmentación automática. Se optó por realizar un

procesamiento previo de los ficheros generados en la segmentación automática, para

poderlos detectar y resolver de forma automática. Es por esto, que además de la

utilización del programa Praat, fundamental para el desarrollo del proceso, se han

utilizado diversos programas y scripts de apoyo con el fin de facilitar la costosa labor

de revisión manual.

4.4.1.1 Fonemas de duración 0 segundos ( ModificaTextgrid.exe )

Esta casuística provocaba que no se pudiera modificar la duración del intervalo en

cuestión (modificación de las fronteras fonéticas) ni del siguiente, mediante el

programa utilizado Praat.

En la siguiente figura se puede apreciar como a partir del instante 1.39 y hasta la

posición inicial de la etiqueta ‘i no es posible la manipulación de la frontera, puesto que

no aparecen tanto las marcas de la posición inicial como de la final.

31

Page 52: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 8: VISUALIZACIÓN DEL ERROR PRODUCIDO EN EL PROCEDIMIENTO DE SEGMENTACIÓN AUTOMÁTICO EN EL FICHERO L_A_18600

Solución manual:

Para solucionar este error es necesario modificar directamente el fichero de

etiquetas generado en la segmentación automática (con extensión *.TextGrid) ya que

el problema surge cuando las fronteras de un intervalo (xmin y xmax en el fichero)

coinciden. Se modifica la frontera final del intervalo problemático y la frontera inicial del

siguiente (el final de un fonema coincide con el inicio de la siguiente). A continuación

se muestra la parte del fichero de etiquetas de voz en la que aparece el problema

mostrado en la figura anterior y el fichero modificado.

32

Page 53: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

intervals [5]: xmin = 1.140000 xmax = 1.390000 text = "a" intervals [6]: xmin = 1.390000 xmax = 1.390000 text = "sp" intervals [7]: xmin = 1.390000 xmax = 1.970000 text = "f" intervals [8]: xmin = 1.970000 xmax = 2.130000 text = "'i"

ANTES DE MODIFICAR

intervals [5]: xmin = 1.140000 xmax = 1.390000 text = "a" intervals [6]: xmin = 1.390000 xmax = 1.400000 text = "sp" intervals [7]: xmin = 1.400000 xmax = 1.970000 text = "f" intervals [8]: xmin = 1.970000 xmax = 2.130000 text = "'i"

DESPUES DE MODIFICAR

En la figura 9

se

muestra la visualización en Praat de la señal de voz y el fichero de marcas modificado.

FIGURA 9: SOLUCIÓN DEL ERROR PRODUCIDO EN EL PROCEDIMIENTO DE SEGMENTACIÓN AUTOMÁTICO EN EL FICHERO L_A_18600

Una vez resuelto el problema ya se puede seguir con la revisión manual.

Solución automática:

Para agilizar la detección y minimizar el impacto de este error en el proceso de

revisión manual, se crea el programa ModificaTextgrid.exe. Este programa recorre

línea a línea un fichero de etiquetas generado en la segmentación automática,

33

CUADRO 1: SOLUCIÓN MANUAL DEL PROBLEMA DE FONEMAS DE DURACIÓN 0

Page 54: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

buscando segmentos con posición inicial = posición final (xmin = xmax en el fichero).

Cuando encuentra alguna etiqueta de duración 0s aumenta 0,01s la posición final de la

marca y la posición inicial de la siguiente etiqueta de forma que no se solapen ambas

etiquetas.

Para cada fichero a revisar el programa realiza las siguientes acciones:

1. Abre el fichero pasado como argumento y que debe encontrarse en el mismo

directorio donde se encuentra el programa.

2. Lee línea a línea el fichero buscando las cadenas xmin y xmax. Estas cadenas

marcan la posición de las fronteras fonéticas de cada unidad segmentada

dentro del fichero de etiquetas generado.

3. Por cada línea leída se llama a la función CompruebaFichero. Dentro de la

función es donde se realiza la lógica del programa.

3.1. Si en la línea no existen las cadenas de interés (xmin, xmax), se

imprime la línea leída en el fichero de salida. El fichero de salida tiene el

mismo nombre que el fichero procesado.

3.2. Si la línea leída contiene la cadena xmin, se comprueba que en el

intervalo anterior no se produjo una situación problemática

(xmin=xmax). Si se produjo error, se aumenta en 0.01s el valor

asociado a la cadena para que así, coincida con el final del segmento

anterior. Si la unidad anterior no es problemática, únicamente se

imprimirá la línea leída en el fichero de salida.

3.3. Si la línea contiene la cadena xmax, se comprueba que el valor

asociado sea distinto al valor asociado a xmin del segmento. Si los

valores de los límites del segmento coinciden, se produce error y se

suma 0.01s a xmax. Si no se produce error, se imprime la línea leída.

La función devuelve el número de errores producidos en la línea.

4. Una vez leído el fichero generado en la segmentación, se mostrará mediante

un aviso por línea de comandos, si hubiera errores en él.

Para automatizar el programa se han creado los scripts procesa.bat y modifica.bat

(el primero llamará al segundo). Los ficheros de etiquetas generados en la

segmentación se encontrarán separados en carpetas de acuerdo a la emoción

representada.

Para comenzar con el proceso de revisión de fonemas de duración cero, hay que

llamar, desde línea de comandos, al script procesa.bat y pasarle como argumento la

carpeta que contenga los ficheros a analizar.

34

Page 55: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

> procesa.bat carpeta_analisis

El script busca todos los ficheros de extensión *.TextGrid para analizar y crea una

nueva carpeta donde depositará los ficheros procesados (procesados_carpeta). Hace

una llamada, para cada uno de los ficheros a procesar, al script modifica.bat que será

el encargado de ejecutar el programa ModificaTextgrid ya definido.

4.4.1.2 Fonema ‘sp’ no contemplado en sintetizador de difonemas (CambiaSp.exe)

Las unidades fonéticas etiquetadas como ‘sp’ (silencio de corta duración, pausa) no

son contempladas por el sintetizador de difonemas. Éste, trata los diferentes tipos de

silencios (de corta y larga duración) como iguales y utiliza, únicamente, la etiqueta ‘sil’

para ambos. Cuando el sintetizador de difonemas se encuentra con una etiqueta que

no tiene en su base de datos, se produce un error. Para que esto no ocurra y para no

tener que modificar el nombre de estas etiquetas manualmente durante la revisión, se

ha creado el programa CambiaSp.exe .

El programa recorre línea a línea el fichero generado en la segmentación

automática buscando la cadena de texto ‘sp’. Si existiera un fonema con la etiqueta

buscada, el programa la sustituye por la cadena ‘sil’. El nuevo fichero quedará

modificado en la ruta modificadoSp/carpeta que se encuentra dentro del directorio

donde se ejecuta el programa.

Para cada uno de los ficheros a procesar, el comportamiento del programa es el

que sigue:

1. Abre el fichero a procesar (nombre pasado como argumento al programa)

2. Crea el fichero de salida en la ruta modificadoSp/carpeta, con el mismo nombre

que el fichero a procesar.

3. Lee línea a línea el fichero a procesar y busca la cadena “sp”.

3.1. Si encuentra la cadena “sp”, se sustituye por la cadena ‘sil’ y se escribe

en el fichero de salida la línea modificada.

3.2. Si la línea leída no contiene la cadena buscada, se escribe en el fichero

de salida la línea sin sufrir modificaciones. (Si el fichero a procesar no

contiene la etiqueta “sp”, el fichero de salida será una copia del

primero.)

4. Se muestra el número de etiquetas que han sido modificadas dentro del fichero

de interés.

Para poder procesar de forma automática todos los ficheros contenidos en un

determinado directorio se ha creado el script CambiaSp.bat.

35

Page 56: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Para comenzar con el proceso de revisión de etiquetas “sp”, hay que llamar, desde

línea de comandos, al script y pasarle como argumento la carpeta que contenga los

ficheros a analizar:

> cambiasp.bat carpeta_ficherosAprocesar

4.4.2 CONCLUSIONES DE LA REVISIÓN MANUAL DE SEGMENTACIÓN

Como se preveía, la mayor parte de los errores producidos en la segmentación

automática, están relacionados con la precisión en la localización de las fronteras

fonéticas. En este aspecto, y de forma regular, la herramienta de segmentación

automática tiende a hacer muy largos los fonemas del final de los logatomos. Debido a

esto, se han tenido que corregir la mayoría de las fronteras finales. También se han

corregido muchas fronteras de inicio del primer fonema del logatomo, ya que muchos

logatomos presentan una especie de ruido ó sonoridad inicial que se hace más o

menos evidente dependiendo de la emoción expresada.

Según el grupo fonético al que pertenece cada unidad y el contexto en el que

aparecen se han detectado los siguientes errores:

Oclusivas: Podemos encontrar dos características en la segmentación

automática de fonemas oclusivos.

Cuando van precedidos de fonemas sonoros, se puede producir una

sonoridad residual en el silencio que precede a la explosión. Este residuo,

que en realidad es parte del silencio que precede a la explosión, queda

marcado en el fonema precedente a la oclusiva.

La duración del fonema oclusivo es más larga de lo que sería correcto ya

que dentro de sus fronteras se puede apreciar sonido correspondiente al

fonema que les sigue. Esto se debe a las irregularidades producidas en la

onda después de la explosión.

Fricativas: Los fonemas como /s/, /T/ o /X/ pueden afectar a las unidades

adyacentes. El fonema que precede a un fonema fricativo puede mostrarse

ensordecido dificultando la correcta localización de la frontera entre ambas. La

unidad posterior a un fonema fricativo contiene una especie de ruido en los

periodos iniciales que también dificulta la segmentación automática ya que,

aunque presenten gran cantidad de ruido, los periodos no pertenecen al

fonema fricativo.

Vocales: En el caso de las vocales, los problemas se dan más por el contexto

en el que se encuentran que por la propia unidad. Los problemas surgen si se

encadenan de forma consecutiva varios fonemas sonoros.

36

Page 57: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Diptongos : La transición entre las vocales que forman el diptongo es

suave y resulta muy difícil segmentar el difonema de forma correcta. Se

tiene que escuchar repetidas veces diferentes secciones del diptongo,

pudiendo empezar por el final y escuchar hasta que se aprecie el fonema

anterior para poder así determinar el punto de separación entre ambos.

Fonema /Ñ/ o /L/ + vocal : Hay veces en las que la vocal queda muy

nasalizada por la /ñ/ impidiendo que se localice de forma exacta la

separación entre ambas. Igual que en el caso de los diptongos se ha

intentado encontrar el punto que parecía más adecuado, intentando

minimizar el error.

Sonoros: En la revisión del resto de fonemas sonoros no surgen demasiadas

complicaciones puesto que, si la intensidad de la señal es buena y no existen

demasiadas irregularidades en la forma de onda (señal poco ruidosa), la

distinción entre unos y otros es apreciable. Quizá el contexto que más

dificultades presenta es cuando se encuentran dos fonemas nasales, es decir,

los casos de /n/+/m/, /m/+/n/, /n/+/ñ/,…. Debajo de estas líneas se muestra un

ejemplo de unión de los fonemas /n/ y /m/.

FIGURA 10: FRONTERA FONÉTICA DE SEPARACIÓN ENTRE LOS FONEMAS /N/ Y /M/.

Dependiendo de la emoción analizada, se han detectado las siguientes

características de la segmentación automática:

37

Page 58: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Neutra-Alegría: Se ha detectado que se produce una distorsión, en forma de

aspiración, originada cuando la locutora toma aire previo a la pronunciación de

un logatomo. La aspiración se puede apreciar al escuchar la grabación aunque

no afecta en la segmentación automática del silencio ya que produce una

pequeña variación en la forma de onda de la voz. A la hora de sintetizar se

deberá tener en cuenta el posible error que puede aparecer si se selecciona

una unidad “sil” que contenga la aspiración.

Tristeza: Se ha observado que una de las características de la actriz en esta

emoción es que suelta el aire antes de pronunciar algunos logatomos. Esto se

debe a una “sobreactuación” de la actriz para simular la emoción tristeza, no

es la aspiración comentada anteriormente. Este ruido previo al inicio del

logatomo se ha añadido al fonema silencio previo. Aunque en la síntesis, este

tipo de fonemas producirán errores (no es un silencio como tal), se asumen

puesto que la introducción de un nuevo símbolo fonético produce error en el

sintetizador de difonemas. En la figura 11 se puede apreciar el ruido que

aparece antes de la pronunciación de un logatomo.

FIGURA 11: RUIDO PREVIO AL LOGATOMO “BUZO” EN EL FICHERO L_T_09100

Otra característica importante, es que debido a la poca intensidad de la señal,

la voz se convierte, en muchos casos, en una especie de susurro en los

fonemas finales del logatomo, perdiendo su regularidad y dificultando así el

establecimiento de las fronteras fonéticas de forma correcta. En estos casos es

casi imposible distinguir las diferencias entre las formas de onda y energía de

38

Page 59: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

los fonemas. Lo más conveniente es escuchar, las veces que se requiera, los

fonemas para los que se desea establecer la marca de separación, hasta que

se determine el punto exacto en el que establecer la frontera. En la figura 12 se

aprecia el ensordecimiento de los fonemas finales del logatomo “ovillo”.

FIGURA 12: ENSORDECIMIENTO DE FONEMAS FINALES EN LA EMOCIÓN TRISTEZA

En ocasiones, este hecho no sólo se da al final de palabra sino que la

intensidad de la señal y el ensordecimiento propio de la emoción puede llegar a

afectar a todo el logatomo, dificultando enormemente la segmentación fonética

y el marcado de F0.

Enfado: Al igual que ocurre con la emoción tristeza, se ha notado como

algunos logatomos en el enfado presentan una especie de ruido inicial debido a

la toma de aire previa a la grabación del logatomo. En este caso, el habla de

las grabaciones se abronca para expresar la emoción de enfado, lo que hace

que la señal grabada tenga una especie de ruido superpuesto que dificulte la

segmentación de los últimos fonemas de los logatomos. Aunque la intensidad

de la voz sea más alta que en el estado neutro, debido a las irregularidades de

la fuente se hace difícil en ocasiones la corrección de fronteras, teniendo que

escuchar la señal en ocasiones.

Sorpresa: Subjetivamente, es la emoción para la que se obtuvieron mejores

resultados en la segmentación automática. La cualidad de la voz es mejor que

en el resto de emociones, no presentando apenas ruidos de aspiración ni otros

de los problemas mencionados como irregularidades, baja energía, etc. La

curva de tono en estos logatomos es ascendente por lo que los fonemas finales

de los logatomos no están ensordecidos. En la segmentación de la sorpresa

39

Page 60: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

solo han existido los errores asociados a las características de los fonemas

detalladas anteriormente.

4.4.3 CONCLUSIONES DE LA REVISIÓN MANUAL DE LA MARCACIÓN

De forma conjunta a la revisión de la segmentación, se han corregido las marcas de

pitch de forma manual. Como ya se adelanto al inicio del apartado 4.4, el algoritmo

desarrollado en el script para la marcación automática de F0 tiene problemas en

algunas ocasiones generando una serie de fallos que ha habido que corregir en la

revisión:

Normalmente, las marcas del comienzo de un logatomo no se colocan

correctamente, aparecen más de las que deberían, debido posiblemente a que

el nivel de señal se encuentra por encima del límite que se ha fijado en el

script. Una solución a dicho problema consiste en modificar ese nivel en el

script para conseguir los mejores resultados para el mayor número de ficheros

posible. Un caso opuesto ocurre al final de los logatomos, en donde aparecen

menos marcas de las que deberían. A veces, aunque exista sonoridad, la

intensidad de la señal es tan baja que el script no la detecta. Para solucionarlo

deberemos hacer zoom sobre la forma de onda e insertar las marcas de forma

manual.

Es habitual que existan derivas en el marcado automático, es decir, existe una

pequeña desviación que se va acumulando en las marcas. El error es sencillo

de solventar (aunque costoso en tiempo por la cantidad de marcas) porque

sólo hay que recolocar las marcas en la posición correcta, de acuerdo con el

criterio de marcación seguido por el script.

En ocasiones, el criterio utilizado para marcar dos fonemas sonoros

consecutivos difiere por lo que alrededor de su frontera fonética suele haber

picos o caídas de la curva de F0. La solución por la que se ha optado en estos

casos es la de colocar algunas marcas intermedias de transición, para que la

curva de tono sea lo más continua posible. Así se evita tener que corregir todas

las marcas de uno de los fonemas para unificar los criterios y eliminar

discontinuidades en el tono.

Dependiendo del grupo fonético al que pertenecen los fonemas se han detectado

los siguientes problemas:

Oclusivos: En la marcación de los fonemas oclusivos se ha detectado que si

existe sonoridad residual en el silencio previo a la explosión, el script la marca.

Como se puede leer en el manual de revisión anexado, ha habido que

40

Page 61: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

recolocar estas marcas e insertar nuevas equiespaciadas. La explosión

normalmente es irregular, lo que lleva a tener que recolocar las marcas

automáticas para que no se produzcan discontinuidades. Los fonemas

posteriores a estos pueden presentar cierto ensordecimiento al inicio que

provoca la duplicidad de las marcas.

Vibrantes: Son fonemas muy irregulares, propensos a sufrir derivas y

duplicidad de las marcas, lo que provoca que se tengan que recolocar algunas

marcas automáticas. En el caso del fonema /R/, los problemas surgen sobre

todo en el silencio que separa los lóbulos periódicos.

Fricativos: Los fonemas fricativos tienen que ser totalmente remarcados

debido a la no periodicidad de la forma de onda que presentan.

Sonoros: Cuando el fonema sonoro es muy largo o se enlazan diversos

fonemas sonoros consecutivos, a veces, en mitad de alguno de ellos, el

algoritmo pierde la sincronización momentáneamente y pueden faltar algunos

periodos por marcar.

Si nos fijamos en el marcado de las distintas emociones, aquellas en las que se han

encontrado menos errores de marcado automático de F0 son la alegría, la neutra y la

sorpresa. Esto se debe a que, en estas emociones, la locutora habla de una forma

más clara, sin apenas hacer modificaciones en el habla. Por otro lado, con la tristeza,

la locutora habla en un tono mucho más bajo y susurrando, por lo que las marcas en

pocas ocasiones aparecen colocadas correctamente y son muchas las ocasiones en

las que hay que corregirlas debido a que el ensordecimiento del habla es alto. El

enfado presenta muchas irregularidades en la forma de la onda por lo que también ha

sido necesario hacer una amplia recolocación de marcas. De una forma más

específica, los comentarios obtenidos de la revisión dependiendo de la emoción son:

Alegría: Debido a que en la alegría el tono empleado es muy alto,

normalmente el algoritmo, de forma aleatoria, se salta algunos de los periodos

a marcar. En ocasiones, la aspiración previa al logatomo que se presenta en

algunos archivos es marcada por el algoritmo sin un criterio aparente. En estos

casos, se eliminarán algunas de las marcas y se recolocarán otras de forma

equidistante para que no existan irregularidades en la curva de frecuencia.

Enfado: Debido a las irregularidades en la forma de onda características en el

enfado, se han tenido que recolocar las marcas de aquellos fonemas con

mayor cantidad de ruido. En estos casos, el algoritmo coloca gran cantidad de

marcas juntas sin atender a ningún criterio. En los casos en los que el fonema

se ha encontrado totalmente ensordecido, las marcas se han recolocado de

41

Page 62: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

forma que la curva de frecuencia media se encuentra alrededor de 100 y

150Hz.

Sorpresa y Neutra: Son los casos en los que menos marcas se han tenido que

recolocar, insertar o borrar. La forma de onda es más o menos regular y no

existen, salvo la aspiración inicial en la emoción neutra, problemas

característicos en el marcado automático.

Tristeza: Es la emoción que mayores problemas ha presentado para la revisión

manual debido a que, por el ensordecimiento propio de la mayor parte de los

fonemas del logatomo, se disponen de muy pocas marcas automáticas.

Aunque el nivel de señal también es bajo, el problema básico del marcado

automático es el ensordecimiento. Para mitigar el problema se han insertado

marcas de forma que la curva de la frecuencia fuera lo más suave posible.

42

Page 63: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

5. GENERACIÓN DE LA BASE DE DATOS DE DIFONEMAS

5.1 Introducción

Una vez realizadas y revisadas la marcación y la segmentación automáticas de los

logatomos, se procede a la generación del corpus de difonemas necesario para el

sintetizador de voz Boris. Hay que mencionar que para cada emoción a sintetizar

habrá un corpus de difonemas distinto, aunque el proceso de obtención es idéntico en

todas las emociones utilizadas.

5.2 Proceso de generación del corpus

Para poder obtener la base de datos de difonemas a partir del corpus de logatomos

marcados y segmentados, es necesario realizar un tratamiento del mismo a través de

un proceso compuesto por varios programas. Al inicio del proceso de generación del

corpus de difonemas tan solo se dispone de los ficheros de audio (*.wav) con series de

logatomos, ficheros de marcas y etiquetas (*.TextGrid) correspondientes y un listado

(*.data) con una relación de los nombres de los distintos ficheros de audio y las series

de logatomos pronunciados en ellos.

A continuación se muestra un resumen del proceso en el que se explica

brevemente cada uno de los programas que componen el proceso de generación,

enumerando los archivos necesarios y los generados para cada uno de ellos.

Posteriormente, se realiza una descripción más detallada de los mismos.

FIGURA 13: DIAGRAMA DE FLUJO DEL PROCESO DE GENERACIÓN DEL CORPUS DE DIFONEMAS

43

Page 64: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Así pues, el proceso de generación de la base de datos de difonemas está

compuesto de los siguientes subprocesos o fases:

1. Síntesis de difonemas: La síntesis de difonemas a partir de la información, de

marcas y etiquetas, obtenida durante la revisión y el fichero de audio con los

logatomos, se realiza mediante el programa SacadifVC.exe. Este programa

recibe como argumentos un fichero de datos en bruto con una serie de

logatomos (*.pcm), uno de parámetros con información del pitch y etiquetas

(*.par) y uno con los textos de la serie de logatomos (*.txt). Es por ello que,

para obtener estos ficheros, es necesario un procesamiento previo de los

ficheros iniciales ya mencionados. Así pues, antes de pasar a la síntesis de los

difonemas se tiene que realizar un paso previo consistente en la generación de

los archivos de entrada a SacadifVC.

a. Generación de archivos de muestras y parámetros: El programa

GeneraParPcm.exe obtiene los ficheros de muestras y de parámetros a

partir de los ficheros de audio y, de marcas y etiquetas, que dispone. En

la siguiente figura se muestra un diagrama de flujo del proceso.

FIGURA 14: DIAGRAMA GENERACIÓN FICHEROS DE MUESTRAS Y PARÁMETROS

En cada fichero de parámetros (*.par) se pueden distinguir dos partes

diferenciadas. En primer lugar, aparece la información referente a las

marcas de F0 y se detecta porque aparecen etiquetas PIT. Por cada

etiqueta PIT que aparece, se indica dónde se ha producido una marca de

F0 y la frecuencia en función de la posición relativa con la marca anterior.

Para finalizar, bajo etiquetas LBR aparece la información referente a los

fonemas. Se presentan seis campos, de los cuales solo se usan: el

primer campo que indica la posición de comienzo del fonema en

segundos, el segundo campo que indica la posición final y el sexto campo

en el que se identifica el fonema, es decir, aparece el grafema. El resto

de campos se informan con ceros.

Los ficheros de muestras (*.pcm) contienen únicamente las muestras de

los ficheros de audio en los que se pronuncian las series de logatomos.

44

Page 65: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Para hacer más sencillo todo el proceso se emplea un archivo por lotes

de MSDOS, sacaParPcm.bat. Este script lista todos los ficheros de

logatomos a procesar y, por cada uno de ellos, realiza una llamada al

programa GeneraParPcm.exe indicándole el nombre del fichero a

procesar. Los ficheros generados son almacenados en el directorio

Genera_nombreCarpetaInicial que se crea en el mismo directorio donde

se encuentra la carpeta contenedora de los ficheros a procesar. Al

realizar la llamada para la ejecución del archivo, es necesario indicar la

carpeta contenedora de los archivos de logatomos a procesar.

> generaparpcm.bat carpeta_ficherosAprocesar

b. Generación de ficheros de texto: A partir del fichero *.data con la relación

de los nombres de los distintos ficheros de audio y las series de

logatomos que aparecen en cada uno, se generan tantos ficheros de

texto (*.txt) como haya en la lista. Cada uno de los nuevos ficheros

contiene la serie de logatomos que le corresponde. Para la obtención de

los ficheros de forma automática se realiza un script en perl que realiza el

proceso. La lista con la relación de logatomos de cada emoción tiene la

siguiente estructura:

“NombreFichero 0 0 log1 , log2 , log3 , log4 , log5 .”

El script ObtenTxt.pl crea, por cada línea de la lista, un fichero cuyo

nombre es la primera estructura que se encuentra al leer la línea. Cada

fichero estará compuesto por una única línea con la serie de logatomos

que aparecen en cada fichero de voz. El formato de cada línea es

compatible con el formato que espera el sintetizador de difonemas:

“log1, log2, log3, log4, log5;”

Obtenidos los ficheros de entrada, la extracción de difonemas en

SacadifVC.exe se realiza de forma automática, a partir de la información

contenida en el fichero de parámetros asociado a la serie de logatomos,

basándose para ello en una serie de reglas dependientes del tipo de fonema,

con el fin de determinar el punto de corte óptimo del mismo (aquel que ofrece

mayor estabilidad). El programa genera una carpeta homónima al fichero

procesado y dentro del directorio, por cada difonema sintetizado, se genera una

serie de ficheros de información con el nombre del difonema sintetizado y

diferentes extensiones.

45

Page 66: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 15: DIAGRAMA DE FICHEROS NECESARIOS Y GENERADOS EN LA SÍNTESIS DE DIFONEMAS

Existe la posibilidad, de que se generen dos o más difonemas iguales en la

serie de logatomos contenida en un fichero. Para evitar la pérdida de

información y que se machaquen los ficheros asociados, se produce una

ordenación de los difonemas de forma que se diferencian unos con otros por un

símbolo @ seguido de la posición que ocupan. Es decir, si en una serie de

logatomos se tienen por ejemplo “ramo” y “rito”, el programa generará dos

difonemas “_R1” que no tienen por qué ser iguales, por lo que nombrará a uno

“_R1” y al otro “_R1@1”.

A continuación se presenta el caso real de los difonemas generados para la

serie de logatomos L_N_07600 formada por: “bab, baso, beso, biso, blaso”.

Para esta serie, el programa SacadifVC genera, entre otros, cinco difonemas

_B1 que contienen la mitad del fonema silencio que precede a los logatomos y

la mitad inicial del fonema /b/ inicial de cada uno. En el directorio que contiene

los archivos generados asociados a la serie:

46

Page 67: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 16: EJEMPLO REAL DE ORDENACIÓN DE DIFONEMAS CON MISMO NOMBRE DE LA SERIE L_N_07600

Para automatizar el proceso de generación de difonemas se crean los

archivos de lotes sacadif.bat, sacatodos.bat y limpia.bat.

2. Selección de difonemas: Una vez generados todos los difonemas con el

sintetizador de difonemas, se realiza una selección de aquellos que aparecen

en la lista Listapal.txt. Esta lista detalla aquellos difonemas necesarios para

crear la base de datos. A la hora de escoger entre los distintos ficheros

generados para un mismo difonema (por ejemplo AB1) se toma aquel que se

obtuvo de un logatomo en particular (en este caso sabe). Por ello la lista tiene

el formato: “logatomo (difonemaImportante)”.

El programa encargado de realizar este proceso es ObtenListaDif.exe que

busca cada logatomo de Listapal.txt en la lista que contiene la relación de los

ficheros y las series de logatomos (*.data). Una vez se tiene ubicado el

logatomo contenedor dentro de un determinado fichero, se busca el difonema a

seleccionar en el directorio correspondiente, donde se encuentran los

difonemas generados por el sintetizador asociados al fichero. El programa

genera una lista Mini_listadif.txt con los difonemas en un formato válido para

ser procesado por el generador de base de datos. También genera un fichero

de depuración Lista_total.txt en el que aparece cada uno de los difonemas

seleccionados, el logatomo del que se ha obtenido, la posición del logatomo en

la serie y el fichero que contiene la serie. En la figura adjunta se detallan, de

forma esquemática, los ficheros que intervienen en el proceso de selección.

47

Page 68: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 17: DETALLE DE FICHEROS QUE INTERVIENEN EN LA SELECCIÓN AUTOMÁTICA

Los archivos de muestras y marcas seleccionados por el programa pueden

contener elementos de ordenación en el nombre (@+nº). El generador final del

corpus de difonemas necesita que los ficheros estén nombrados únicamente

por el difonema seleccionado por lo que habrá que realizar modificaciones en

los nombres para adaptarlos a los requerimientos del generador. Los archivos

de marcas deben tener extensión *.mar, aunque estén normalizados, por lo que

también se hace necesario el cambio de extensión de estos ficheros.

Para automatizar el proceso de selección y realizar un copiado conjunto de

los ficheros, en el formato correcto, al directorio de entrada database_16 del

generador de base de datos, se crea el archivo por lotes obtenListaDif.bat que

realiza una llamada al ejecutable y a renombraFich.bat, que a su vez llama al

script en perl modificaFich.per.

obtenListaDif.bat: Limpia el directorio de los archivos de muestras y

marcas, y de la lista de difonemas que puedan haberse generado

previamente. Ejecuta el programa y al finalizar llama a renombraFich.bat y

crea una carpeta con el nombre de la emoción procesada donde mueve

todos los ficheros seleccionados.

renombraFich.bat: Lista todos los ficheros de marcas y muestras que

existen en el directorio de trabajo. Copia el fichero MINI_LISTADIF.txt,

generado por el ejecutable, a la ruta del generador de base de datos y

ejecuta modificaFich.per, que renombra los ficheros y realiza el copiado de

los ficheros listados en el formato necesario.

modificaFich.per: El script modifica el nombre de los ficheros de muestras y

marcas que contengan la cadena “@+nº” de forma que queden únicamente

nombrados con el nombre del difonema. Después copia los archivos a la

ruta de entrada del generador del corpus final.

3. Generación del corpus de difonemas: Es la última fase de la generación de

la base de datos de difonemas. En este punto, el programa Gendb.exe genera

48

Page 69: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

un archivo minidb.dfm con el formato necesario para ser utilizado por el

sintetizador por concatenación Boris, a partir de los archivos de marcas y

muestras de los difonemas seleccionados. También se genera un archivo

minidb.mfd que contiene, en formato texto, la información del fichero de base

de datos. La base de datos tendrá, para cada difonema seleccionado, la

información referente a las marcas de F0 (refleja el tono del difonema), la

duración y las muestras de audio del mismo.

FIGURA 18: ESQUEMA DE FICHEROS QUE INTERVIENEN EN LA GENERACIÓN DEL ARCHIVO DE BASE DATOS FINAL.

5.3 Detalle de programas

5.3.1 GENERAPARPCM .EXE

Este programa, a partir de un fichero con la señal de voz (*.wav) y otro con las

marcas de pitch y de segmentación (*.TextGrid), crea un archivo de audio con los

datos en bruto (*.pcm) y un archivo de texto (*.par) que contiene cada una de las

marcas de pitch, con su instante temporal y la frecuencia de aparición (distancia a la

marca anterior), y cada uno de los fonemas, con sus límites temporales y el nombre,

en los que se divide la serie de logatomos que forman el fichero.

La función main() del programa toma el argumento de entrada (nombre del fichero)

y realiza una llamada a cada una de las funciones que se encargan de generar el

archivo de muestras y el de parámetros.

void GeneraPcm(char NameFich[]): Genera el archivo de muestras *.pcm.

Recibe como argumento de entrada el nombre del fichero. La función abre el

fichero de audio *.wav que contiene la serie de logatomos, lee la cabecera wav

y obtiene la información sobre el número de muestras que conforman el fichero

y el tamaño de las mismas. Cuando tiene los datos, copia una a una las

muestras del fichero *.wav en un fichero de muestras. El fichero de muestras

tiene el mismo nombre que el fichero de audio pero distinta extensión.

49

Page 70: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

void GeneraPar(char NameFich[]): Genera el archivo de parámetros *.par.

Recibe como argumento de entrada el nombre del fichero. La función abre el

fichero de marcas y etiquetas de fonemas *.TextGrid y busca las etiquetas

TextTier (donde se encuentra la información de marcas) ó IntervalTier (donde

se encuentra la información de los fonemas).

Si encuentra la etiqueta TextTier, llama a la función void EscribePitch(FILE *pF, FILE *pFw, int *conmuta). La función recibe

como argumentos el puntero al fichero de marcas y etiquetas, el puntero

al fichero de parámetros y un flag indicador de la zona a procesar. Lee

línea a línea las marcas del fichero *.TextGrid y escribe en el fichero de

parámetros la información referente a las mismas, que irá diferenciada

con etiquetas PIT. Este punto se realiza hasta detectar el final del fichero

o la zona IntervalTier. Las líneas del fichero de parámetros con etiquetas

PIT tienen la siguiente estructura:

PIT: instante(sg) de marca , f0 estimada(1/inst ant-inst)5

Si encuentra la etiqueta IntervalTier, realiza una llamada a la función void EscribeIntervals(FILE *pF,FILE *pFw,char NameFich[]). La función

recibe como argumentos el puntero al fichero de marcas y etiquetas, el

puntero al fichero de parámetros y el nombre del fichero de entrada. Lee

línea a línea la información de los bloques de etiquetas de fonemas del

fichero *.TextGrid; cuando detecta el final de un bloque, toma los datos

obtenidos (inicio y final de cada fonema, y nombre del fonema) y escribe

en el fichero de parámetros la información referente a los mismos, que

está diferenciada con etiquetas LBR. La lectura termina cuando se

detecte que se llega al final del archivo *.TextGrid o el final de zona. Las

líneas del fichero de parámetros con etiquetas LBR tendrán la siguiente

estructura:

LBR: inst inicial(sg),inst final(sg), 0,0,0,fonema

Se realiza una traducción de la etiqueta asociada al silencio “sil” al

símbolo “&”. El silencio inicial que aparece en las series de logatomos es

descartado a la hora de generar el fichero de parámetros. Este proceso

es necesario para adaptar la información al programa de síntesis de

difonemas.

5 A la hora de calcular la F0 estimada de una marca con respecto a la anterior, hay que señalar que en el caso de la primera marca del fichero, esta tendrá una F0 estimada de 100Hz.

50

Page 71: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

5.3.2 SACADIFVC.EXE

De forma breve, el programa genera las unidades difonemas dividiendo cada

unidad fonema por la mitad y uniendo la mitad final de un fonema con la mitad inicial

de la siguiente. Este complicado proceso se realiza teniendo en cuenta el contexto de

cada fonema y difonema implicado. Cada una de las series de cinco logatomos es

procesada de forma que los fonemas que la componen se unirán entre sí formando

diferentes combinaciones de difonemas.

El programa puede dividirse en dos bloques, uno encargado del procesamiento de

los datos de entrada y la inicialización del hilo de síntesis, y otro encargado de realizar

la síntesis de difonemas a partir de los fonemas en los que está dividida la serie de

logatomos.

Bloque 1. Inicialización del hilo de síntesis y procesado de datos de entrada

La función TProcesaVoz::TProcesaVoz (char *ficheroConfiguracion): TCoefsMFC() ,TEtiquetasFich() inicializa la estructura procesaVoz que se

utilizará en todo el proceso de síntesis. Como parámetro de entrada se le pasa por

defecto siempre el fichero de configuración sacadif.ini del cual obtendrá

información para inicializar una serie de variables y parámetros que

posteriormente se utilizan, como por ejemplo, la velocidad, el tono medio y el

nombre del fichero que contendrá una lista de las palabras no acentuadas.

Una vez inicializados los parámetros y variables necesarias, se procede a

cargar en memoria, en el vector procesaVoz.muestras el fichero de muestras

*.pcm. La carga se realiza mediante la función TIVector *LeeMuestrasRaw (TNombre directorio, TNombre name). Como argumentos recibe el nombre del

fichero de muestras y el path en el que se encuentra. La función LeeMuestrasRaw

devuelve un puntero a una estructura de tipo vector en la que se informa del

número de muestras que conforman el fichero, la frecuencia de muestreo

(obtenida del fichero de configuración raw.ini) y un array con las muestras leídas

del fichero *.pcm. Las muestras se copian en bloques de 256 muestras.

Después de guardar las muestras, se analiza el fichero de parámetros

correspondiente al fichero de muestras. Mediante la función void TProcesaVoz :: LeeParametros(char *directorio,char *fichero,boolean modoProcesa) se

obtiene la información de los fonemas y las marcas de F0, y se guarda en

memoria. Recibe como argumentos el path y el nombre del fichero de parámetros

*.par. De una forma más detallada esta función realiza los siguientes pasos:

- Localiza en el fichero de parámetros las etiquetas LBR y guarda la

información obtenida en un array etiquetas de estructuras TEtiqueta. Para

51

Page 72: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

cada etiqueta encontrada con información de un fonema, obtiene el nombre

del fonema y su principio y final.

- Crea un array de estructuras TFonemaSintesis (procesaVoz.fonemas) con

igual información que tiene en etiquetas pero con distinto formato mediante

la función TFonemaSintesis *TProcesaVoz::CreaFonemas(char *directorio,

char *fichero). Cada fonema del array tiene los siguientes campos:

o int codigo: El código de cada fonema se halla a través de la función

int traduceFonema(char *etq). Esta función busca cada etiqueta

pasada como argumento en un array traductor de estructuras

TtradFon con formato {letras, F_fonema} y devuelve el código del

fonema asociado. El código del fonema se modifica, si procede,

dependiendo del tipo de fonema que resulte y del contexto en el que

se encuentre (dependiendo del fonema anterior y del posterior).

o int dur: Contiene la duración del fonema que se calcula como el

intervalo entre el principio y el final de la etiqueta.

o int f0: Aunque es el campo dedicado a la frecuencia del fonema,

contiene la posición de inicio del fonema.

- Crea un array de bloques de fonema partiendo de la serie de cinco

logatomos que encuentra en el fichero *.txt. La conversión es realizada por

la función void TProcesaVoz::Graf2Fon (FILE *fp, unsigned char

fonemas[1000], int &numEspaciosEnBlanco,char *fichero,TFonemaSintesis

*fonemasSecuencia, int32 numEtiquetas). De forma previa a la obtención de

los bloques de fonema, se genera una serie de bloques de palabra de

partida. Este proceso se realiza tomando carácter a carácter la serie de

logatomos contenida en el fichero de texto y creando bloques de palabras

TBlkPalabra cuando se detecta el final de una palabra. Cuando se consigue

la cadena de bloques de palabra, se realiza un preprocesado de la misma

de forma que se traducirán, números, abreviaturas, palabras sin vocales o

cualquier signo que aparezca, con el fin de que al realizar la conversión a

bloques de fonemas no haya ningún problema. También se revisa si en la

cadena existe alguna palabra que no se acentúa (fichero atonas.lis), de lo

contrario se acentúa dependiendo de las sílabas que tenga la palabra. La

función TBlkFonemaIndex CadenaPal2CadenaFon (TBlkPalabraIndex

indPal,TBlkFonemaIndex indFon,char modo) convierte la cadena de

palabras a una cadena de bloques de fonemas TBlkFonema.

52

Page 73: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

La estructura de los bloques de fonema TBlkFonema consta de los

siguientes campos:

o TFonema fonema: Es una instancia del tipo TFonema (unsigned char)

en la que se almacena la representación fonética del carácter.

o TBlkFonemaIndex ant: Se trata de una variable del tipo

TBlkFonemaIndex (int) que sirve para encontrar el elemento anterior

dentro de la cadena de fonemas. Esta variable se corresponde por

tanto con un índice respecto al comienzo de la zona de memoria

destinada a almacenar el bloque de fonema anterior.

o TBlkFonemaIndex sig: Lo mismo que el campo anterior, pero en este

caso permite acceder a la estructura TBlkFonema correspondiente al

fonema siguiente.

o TF0 F0: Es un campo de tipo TF0 (int) destinado a almacenar la

frecuencia (en Hertzios) de la fuente glotal asociada a cada fonema.

o TDuracion Duracion: Es una variable de tipo TDuracion (long) que

contiene la velocidad de locución del bloque.

Se realiza una comprobación para ver si el nombre de los fonemas de los

bloques de fonemas es igual al de los fonemas obtenidos a partir del fichero

de parámetros. Si existen diferencias entre ambos, se informa del problema

y se modifica el fonema del array TFonemaSintesis con el nombre del

bloque fonema que corresponda.

- Constituidos los fonemas de los que consta la cadena de logatomos, se

localiza en el fichero de parámetros las etiquetas PIT con las marcas F0.

Cuando encuentra información sobre una marca llama a la función void

TProcesaVoz::anyadeMarca(float fTiempo, bool *rellenos, int ultimo, boolean

modoProcesa) a la que se le pasa, como primer argumento, el instante en

segundos en el que se da la marca. Se guarda en procesaVoz.marcas

(estructura de tipo Tejes) la información general referente a las marcas F0

como el número total de marcas, la frecuencia de muestreo, etc. y un array

con las mismas (con los instantes en los que se dan). Para cada marca que

se encuentra, busca el índice de la etiqueta a la que pertenece. Si el fonema

anterior es oclusivo o fricativo, lo remarca, es decir, recalcula el instante en

el que se da la marca. En caso contrario, guarda el instante temporal de la

marca.

En resumen, la función void TProcesaVoz :: LeeParametros (char *directorio,char *fichero,boolean modoProcesa) rellena procesaVoz.fonemas y

53

Page 74: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

procesaVoz.marcas, dos arrays de estructuras de tipo TFonemaSintesis y TEjes

respectivamente, que contienen la información de los fonemas y de las marcas de

F0.

El último paso previo a la generación automática de los difonemas es corregir

las marcas de los fonemas dependiendo del tipo de fonema y del contexto en el

que se encuentre. Para ello se llama a la función void TEtiquetasFich:: corrigeMarcas (TFonemaSintesis *fonemas, TEjes *marcas). La función toma

para cada fonema, la posición de la primera marca desde el comienzo del fonema

y la posición de la última marca. En primer lugar se hace un remarcado

dependiendo del tipo de fonema:

Fonemas oclusivos: Los remarca de forma que el tono del fonema sea

igual al tono del siguiente. En caso de ser el último fonema, remarca con

tono 100Hz.

Fonemas fricativos, africados y pausas: Los remarca de forma que el tono

del fonema son 100Hz.

Después se realiza un remarcado dependiendo del contexto (fonema anterior y

posterior):

Fonema vibrante entre dos vocales: Si existe una diferencia superior al

20% entre el tono del fonema vibrante y el tono de la vocal anterior o la

posterior, o el fonema vibrante está marcado de forma que hay pocas

marcas, entonces se remarca el fonema de forma que el tono final del

fonema sea una media entre el tono de las vocales.

Vocal + (fonema oclusivo, fricativo, africado o pausa): En estos casos se

revisa si el fonema vocal está ensordecido por el contexto, es decir, tiene

pocas marcas. Si la vocal está ensordecida entonces se remarca de

forma que el tono final del fonema sea 100Hz.

Para corregir las marcas de un fonema, una vez se tiene identificado el caso,

se realiza siempre el mismo proceso: primero se borran todas las marcas,

incluyendo la primera y la última, y después se insertan marcas, entre los límites

del fonema, espaciadas de forma que el tono medio del fonema sea el deseado en

cada caso. Como último paso, se actualizan los valores de la posición de la

primera y última marca del fonema.

54

Page 75: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Bloque 2. Generación de difonemasLa función que realiza el proceso de generación es void TProcesaVoz::

RecorreFonemas(char*dir,char *fichero) que va tomando uno a uno los

fonemas de la cadena y creando el array de estructuras TDifonema difonemas

correspondiente. Esta función a su vez, llama a otra función que realiza el proceso

de generación:

- La rutina fundamental de generación de difonemas es int Ifz_DameUnidad

(TUnidadSintesis * unidad). Esta función devuelve la unidad sintetizada que

en este caso corresponde a un difonema. Esta rutina llama a su vez a la

función static int BuscaUnidad( TUnidadSintesis * unidad). La función realiza

el proceso de cortado de los fonemas y el pegado de las distintas partes

para la generación de difonemas. Realiza la conversión de fonema a unidad

sintetizada (difonema), creándola teniendo en cuenta la unidad anterior y la

siguiente. Para realizar el proceso de forma más sencilla, trabaja con un

buffer de hasta 3 fonemas. La estructura del buffer es: { (c1[ ],d1,f1) ;

(c2[ ],d2,f2) ; (c3[ ],d3,f3) }. De esta forma, para cada uno de los fonemas

tiene la duración, la frecuencia y el nombre del fonema. Para cada fonema

nuevo que toma, decide qué combinación le corresponde. Después de

generar una unidad difonema, almacena en unidadQueda el nombre, la

duración, el tono de la parte del fonema restante. Por tanto, para cada

fonema nuevo, calcula la unidad difonema, la unidad que queda, y la

duración y el comienzo del difonema.

Despues de sintetizar una unidad difonema, se introduce la información

concerniente en el array de estructuras TDifonema difonema y se copia el

difonema en el array de difonemas ordenados. Este array mantiene una pila de

difonemas ordenados con todos los generados en un fichero. De esta forma si se

generan dos o más difonemas con el mismo nombre pero distintos valores, se

puede realizar una diferenciación entre ellos (se añade una @número despues del

difonema).

Una vez obtenidos los nombres de las unidades difonema a sintetizar, el inicio

y las duraciones de las mismas, se procede a la obtención de las muestras y

marcas contenidas en cada unidad. Para esta última parte del proceso, se utilizan

las siguientes funciones:

- void LeeMuestras(TIVector *muestras,TDifonema *difonemas, int32 i,

TIVector *trozo, TEjes marcas). A partir del vector de muestras, del array de

difonemas y el de marcas, asigna las muestras al difonema creado TIVector

trozo. Durante la asignación se realiza una extensión del difonema, puesto

55

Page 76: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

que el copiado de muestras se realiza desde la marca anterior al comienzo

del difonema y la marca posterior al inicio del siguiente. Para cada trozo se

informa la frecuencia de síntesis, el número de muestras que lo conforman

y se copian las muestras correspondientes. También se actualizan los

campos de la estructura difonemas correspondientes a la duración, al

comienzo y a la frecuencia del difonema.

- Para la obtención del bloque de marcas asociado a cada difonema se utiliza

la función int32 CalculaNumMarcas(TDifonema *difonemas, TEjes marcas,

TEjes *marcasTrozo,int32 i) . La función devuelve el número de marcas

contenidas en una unidad difonema e inserta en marcasTrozo los instantes

en los que se cuenta con una marca, la posición de la primera marca del

trozo, el número de muestras del trozo, etc.

- La función void corrigeMarcasDifon(TDifonema *difonemas, TEjes/*32*/

*marcasTrozo,int32 i) remarca el difonema cuando el número de marcas sea

menor que cuatro (el mínimo número de marcas permitido). Si en el trozo ya

existen marcas, se ponen marcas equiespaciadas desde la posición de la

última marca hasta el final del trozo. Si el trozo no está marcado, se insertan

cuatro marcas equiespaciadas entre el inicio y el final del trozo.

- int32 EscMuestras(TNombre fichero, TIVector *v) genera un fichero de

muestras *.mst a partir del vector de muestras. El proceso se realiza para

cada difonema sintetizado, siendo el nombre del fichero el del difonema.

- void EscMarcas(char *directorio,char *name, TEjes *eje) genera, para cada

difonema, un fichero de marcas *.mar a partir de la estructura TEjes marcas.

En el fichero se escribe en primer lugar el número de muestras y el número

de marcas y despues se listan todas las marcas que contiene el difonema,

detallando también la posición de las mismas.

- void EscMarcas16(char *directorio,char *name, TEjes *eje) genera un fichero

de marcas *.16mar similar al anterior pero en el que cada una de las marcas

ocupa 16bits (en la función anterior cada marca ocupa 32bits). Cada fichero

generado es nombrado con el difonema.

- void EscMarcasPAR(char *name, TEjes eje) genera un fichero de

parámetros *.par con información de las marcas y la frecuencia relativa

(etiquetas PIT) y con información de la duración, y el inicio y final del

difonema (etiquetas LBR). El nombre de cada fichero es el del difonema

relativo.

56

Page 77: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

- void TProcesaVoz::CalculaDifonema(TEjes *marcasTrozo,int32 posicDifon,

int ultimoDifon) recalcula la duración del difonema redondeandola a

milisegundos y calcula el pitch medio del mismo.

Para finalizar el programa, la función void VuelcaParametrosDifonemas(char *fichero, TDifonema *difonemas, int32 numDifonemas) genera un fichero de

depuración *.dpf con la información de los difonemas (marcas de F0 asignadas a cada

difonema, duración, pitch medio y relativo para cada marca,etc.) y void EscDifonemas (char *nombre, TDifonema *difonemas, TDifonema *difonemasOrdenados, int32 numDifonemas) genera los ficheros de duraciones *.di

y *.di1 (igual al anterior pero distinto formato) asociados a cada difonema y también

genera uno con la información de todos los difonemas del fichero.

5.3.2.1 Problemas detectados y modificaciones realizadas

Durante el proceso de síntesis de los difonemas a partir de las bases de datos de

logatomos de las distintas emociones, han aparecido diferentes situaciones

problemáticas que se han solventado con modificaciones en diversos puntos del

programa o cambiando algunos datos en los ficheros de entrada.

El primer inconveniente encontrado fue que el programa y el algoritmo de

segmentación automática utilizaban nombres diferentes para llamar a un mismo

fonema. Debido a esto, se producían errores en la función que obtiene el código de

cada fonema (int traduceFonema(char *etq)), ya que en el array TtradFon que se

utiliza para obtener la relación entre los fonemas del fichero de parámetros de entrada

y los fonemas utilizados por el sintetizador de difonemas función no contenía todas las

relaciones posibles. Así pues, se ha modificado esta estructura de forma que se han

añadido, eliminado y actualizado algunas parejas.

Los cambios realizados se pueden ver en la siguiente tabla:

57

Page 78: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

AHORATtradFon traductorFonemas[] = { {"a", F_a}, {"e", F_e}, {"i", F_i}, {"o", F_o}, {"u", F_u}, {"'a", F_a | ACENTO}, {"'e", F_e | ACENTO}, {"'i", F_i | ACENTO}, {"'o", F_o | ACENTO}, {"'u", F_u | ACENTO}, {"a~", F_a | NASAL}, {"e~", F_e | NASAL}, {"i~", F_i | NASAL}, {"o~", F_o | NASAL}, {"u~", F_u | NASAL}, {"'a~", F_a | ACENTO| NASAL}, {"'e~", F_e | ACENTO| NASAL}, {"'i~", F_i | ACENTO| NASAL}, {"'o~", F_o | ACENTO| NASAL}, {"'u~", F_u | ACENTO| NASAL}, {"b", F_b}, AÑADIDO {"B", F_B}, {"D", F_D}, {"d", F_d}, AÑADIDO {"G", F_G}, {"g", F_g}, AÑADIDO {"f", F_f}, {"I", F_i}, {"J", F_J}, {"J/", F_Jb}, AÑADIDO {"k", F_k}, {"l", F_l}, {"L", F_L}, {"m", F_m}, {"n", F_n}, {"N", F_N}, AÑADIDO {"N~", F_ny}, AÑADIDO {"p", F_p}, {"r", F_r}, {"R", F_R}, AÑADIDO {"RR", F_R}, {"R/", F_R}, AÑADIDO {"R~", F_R_fin}, {"s", F_s}, {"T", F_T}, {"T/", F_Tb}, AÑADIDO {"t", F_t}, {"U", F_u}, {"w", F_u}, {"X", F_X}, {"sp",F_Coma}, AÑADIDO {"&",F_Coma} AÑADIDO };

ANTESTtradFon traductorFonemas[] = { {"A", F_a}, {"E", F_e}, {"I", F_i}, {"O", F_o}, {"U", F_u}, {"'A", F_a | ACENTO}, {"'E", F_e | ACENTO}, {"'I", F_i | ACENTO}, {"'O", F_o | ACENTO}, {"'U", F_u | ACENTO}, {"A~", F_a | NASAL}, {"E~", F_e | NASAL}, {"I~", F_i | NASAL}, {"O~", F_o | NASAL}, {"U~", F_u | NASAL}, {"'A~", F_a | ACENTO| NASAL}, {"'E~", F_e | ACENTO| NASAL}, {"'I~", F_i | ACENTO| NASAL}, {"'O~", F_o | ACENTO| NASAL}, {"'U~", F_u | ACENTO| NASAL}, {"B", F_B}, {"B/", F_b}, ELIMINADO {"B*", F_b}, ELIMINADO {"V", F_B}, ELIMINADO {"V*", F_B}, ELIMINADO {"V/", F_B}, ELIMINADO {"D", F_D}, {"D/", F_d}, ELIMINADO {"D*", F_d}, ELIMINADO {"G", F_G}, {"G/", F_g}, ELIMINADO {"G*", F_g}, ELIMINADO

{"p", F_p},{"t", F_t},{"k", F_k},{"f", F_f}, ELIMINADO{"f*", F_f}, ELIMINADO{"X", F_X},{"X*", F_X}, ELIMINADO{"T", F_T},{"__", F_s}, ELIMINADO{"s", F_s},{"s*", F_s}, ELIMINADO{"z", F_T}, ELIMINADO{"z*", F_T}, ELIMINADO{"J", F_J},{"J*", F_J}, ELIMINADO{"n", F_n},{"ñ", F_ny}, ELIMINADO{"ny", F_ny}, ELIMINADO{"m", F_m},{"r", F_r},{"RR", F_R},{"RR*", F_R}, ELIMINADO{"R~", F_R_fin},{"l", F_l},{"LL", F_L}, ELIMINADO{"Ch", F_Tb}, ELIMINADO

{"gs", F_s}, ELIMINADO{"ks", F_s}, ELIMINADO{"y", F_J}, ELIMINADO

};

TABLA 1: MODIFICACIONES REALIZADAS EN EL ARRAY TTRADFON DEL PROGRAMA SACADIFVC.EXE

58

Page 79: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Un problema muy usual que se da en la síntesis de difonemas es que, con

frecuencia, existen diferencias entre los fonemas generados por el reconocedor de la

segmentación automática y el texto de la serie de logatomos asociada. Por ejemplo,

en el texto aparece el logatomo “badis” y en el fichero de etiquetas se reconoció como

“bacis”. La diferencia se hace visible en la generación de los bloques de fonemas

TBlkFonema, cuando se realiza una comprobación de si el nombre de cada uno de los

bloques coincide con el código de los fonemas de procesaVoz.fonemas. La

incongruencia se origina en casos en los que la locutora pronuncia un logatomo

diferente al que le marca el texto, es decir, en el ejemplo anterior la locutora dirá

“bacis” en lugar del texto marcado “badis”.

Para resolver este problema hay que analizar de forma manual el fichero de voz

que contiene el logatomo afectado. Si en el fichero de voz realmente aparece lo que

hay escrito en el fichero de etiquetas, se modifica el fichero de texto asociado con el

logatomo pronunciado.

Por último, se han realizado una serie de modificaciones en la función que realiza el

remarcado automático de los fonemas (corrigeMarcas (TFonemaSintesis *fonemas,

TEjes *marcas)), introduciendo nuevos contextos en los que se hace necesario un

remarcado, detectados a lo largo de la revisión manual de marcas, y modificando

otros. Las modificaciones que se han realizado atañen a los siguientes casos:

Vocal + (fonema oclusivo, fricativo, africado, pausa): Este caso ya se tenía

en cuenta. Se realizaba la remarcación en el caso de tener vocales

ensordecidas (pocas marcas). En este punto, se ha añadido el caso en el que

la vocal disponga de un número mínimo de marcas pero exista un gran espacio

entre la última marca y el final del fonema (final de fonema ensordecido). Así

pues, no es necesario realizar una marcación automática sino que se añadirán

tres, dos o una marca más dependiendo de la longitud del segmento del

fonema ensordecido.

Vocal + (fonema vibrante): Puede darse el caso de que la vocal previa a un

fonema vibrante (sobre todo en emoción tristeza y enfado) tenga pocas

marcas. Las causas de esto son o bien que la vocal está ensordecida debido a

la expresión de la emoción o bien que se pierde la periodicidad de la señal y es

difícil el marcado total del fonema. Se añadirán una, dos o tres marcas

dependiendo del espacio que quede entre la última marca de la vocal y el final

de la misma.

Vocal + fonema vibrante + pausa: El problema es el mismo que en el caso

anterior, puede que el fonema vibrante no esté totalmente marcado porque esté

59

Page 80: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

ensordecido o porque la señal se vuelva irregular a consecuencia de la

emoción expresada. Cuando tenemos fonemas vibrantes al final de una

palabra y tiene pocas marcas o no las tiene de forma homogénea en el fonema,

se realiza el mismo proceso anterior. Se añadirán marcas dependiendo de la

zona del fonema que esté sin marcar.

5.4 ObtenListaDif.exe

El programa ObtenListaDif.exe selecciona entre todos los difonemas generados por

sacadifVC.exe aquellos que aparecen en una lista de palabras “Listapal.txt”. En la lista

se enumeran los difonemas que van a formar parte de la base de datos y se

relacionan con los logatomos de donde se obtienen (el logatomo es el contexto elegido

para la obtención de la unidad difonema). Una vez se tiene ubicado el logatomo

contenedor dentro de un determinado fichero, se localiza el difonema en el directorio

donde se encuentran los difonemas generados por el sintetizador asociados al fichero.

El programa genera una lista Minilistadif.txt que es utilizada por gendb.exe y en la que

se detallan los difonemas de los que estará compuesta la base de datos. Se genera un

archivo de depuración intermedio con los difonemas seleccionados, los logatomos de

los que se han obtenido, la posición de cada logatomo en la serie y el fichero que

contiene la serie.

El programa realiza las siguientes acciones:

Paso 1 - Carga en memoria de listapal.txtLa función void ObtenDifImport(T_ImpDifs *Difonemas) guarda en la

estructura T_ImpDifs Difonemas, los difonemas de los que estará compuesta la

base de datos de difonemas (elementos de tipo T_ImpDif). La estructura

Difonemas contiene los siguientes campos:

o int numplbrs Indica el número total de difonemas a seleccionar (o de

estructuras T_ImpDif) que formarán el corpus final de difonemas.

o T_ImpDif * Difonemas Cada una de las estructuras contiene un

campo char Word [ ] que indica el logatomo que contiene el difonema, y

otro campo char Difone [ ] con el difonema a seleccionar para el corpus.

Paso 2 - Carga en memoria de lista con relación ficheros/series logatomosLa función void CargaGrabaciones(T_Grabacions *Grabaciones)

almacena en la estructura T_Grabacions Grabaciones, la relación existente entre

los ficheros y la serie de logatomos que contiene cada uno de ellos. El proceso

que realiza es similar a la función anterior a la hora de cargar en memoria la lista

de difonemas. El esquema en memoria de la estructura es:

60

Page 81: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

o int numgrabs Indica el número de ficheros que forman la base de

datos de logatomos.

o T_Grabacion * Grabaciones Define las relaciones entre ficheros y

series. Cada una de las estructuras contiene un campo char NameFich[]

con el nombre del fichero correspondiente y un campo char Plbrs[] que

contiene la serie de cinco logatomos asociada.

Paso 3 - Localización del logatomo que contiene el difonema a seleccionar Se realiza una búsqueda entre todos los ficheros hasta encontrar el logatomo

contenedor en la serie correspondiente. Cuando se encuentra un logatomo se

guarda en la estructura T_Lista ListaDifon el difonema (campo char DifonImport [

]), el logatomo contenedor (campo char Palabra [ ]), la posición que ocupa el

logatomo dentro de la serie de cinco logatomos (campo int Posición) y el fichero

que contiene la serie (campo char Fichero [ ]). Esta lista es utilizada en el último

paso para buscar en el directorio los archivos que necesita el programa

gendb.exe para generar el corpus de difonemas. Se crea el archivo intermedio

Lista_total.txt en el que guarda en disco los datos que contiene ListaDifon (se

crea como método de depuración ante posibles errores en la localización de los

archivos).

Paso 4 - Generación fichero Mini_listadif.txt y selección de ficheros

La función void BuscaDif(T_ListaDif listaDifon) encuentra el fichero de

duraciones *.di de todos los difonemas generados por sacadifVC.exe (dentro del

directorio homónimo al fichero que contiene la serie con el logatomo de interés),

crea el archivo MINI_LISTADIF.txt y llama a la función void EncuentraDif(T_Lista

difBlk,FILE *pFbus,FILE *pListaDif) que es la que se encarga de realizar la

busqueda del difonema dentro del fichero de duraciones. En primer lugar se

sitúa sobre la zona del archivo *.di que contiene la información de las duraciones

de los difonemas del logatomo contenedor y despues ubica el difonema en ella.

Es decir, si el logatomo se encontraba en la posición tres de la serie, la función

se situará sobre el tercer bloque de información de duraciones y una vez en el

buscará el nombre del difonema. Si el difonema es ubicado, se inserta una

nueva línea en el archivo MINI_LISTADIF.txt con el difonema y se seleccionan

los archivos de marcas normalizados a 16Khz (*.16mar) y de muestras (*.mst),

de igual nombre que el difonema, que generó sacadifVC.exe. Si no encuentra el

difonema en la posición establecida dentro del archivo de duraciones, se

informará del error, y ese difonema no formará parte de la lista de difonemas que

componen la base de datos.

61

Page 82: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Obtenida la lista de difonemas en el formato necesario y los ficheros de marcas y

de muestras de éstos, se procede a la generación de la base de datos final.

5.5 Gendb.exe

Teniendo los archivos de muestras y marcas de los difonemas que formarán parte

del corpus en el directorio de entrada y de los ficheros de inicialización gendb.ini y

raw.ini, se procede a la generación de la base de datos propia que entiende el

sintetizador de voz. Se genera un archivo minidb.dfm con el formato necesario para la

síntesis TD-PSOLA y un archivo homónimo en formato texto minidb.mfd para la

depuración y fácil detección de errores.

En el programa de implementación del generador del corpus, se pueden distinguir

distintos pasos o acciones:

Paso 1 - Inicialización del sistemaEn primer lugar se toman los parámetros necesarios de los ficheros de

inicialización gendb.ini y raw.ini. Este proceso se realiza mediante las funciones

DameProfileString(const char *NombreFichero, const char *Seccion, const char *Parametro, const char *Defecto, char *Destino, int16 Cuantos) y

DameProfileDouble (const char *NombreFichero, const char *Seccion, const char *Parametro, double Defecto, double *Destino) que inicializan los

distintos parámetros y variables que se utilizan en el programa. Estas funciones

buscan un parámetro (pueden ser de tipo string o double) dentro de una

determinada sección del fichero de inicialización y lo copian en una variable

destino. El nombre del fichero, la sección donde buscar, el parámetro y la

variable destino son pasados como argumentos.

Paso 2 - Cargar en memoria lista de difonemasAbre el archivo MINI_LISTADIF.txt y realiza la carga en memoria de la lista

con los difonemas que compondrán el corpus. Los datos son almacenados en un

array lista de estructuras de tipo TListaUnidadesA que contienen los siguientes

campos:

TListaUnidades unid : Contiene el nombre de la unidad difonema (campo

char difon [10]) y el offset de una unidad respecto a la siguiente (campo

uint32 offset). El offset de la unidad se informa cuando se leen las

marcas, ya que se calcula como el offset de la unidad anterior más el

espacio que ocupan las muestras del difonema anterior.

TNombre nombreReal : Indica el nombre de la unidad en el directorio de

origen. Misma información que campo anterior.

62

Page 83: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

char dir [] : Indican el nombre del difonema.

char frase[] : Indican el nombre del difonema.

TListaUnidades unidadAnt : Contiene el nombre de la unidad anterior y el

offset de la misma.

Paso 3 - Lectura de los ficheros de marcasPara cada difonema de los que se han cargado en lista, se localizan los

ficheros de marcas en el directorio database_16 (directorio de entrada) y se

almacenan en memoria las marcas contenidas. El sintetizador utilizará marcas

con formato de 16 bits (por eso los ficheros de marcas seleccionados fueron

*.16mar). La función TEjes *LeeMarcas16 (char* directorio,char *name) se

encarga de leer las marcas de los ficheros de marcas y almacenarlos en

memoria. El proceso que realiza la función es opuesto al de la función utilizada

en sacadifVC.exe para la escritura de las marcas. En este caso, se almacenan

en una estructura de tipo TEjes los datos correspondientes a la frecuencia de

muestreo, el número de marcas del difonema, el número de muestras que

conforman el difonema y se guardan los instantes en los que se dan las marcas

(hasta un máximo de doscientas marcas).

Paso 4 - Generación del archivo de base de datosParalelamente a la generación del archivo de base de datos en modo binario,

se genera un archivo en modo texto con los mismos datos y estructura que el

primero, y que sirve para detectar los posibles errores que se den durante el

proceso. Los archivos están estructurados de la siguiente forma:

En primer lugar se inserta una cabecera con la cadena informativa

“Unidades PCM 16 bits 16 Khz”.

A continuación se escribe el número total de difonemas y el offset final de

todos los difonemas, es decir, el tamaño total de todos.

El bloque siguiente contiene uno a uno, todos los difonemas (aparecen

codificados en el archivo de base de datos) y el offset asignado a cada

uno de ellos.

El cuarto y último bloque de información, contiene para cada difonema

una serie de apartados. En primer lugar se indican los datos del número

de muestras, la frecuencia de muestreo y el número total de marcas del

difonema. En el siguiente apartado se indican los instantes en los que se

producen las marcas y por último se escriben las muestras que

conforman el difonema. Es al escribir la información de este bloque,

donde se toman las muestras de los ficheros *.mst de cada uno de los

63

Page 84: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

difonemas mediante la función TIVector *LeeMuestras(TNombre directorio,TNombre name). La función realiza el proceso inverso que se

realizó en sacadifVC.exe para la escritura de las muestras. En este caso,

se leen las muestras en bloques de 256 muestras o 512 bytes

almacenando las mismas en un vector. Si el número de muestras

contenido en el fichero de muestras difiere del dato obtenido del fichero

de marcas se informa del error y se mantiene como válido el dato

obtenido del fichero de muestras.

A la hora de escribir las marcas en los ficheros se limita el número de

las mismas a un máximo de 50 marcas. Si el fichero contiene más

marcas se limitan y si el número de marcas no llega al máximo, se rellena

con ceros la posición de las marcas hasta cubrirlo. En último lugar se

escriben, sólo en el fichero de base de datos las muestras asociadas con

el difonema correspondiente.

5.5.1.1 Problemas detectados y modificaciones realizadas

Para que el sintetizador de voz Boris trabaje con la información correcta y sin

problemas, se han tenido que hacer ciertas modificaciones para adaptar el archivo de

base de datos creado por el generador. Es preciso que el sintetizador lea los datos del

archivo generado en el mismo orden en el que son escritos por el generador.

El sintetizador utiliza una versión más antigua que el generador de base de datos

por lo que los tamaños de las variables que utiliza el sintetizador son más pequeños

que en el generador de base de datos. En la siguiente tabla se pueden ver las

diferencias detectadas:

64

Page 85: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

  Generador de base de datos Sintetizador de voz

Número de Difonemas static int32 nDif static int16 nDif

Nombre de la unidad char difon[10]6 char difon[6]

Estructura de marcas Tejes *marcas

typedef struct{

int32 nsample;

int32 fs;

int32 nmar_a;

int32 *xmar_a;

int32 *numMarcaOrigen;

int32 *valorMarcaOrigen;

int32 *etiq;

float *factor;

int32 MAXMARCAS;

}TEjes;

typedef struct{

int16 nsample;

int16 fs;

int16 nmar_a;

int16 xmar_a[MINEJES];

}TEjes2;

Las adaptaciones se han realizado a la hora de escribir en el archivo creado por el

generador. En el generador y en el sintetizador se mantienen los tamaños de variables

utilizados, y es a la hora de escribir en el archivo cuando se realiza el cambio de

formato de aquellas variables que difieran.

En el caso del número de difonemas se realiza el siguiente proceso: int16 num_dif=nDif;

fwrite(&num_dif,1,sizeof(int16),fp);

A la hora de escribir el nombre de cada difonema en el archivo de base de

datos, se realiza un truncado del mismo, es decir, sólo se escriben los primeros

6 caracteres en el archivo. Se realiza de la siguiente forma:fwrite(&(lista[count].unid.difon),1,6,fp)

Los campos de la estructura asociada a contener la información de las marcas

en el generador se adaptan siguiendo el mismo procedimiento. Se copia en una

variable auxiliar de igual tamaño que en el sintetizador de voz, aquellos campos

cuya información sea volcada al archivo de base de datos. int16 auxEje;auxEje=marcas[count].nsample;fwrite(&auxEje,1,sizeof(int16),fp);auxEje=marcas[count].fs;fwrite(&auxEje,1,sizeof(int16),fp);auxEje=marcas[count].nmar_a;fwrite(&auxEje,1,sizeof(int16),fp);int16 auxMarca=marcas[count].xmar_a[i];

6 El generador de base de datos soporta difonemas cuyo nombre tenga como máximo diez caracteres mientras que el sintetizador soporta como máximo nombres de seis caracteres.

65

TABLA 2: DIFERENCIAS DETECTADAS EN EL TAMAÑO DE VARIABLES EN GENDB.EXE

Page 86: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

fwrite(&(auxMarca),1,sizeof(int16),fp);

Se ha realizado una reducción del número de marcas máximo a escribir en el

archivo de base de datos por cada difonema. El generador es capaz de leer y guardar

en memoria hasta 200 marcas (MAXEJES) de un mismo fichero de marcas. El

sintetizador tiene como límite máximo de marcas existentes asociadas a un difonema

50 (MINEJES). Por esta razón, se ha limitado el número de marcas a escribir en el

archivo de base de datos a 50 de la siguiente forma:

if((eje->nmar_a)>MINEJES){

(eje->nmar_a)=MINEJES;}

for (i=marcas[count].nmar_a; i<MINEJES; i++){

int16 cero=0;

fwrite(&cero,1,sizeof(int16),fp);

fprintf(fpDep,"%d ",(int)cero);}

66

Page 87: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

6. SINTETIZADOR DE VOZ BORIS

6.1 Introducción

Se describe de forma detallada, en este capítulo, la implementación del sintetizador

de habla por concatenación de difonemas Boris que se ha utilizado en el proyecto.

Partiendo de una versión estable y válida del sintetizador de voz por concatenación

disponible en el departamento GTH, se han realizado una serie de modificaciones con

el objetivo de conseguir una versión del sintetizador que sea capaz de sintetizar voz

con emociones. La versión original de partida es la implementación de un sintetizador

por concatenación, con capacidad multihilo. La síntesis de voz con emociones se ha

implementado de forma similar a como se realizó en el sintetizador de Klatt del

proyecto Robint disponible en el departamento. Se han reutilizado ciertas partes del

módulo de procesamiento de lenguaje natural que se incluye en el sintetizador de

formantes para implementar la síntesis de emociones en el sintetizador por

concatenación de partida. Se han heredado y adaptado al nuevo sintetizador la

detección de etiquetas dentro del texto de entrada, y los módulos de prosodia

correspondientes a la entonación y a la duración. La integración de estos módulos

consiste básicamente en adaptar las partes del código que realizan las acciones de

interés y unificarlas con el sintetizador Boris. También se han realizado modificaciones

en la carga y utilización de las distintas bases de datos de difonemas pregrabados con

emociones.

En primer lugar se realiza una descripción global de cómo está estructurado y del

funcionamiento del sintetizador, para continuar con un análisis en profundidad de los

diferentes módulos que lo forman. Para finalizar, se realiza una descripción de los

distintos aspectos que han sido modificados respecto de la versión inicial del

sintetizador.

6.2 Descripción general

Como ya se comentó en el capítulo 2 de la presente memoria, se pueden

diferenciar dos bloques, de forma clara, en los sintetizadores de habla. Un bloque es el

encargado del procesamiento del texto de entrada y el otro es el encargado de la

síntesis de voz. En el caso del sintetizador utilizado, Boris, el primero de esos bloques

genera, a partir del texto de entrada, unas listas de parámetros que representan la

variación con el tiempo de las características del habla a sintetizar. El segundo de los

módulos se encarga de recoger esas listas de parámetros y generar el habla a partir

67

Page 88: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

de ellas. Por último, se puede hablar de un tercer bloque adicional cuya misión

consiste en el procesamiento de la señal de voz una vez sintetizada. La arquitectura

general del sintetizador por concatenación utilizado en el proyecto, Boris, es la

siguiente:

FIGURA 19: ESQUEMA DEL SINTETIZADOR DE HABLA POR CONCATENACIÓN BORIS

El entorno de desarrollo para la implementación de los distintos bloques es Visual

C++, y todos ellos se encuentran integrados en un único hilo de ejecución.

La función que tiene el módulo de Procesamiento de Lenguaje o de procesado de

texto es la de analizar el texto de entrada y realizar las operaciones oportunas para

generar un conjunto de parámetros que modelen las características del habla durante

un determinado periodo de tiempo. En primer lugar, se realiza un análisis del texto de

entrada y se tratan las palabras, números, siglas,… que aparezcan en el mismo así

como las etiquetas o secuencias de control que puedan aparecer en el texto de

entrada y que, como ya se ha comentado, permiten modificar diferentes parámetros y

características del habla. Una vez realizado el procesamiento adecuado sobre el texto

de entrada, se genera una lista de bloques de fonemas en la que se encuentran

almacenados, además de cada uno de los fonemas que componen el texto de entrada,

los valores prosódicos que los caracterizan e información adicional sobre si el fonema

se ve afectado por alguna secuencia de control. A partir de esta serie de bloques de

fonemas se generan unas listas de parámetros que posteriormente se utilizan en la

síntesis de voz. Cada una de las listas de parámetros generadas en este primer

bloque modelará las características del habla durante 10 milisegundos.

El bloque encargado de la síntesis propiamente dicha, recoge los parámetros

obtenidos y a partir de ellos genera el habla. En el sintetizador Boris, el método de

síntesis que se utiliza es el de concatenación de difonemas. Como ya se ha indicado,

este tipo de sintetizadores generan voz de calidad minimizando el ruido de codificación

y ajustando la prosodia original de las unidades digitalizadas pregrabadas a la nueva

prosodia de forma sencilla, facilitando la implementación de emociones en la señal de

voz. Es importante señalar que la síntesis de habla se realiza en el momento en el que

se tienen disponibles todos los parámetros correspondientes a una frase. Esto resulta

68

Page 89: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

de gran utilidad puesto que evita que en situaciones en las que, por ejemplo, se desea

sintetizar un texto largo, pase demasiado tiempo entre el instante en que se empiezan

a generar las listas de parámetros y el momento en que empieza a sintetizarse la voz y

a reproducirse el audio correspondiente a la misma.

Por último, en la estructura del sintetizador se puede distinguir un tercer bloque

encargado de modificar la señal de salida del bloque de síntesis, lo que resulta muy

útil para aplicar técnicas convencionales de procesado de señal sobre la voz ya

sintetizada. Este tercer módulo también se utiliza para controlar la reproducción y la

correcta grabación de la señal de audio en el disco duro como archivo *.wav. Este

control es esencial para conservar la continuidad en la reproducción frase por frase,

puesto que, de otro modo, siempre se apreciaría una pausa entre el final de la

reproducción de una frase y el comienzo de la siguiente. Esta pausa se correspondería

con el tiempo que tarda el ordenador en procesar y sintetizar la siguiente frase.

6.3 Bloque de procesado de lenguaje del sintetizador

6.3.1 DESCRIPCIÓN GENERAL DEL BLOQUE

Como ya se ha indicado, esta etapa tiene como objetivo generar una cadena o lista

de parámetros que describen la señal de voz a sintetizar en los diferentes intervalos de

tiempo. El sintetizador recoge y evalúa el texto que se le pasa como entrada,

correspondiente a la frase o serie de frases que se desean sintetizar. Se analizan los

distintos componentes que pueden aparecer en el texto (palabras, números, siglas,…)

y se les da el tratamiento adecuado de forma que se generan estructuras de tipo

TBlkPalabra con la información prosódica de cada uno de los componentes y con la

cadena de caracteres que lo conforman. Si en el texto de entrada se detecta una

secuencia de control, se modificarán los parámetros o variables necesarias para la

implementación del cambio que requiere la etiqueta y se almacenará la información en

los TBlkPalabra a los que afecte.

Cuando se detecta el final de una frase, el sistema pasa a convertir los bloques de

palabras en bloques de fonemas correspondientes a estructuras TBlkFonema. Estas

estructuras tienen, al igual que las correspondientes a las palabras, una serie de

campos donde se almacena la trascripción fonética correspondiente, la información

prosódica asociada a cada uno de los fonemas e información adicional sobre las

secuencias de control que los afectan. La información prosódica de cada fonema se

calcula a partir de los datos obtenidos de la base de datos disponible y de los

parámetros leídos de los ficheros de inicialización de los que se dispone. Dependiendo

de la emoción de la que se quiera dotar a la voz se accederá a unos ficheros de

69

Page 90: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

inicialización u otros o a una base de datos u otra por lo que la información prosódica

asignada a cada fonema depende de la emoción a sintetizar en cada momento.

En la siguiente figura se puede ver un esquema de la primera etapa de la síntesis:

FIGURA 20: ESQUEMA DEL BLOQUE DE PROCESADO DE TEXTO

6.3.2 IMPLEMENTACIÓN DEL BLOQUE DE PROCESADO

Antes de comenzar con el análisis y procesado del texto de entrada, el sintetizador

implementado necesita de una etapa previa de inicialización en la cual se cargan en

memoria, la base de datos de difonemas que corresponda y los diferentes valores de

variables y parámetros que se utilizan a lo largo del proceso de síntesis. Una vez se ha

inicializado el sistema, se prosigue con el proceso de síntesis de habla detallado

anteriormente y que se ha englobado en la implementación de una única función,

oir_cadena. Todo el sintetizador queda implementado dentro de la función

InicSinteMultiThread(parametros_hilo *p) que es la encargada de crear el hilo para

sintetizar el texto de entrada según los datos recibidos en la estructura

parametros_hilo.

En este apartado se realiza una descripción en detalle de las funciones utilizadas

en el proceso de inicialización y de las operaciones llevadas a cabo en la función

oir_cadena hasta el momento en el que se generan las listas de parámetros. Para

facilitar la comprensión se divide el análisis en cuatro partes:

Inicialización del sistema.

Generación de bloques de palabra.

Generación de bloques de fonemas.

Asignación de tono y duraciones a los fonemas.

70

Page 91: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

6.3.2.1 Inicialización del sistema

Para inicializar el sistema se utilizan una serie de funciones que obtienen, de los

diferentes archivos de inicialización, los valores de parámetros y variables que se

utilizan durante el proceso de síntesis. Antes del proceso general de inicialización, se

carga en memoria el texto de entrada y se dan valores por defecto a los diferentes

campos de la estructura parametros_hilo utilizada en la inicialización del sistema. La

estructura parametros_hilo está definida por los campos:

HWND ventana: Indica la ventana a la que se manda un mensaje cuando el

proceso de síntesis finaliza.

int linea: Indica la línea por la que se sintetiza cada frase. Su valor está

comprendido entre 0 y la constante MaxNumHilos, que en este caso es uno.

char *frase: Puntero al array que contiene la frase a reproducir

int velocidad: Indica la velocidad de reproducción en sílabas por minuto,

pudiendo variar entre 50 y 250.

int formato_salida: Hace referencia al tipo de archivo que se crea en disco y

que almacena la voz generada. Puede tomar los valores 0, 1 o 2 si el archivo

es *.mst, *.raw o *.wav respectivamente.

HANDLE evento_fin_copia: Recupera el valor devuelto por el proceso de

síntesis.

int textoDos: Indica si el texto de entrada está en formato MS-DOS, si toma el

valor 1, o en formato Windows, si toma valor 0.

float atenuación: Informa de la atenuación que se le aplica al texto de entrada

en dB.

int dispositivo: Muestra el número que identifica la tarjeta de audio que por

defecto es 0.

int tipo_dispositivo: Indica si la señal de habla sintetizada se almacena en un

archivo, tomando valor 0 o si por ejemplo se almacena en memoria, con valor

3.

float factorMultiplicativo: Junto con el factor aditivo indican las variaciones del

tono o frecuencia media que se realizan a la cadena a sintetizar. Puede tomar

valores entre 0,55 y 2. El valor por defecto del factor multiplicativo será 1, en

cuyo caso, se mantendrán los valores entonativos de los fonemas.

float factorAditivo: Es el valor que se le añade o se le resta a la curva de tono o

frecuencia fundamental. Puede tomar valores entre -50 y 50. Por defecto el

factor aditivo será 0, manteniendo la componente continua de la señal de voz al

valor original.

71

Page 92: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

char fichero_salida [MAX_PATH]: Nombre del archivo de salida en el que se

almacena el habla sintetizada.

Posteriormente, se realiza una llamada a la función HANDLE InicSinteMultiThread (parametros_hilo *p) que es la encargada de iniciar el hilo del sintetizador para cada

una de las posibles copias. Cada hilo del sintetizador generado ejecutará el mismo

código pero con una matriz de datos distinta. Para ello, la función DWORD WINAPI hilo_sintesis (LPVOID parametros) inicializa de forma local los parámetros y

variables correspondientes a cada uno de los hilos que se puedan generar. Cada hilo

está parametrizado por una estructura de tipo matriz llamada mi_matriz e inicializada a

traves de las siguientes funciones:

int inicializa_matriz (matriz *mi_matriz):

Esta función se encarga de inicializar cada uno de los campos de la estructura

mi_matriz que parametriza al hilo de síntesis. Para cada campo de la estructura existe

una función de inicialización propia. Así, esta función acoge las funciones:

int inicializa_Psd (matriz *mi_matriz): Inicializa el puntero a la estructura que

contiene la información asociada a la prosodia, Psd_globales *puntero_Psd.

int inicializa_Tdp ( matriz *mi_matriz ): Reserva memoria e inicializa la estructura

Tdp_globales *puntero_Tdp, la cual será muy útil en el proceso de síntesis.

int inicializa_Sintola ( matriz *mi_matriz ) y int inicializa_Getsint ( matriz

*mi_matriz ): Reserva memoria e inicializa las estructuras Sintola_globales

puntero_sintola y Getsint_globales puntero_Getsint respectivamente, utilizados

en la etapa de síntesis.

int inicializa_Interfaz (matriz *mi_matriz): Inicializa la estructura

Interfaz_globales puntero_Interfaz que contiene las variables del bucle que se

utiliza en la concatenación de los difonemas. Las unidades están vacías al

inicio y cuentan con una F0 de 100Hz. También se inicializa la unidad de

síntesis unidadQueda con un espacio o silencio de frecuencia media de 100Hz

y 40ms de duración.

int inicializa_Ctv (matriz *mi_matriz): Inicializa la estructura Ctv_globales

puntero_Ctv que contiene campos con datos del vector de análisis del proceso

de síntesis.

int inicializa_Out (matriz *mi_matriz): Reserva memoria e inicializa la estructura

Out_globales puntero_Out que contiene las variables asociadas al módulo de

salida, como la cabecera RIFF del archivo de audio, el número total de

muestras, el tipo de dispositivo de salida, etc.

72

Page 93: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

La función inicializa_matriz devuelve un código que es la suma de todos los

códigos de las subfunciones de inicialización de la matriz. Si se produce algún error en

alguna de las subfunciones, el sistema advierte del error, se libera el espacio de la

matriz de datos y se elimina el hilo creado devolviendo el control a la función padre

hilo_sintesis. Si la inicialización de las distintas subestructuras de la matriz de datos

es correcta, se introducen los valores por defecto de los parámetros del hilo en los

correspondientes campos de la matriz de datos.

int Ctv_Load_Global (WORD wParam, DWORD FConfig):

Mediante esta función se cargan en memoria todos los datos comunes a los hilos

como son las ventanas de Hanning, el fichero de base de datos con los difonemas

para la síntesis, la tecla de interrupción, etc. Para realizar la carga son necesarias las

funciones:

int16 Tdp_Load (WORD wParam, DWORD lParam): Recibe como parámetro

(DWORD lParam) el nombre del fichero que contiene el corpus de difonemas.

Realiza la inicialización necesaria para que se desarrolle la síntesis. Crea la

tabla de ventanas de Hanning, carga en memoria las unidades para la síntesis.

En primer lugar busca, dentro del fichero de inicialización ‘sintet.ini’, en la

sección DIFONEMAS, el parámetro FichCarga (nombre del fichero que

contiene la base de datos de difonemas a utilizar), BitsPorMuestra (contiene los

bits por muestra que tendrá la señal sintetizada) y el parámetro Codificado (si el

fichero de base de datos no está codificado, tiene valor 0, en caso contrario

tiene valor 1). Una vez obtenido el nombre del fichero de difonemas se cargan

en memoria las unidades y las muestras contenidas en el mismo mediante la

función int TdpCargaUnidades (char *nombreFichero). Cada uno de los

difonemas que componen el archivo de base de datos se almacena en una

estructura de tipo TListaUnidades formada por los campos:

char difon [6]: Contiene el nombre de la unidad difonema.

uint32 offset: Contiene la posición que ocupa el difonema en la lista

respecto del principio. El offset es necesario para poder encontrar las

muestras que forman el difonema dentro del archivo de base de datos.

Se leen a continuación las marcas asociadas a cada difonema y se almacenan

en la estructura TEjes2 Ejes [i]. Al igual que ocurría en el programa que creaba

el fichero de base de datos, los campos de la estructura son:

int16 nsample: Número de muestras pertenecientes al difonema.

int16 fs: Frecuencia de muestreo del sistema.

73

Page 94: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

int16 nmar_a: Número total de marcas que hay en el difonema.

int16 xmar_a: Posición de las marcas dentro del difonema.

Las muestras se almacenan en una estructura de tipo TIVector

mstDifs[MAX_DIFS] cuyos campos son:

int16 fr: Frecuencia de muestreo del sistema.

uint32 nmst: Número total de muestras que conforman el difonema.

TMuestra *x: Vector que contiene las muestras de cada difonema.

Una vez leídas todas las muestras y marcas del fichero de difonemas, se

procede a la creación de las ventanas de Hanning mediante la función int16

TdpInicVentanas (void).

int Cargar_Interrup(WORD wParam, DWORD lParam): Se carga la función que

comprueba si se presiona la tecla Esc, la cual provocará la interrupción del

proceso de síntesis.

int Ctv_Load (matriz *puntero,WORD wParam, DWORD FConfig):

Se encarga de realizar la carga de los datos propios y exclusivos de cada uno de

los hilos de síntesis, como puede ser, por ejemplo, el tipo de dispositivo de salida, etc.

Como argumentos de entrada recibe la matriz de datos propia del hilo, mi_matriz, y el

nombre y directorio del fichero de configuración que contiene los nombres de los

ficheros que hay que cargar y posiblemente algunos datos. Cada hilo puede tener su

propio fichero de inicialización de configuración. La función int Out_Load (matriz

*mi_matriz, WORD wParam, DWORD lParam) realiza la carga en memoria del interfaz

de salida.

int Ctv_FijarParametros (matriz *puntero, unsigned short velElocucion, float atenuacion, float factorMultiplicativo, float factorAditivo, unsigned short textoDos, WORD wParam, DWORD lParam)

Se encarga de fijar los valores de velocidad, factor aditivo y multiplicativo, y de

configuración del texto a sintetizar en los campos específicos de la estructura

Psd_globales *puntero_Psd inicializada en la función inicializa_Psd. Esta función

recibe como parámetros de entrada la matriz de datos propia de cada hilo, puntero, la

velocidad de locución expresada en silabas por minuto, la atenuación medida en dB

relativos, los factores aditivo y multiplicativo e información de codificación del texto de

entrada.

74

Page 95: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Las funciones que realizan las acciones de fijar los parámetros son:

void Psd_FijarVelElocucion (matriz *puntero, int velElocu): El valor de la

velocidad de locución introducida debe ser mayor que 50 sílabas/min y menor

que 250 sílabas/min. En caso de que el valor introducido no se encuentre entre

estos límites, se forzará al límite más cercano.

void Psd_FijarFactorMultiplicativo (matriz *puntero, float factMult): El valor del

factor multiplicativo queda limitado entre los valores (0.55,2).

void Psd_FijarFactorAditivo (matriz *puntero, float factAdit): El factor aditivo

introducido en la configuración de entrada no debe ser inferior a -50 ni superior

a 50.

void Psd_FijarTextoDos (matriz *puntero, int textoDos): La variable textoDos

contiene un código que indica el formato del texto a sintetizar. En el caso que

nos ocupa este valor será 0 indicando que el formato es el de Windows. Esta

función introducirá este valor en el campo correspondiente de la estructura

Psd_globales *puntero_Psd.

void inicializaEstadoPros (short atenuacion, float factorAditivo, float factorMultiplicativo, short velocidad)

Esta función se encarga de inicializar algunos campos de la estructura de tipo

emolista llamada estadopros. Esta variable se utiliza cuando se emplean etiquetas o

secuencias de control anidables para modificar determinados parámetros prosódicos

del sintetizador. La estructura emolista contiene un campo de tipo índice de la lista y

un array lista de estructuras tipo pros con los campos:

FIGURA 21: ESTRUCTURA EMOLISTA

El campo lista de la variable estadopros es una pila donde se almacenan una serie

de estados prosódicos. La variable indice por su parte va a indicar en cada momento

cuál es la última posición en la que se ha escrito dentro del array lista7.

7 Como máximo sólo se permite una lista de diez etiquetas por texto de entrada.

75

Page 96: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Para introducir valores en los campos de estadopros se llama a la función void

NuevoEstadoPros (short ate, float factAd, float factMult, short Vel, char let). A esta

función se le pasan como argumentos los valores a almacenar en las variables

atenuacion, factorAditivo, factorMultiplicativo, velElocu y el carácter de un determinado

elemento del array. El valor de indice se actualiza dentro de la función.

int oir_cadena (matriz *mi_matriz, char *cad)

Como se ha comentado anteriormente, es dentro de esta función donde realmente

se lleva a cabo el procesamiento del texto de entrada y la síntesis de habla. Para

realizar el proceso, la función recibe como argumentos de entrada: un array con el

texto de entrada a sintetizar y la matriz de datos propia del hilo de síntesis. En primer

lugar la función oir_cadena se encarga de inicializar diferentes variables. Para ello

utiliza las siguientes funciones:

int Ctv_Reset (matriz *mi_matriz, WORD wParam, DWORD lParam): Esta

función se encarga de resetear e inicializar una serie de variables que después

se utilizarán en el procesamiento del texto de entrada. La acción se realiza

mediante las funciones:

void Psd_Reset (matriz *puntero): A su vez, esta función realiza una

llamada a void ReseteaBlk (matriz *mi_matriz) para la inicialización de los

arrays de estructuras TBlkFonema y TBlkPalabra que almacenarán los

distintos bloques que se generen a partir del texto de entrada.

int16 Tdp_Reset (WORD wParam, matriz *mi_matriz): Limpia los buffers

de muestras para que cuando se inicie la síntesis, no se generen

periodos que anteriormente pudieran haber quedado encolados.

int Out_Reset (matriz *mi_matriz,WORD wParam, DWORD lParam):

Realiza el reseteo del hardware de salida para no tener elementos

inconsistentes en la salida del sintetizador y que no existan problemas a

la hora de generar los archivos de salida.

int Ctv_AcusticoOpen (matriz *mi_matriz,WORD wParam, DWORD lParam):

Inicializa los drivers y elementos necesario para la escritura de los archivos de

audio de salida.

int Ctv_Hablar (matriz *mi_matriz, const char *cadena, WORD wParam,

DWORD lParam): Recibe como argumentos de entrada la cadena de texto de

entrada para su síntesis y la matriz de datos asociada al hilo con la información

necesaria. La función realiza las acciones necesarias para sintetizar la cadena

de texto recibida. Esta función no devuelve el control a la función oir_cadena

hasta que la cadena no haya sido completamente sintetizada, no permitiendo

76

Page 97: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

tampoco la interrupción del proceso. La función Ctv_Hablar realiza la síntesis

prosódica de la frase, devolviendo el control antes de realizar la síntesis

acústica. En primer lugar entra en un bucle que se encarga de leer y procesar

uno a uno todos los caracteres que forman el texto de entrada y que se

encuentran en la variable cadena. Cada uno de los caracteres leídos junto a la

matriz de datos del hilo, se pasan como argumentos de la función:

int Ctv_Preprocesar (matriz *mi_matriz, char caracter, WORD wParam,

DWORD lParam): Esta función delega en int Psd_Main (matriz *puntero,

char c), siendo finalmente la función encargada de dar a cada carácter

leído el tratamiento necesario.

6.3.2.2 Generación de los bloques de palabra

La función int Psd_Main (matriz *puntero, char c) se encarga en primer lugar de

analizar y procesar correctamente cada uno de los caracteres que le llegan como

entrada, para posteriormente pasar a construir, a partir de esos caracteres, una

cadena que contenga una serie de bloques de palabra generados (estructuras

TBlkPalabra). Para realizar correctamente su labor, la función tiene disponibles en

todo momento los últimos tres caracteres que se han tomado del texto de entrada.

Estos caracteres están almacenados en los campos de la subestructura Psd_globales

*puntero_Psd contenida en la matriz de datos recibida en la entrada:

char ant: Contiene el valor del carácter anterior al carácter que se está

procesando en un momento dado.

char act: Contiene el valor del carácter que está siendo procesado en un

determinado momento.

char sig: Contiene el valor del siguiente carácter que se procesará.

Cada carácter nuevo queda almacenado en el campo sig, de forma que el carácter

anterior pasa al campo act y el antepenúltimo carácter se almacena en ant. A la hora

de tomar decisiones, se trabaja siempre con el carácter almacenado en act, de modo

que las otras dos variables se utilizan únicamente como información contextual para la

toma de determinadas decisiones puntuales.

Lo primero que se hace dentro de la función Psd_Main es añadir el carácter

almacenado en act al campo fraseActual de la estructura puntero_Psd que contiene el

texto que va leyendo mediante la función void anyadeCaracterFraseActual (matriz

*puntero,char act). Después comprueba si el carácter almacenado en act forma parte

de una palabra (caso en el que a la variable interna limitaPalabra se le asignará valor

‘0’) o por el contrario si es el carácter siguiente al final de una palabra (en cuyo caso la

77

Page 98: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

variable tomará valor ‘1’). Para determinar esto el programa se sirve del campo índice

del puntero_Psd, que contiene el número de caracteres pertenecientes a una misma

palabra y se resetea a 0 cuando se procesan los caracteres de la misma, y de la

función:

BOOL EnPalabra (matriz *puntero) : Esta función determina si el carácter actual

(campo act de estructura puntero_Psd) se encuentra dentro de un bloque

(devuelve TRUE) o no (devuelve FALSE). La función también determina el tipo de

bloque al que pertenece el carácter y lo indica en el campo tipo del

puntero_Psd. Así, se determinará si el bloque que se está tratando es una

palabra, una secuencia de control, un número, una sigla o una sigla con otro

formato, en cuyo caso contendrá los valores PALABRA, SECCTRL, NUMERO, SIGLA

o CASISIGLA respectivamente. Para saber si un bloque es de un determinado

tipo se tienen en cuenta las siguientes situaciones:

SECCTRL : Cuando el bloque comienza con el símbolo “[” y el siguiente

carácter se corresponde con alguno de los comandos de control. Para

saber si un carácter es una secuencia de control, se utiliza la función

BOOL EsCtrl (char c).

NUMERO: Cuando el primer carácter del bloque se corresponde con un

dígito.

SIGLA: Cuando el primer carácter del bloque es una letra, el segundo un

punto y el tercero sea de nuevo una letra o el símbolo “/”.

CASISIGLA: Cuando el primer carácter del bloque es una letra, el segundo

un punto, el tercero una letra y así sucesivamente hasta que en algún

momento la secuencia de caracteres no se corresponda con la asociada

comúnmente a una sigla (carácter-punto-carácter-punto-…).

PALABRA: Cuando el primer carácter del bloque es una letra, y no coincida

con ninguno de los dos casos anteriores, el bloque será una palabra.

Teniendo lo anterior en cuenta, se considera que el carácter almacenado en act

supone el límite de una palabra (limitaPalabra = “1”) cuando la variable indice toma un

valor distinto de “0”, es decir, cuando no estemos ante el primer carácter de una

palabra, y la función EnPalabra devuelva un valor FALSE indicando que el carácter no

forma parte de un bloque.

Si tras la evaluación anterior se determina que el carácter almacenado en act se

encuentra dentro de una palabra (limitaPalabra= “0”), lo único que hace la función

Psd_Main es incorporar el carácter actual en la posición que marque el campo indice

dentro del buffer almacenado en el campo buf de la estructura puntero_Psd. En este

78

Page 99: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

campo se almacenan sucesivamente los caracteres que van a constituir cada uno de

los bloques. Asimismo, cada vez que se incorpore un nuevo carácter a buf, la variable

indice se incrementará en una unidad. Este proceso continúa hasta que se detecta el

fin de un bloque (limitaPalabra=“1”), momento en el cual se llama a la función:

int MeteBuffer (matriz *puntero): Básicamente esta función se encarga de crear

las estructuras TBlkPalabra anteriormente mencionadas, pero dependiendo del

tipo de bloque del que se disponga, se realizarán unas acciones u otras para el

tratamiento. Para cada uno de los tipos se tiene:

SECCTRL : En el caso de que lo almacenado en buf se corresponda con

una secuencia de control, el sistema llama a la función void

ProcesaSecCtrl (matriz *puntero) que se encargará de crear un nuevo

estado de prosodia mediante la función ya mencionada

NuevoEstadoPros, con los valores prosódicos que determine la

secuencia de control para que en el momento de la síntesis estén

presentes y poder efectuar los cambios oportunos sobre la secuencia a

sintetizar. También se introducirán los cambios necesarios en el campo

prospal pro del bloque de palabra TBlkPalabra que se vea afectado por la

secuencia. Posteriormente se describirá con mayor detalle el

funcionamiento de la función void ProcesaSecCtrl (matriz *puntero).

NUMERO : Se tienen en cuenta dos posibles situaciones:

a) Si lo que se encuentra almacenado en el campo buf es un dígito, se

procederá a la creación de una estructura de tipo TBlkPalabra, cuyo

contenido en el campo palabra, como se verá a continuación, será

el propio dígito.

b) Si el carácter actual que limita el final del bloque es “º” ó “ª”, se

buscará entre las posibles abreviaturas que puede identificar el

sistema mediante la función int ConsultaAbrev(char *s). Esta

función busca en la tabla de abreviaturas almacenada en memoria,

Tabrev abrev[ ], si el contenido del campo buf se corresponde con

alguna de las entradas de la tabla. Si encuentra la abreviatura en la

tabla, devuelve la posición que ocupa la misma en la tabla.

MeteBuffer se limita a crear un nuevo bloque TBlkPalabra en el que

el campo palabra contiene el valor “ ”, y el campo auxiliar contiene

la posición de la abreviatura en la tabla para su traducción

posterior.

79

Page 100: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

CASISIGLA : En este caso se produce una llamada a la función int

SegmentaBuffer(matriz *puntero). Un bloque es considerado como tipo

CASISIGLA cuando lo almacenado en el campo buf es incorrectamente

identificado como tipo SIGLA. Por este motivo, cuando el sistema se

encuentra un bloque de este tipo, la única labor que se lleva a cabo

dentro de MeteBuffer es la de llamar a SegmentaBuffer. Esta función se

encarga de separar el contenido del campo buf a partir del último signo “.”

encontrado, de modo que el último punto almacenado en buf es

considerado como un posible final de frase.

SIGLA ó PALABRA : En los dos casos, si el carácter actual, que limita el

final de bloque, es “.”, “/”, “º” o “ª”, el sistema comprobará si lo que

contiene el bloque se trata de alguna de las abreviaturas conocidas. Si el

contenido del buffer se corresponde con alguna de las abreviaturas de la

tabla del sistema, se genera un bloque TBlkPalabra en el que el campo

palabra contiene el valor “ ”, y el campo auxiliar contiene la posición de la

abreviatura en la tabla para su traducción posterior. Si por el contrario, la

cadena no corresponde a ninguna de las entradas de la tabla de

abreviaturas, se realizan las mismas acciones que si el carácter de fin de

bloque no fuera ninguno de los descritos, es decir, para cada caso, se

sigue el proceso general.

SIGLA : En este caso se llama a la función TBlkPalabraIndex Deletrea

(TBlkPalabraIndex blq) para que deletree la sigla contenida en el campo

palabra del bloque. El proceso se realiza mediante un bucle en el que se

obtiene el nombre de cada uno de los elementos contenidos en palabra

mediante la función char *NombreLetra (unsigned char c) y se crea un

bloque nuevo por letra. Si por ejemplo se tuviera en el texto de entrada

las siglas “S.L.”, el sistema generaría cuatro bloques de palabra en los

que el campo palabra contendría las cadenas “ese”, “punto”, “ele” y

“punto” respectivamente. Hay que destacar que si durante el tratamiento

del bloque sigla se detecta que el carácter actual que limita la sigla no es

un punto, se realizará un cambio del tipo de bloque de SIGLA a CASISIGLA

y se llamará de nuevo a la función MeteBuffer para volver a tratar el

bloque.

PALABRA : Cea un nuevo TBlkPalabra en cuyo campo palabra se

almacena el contenido de buf.

80

Page 101: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Una vez realizada la operación que corresponda para el bloque a procesar,

la función MeteBuffer resetea el índice que se utiliza para contabilizar los

caracteres de una palabra (campo indice de puntero_Psd) y devuelve el control

a la función Psd_Main.

La función Psd_Main continuará leyendo, carácter a carácter, la cadena de texto de

entrada y realizando el proceso de generación de bloques de palabra hasta que se

alcance el final de frase, pasando entonces a convertir los bloques de palabras

generados en bloques de fonemas.

Estructura TBlkPalabra

Los campos que definen esta estructura son:

TPalabra palabra : Se trata de una variable del tipo TPalabra formada por un

array de caracteres, char [MAX_LONG_PAL+1], que por lo general se utiliza

para almacenar la palabra o el contenido del bloque que se quiere sintetizar.

struct TBlkPalabra *ant : Es un puntero que permite acceder a la estructura

TBlkPalabra correspondiente a la palabra o bloque anterior. Este campo indica

el comienzo de la zona de memoria destinada a albergar el bloque de palabra

anterior.

struct TBlkPalabra *sig : Puntero que permite acceder a la estructura

TBlkPalabra que contiene la información sobre el bloque posterior al actual.

TCategoría Categoria: Se trata de un campo de tipo TCategoría formado por un

array de caracteres, char cat[11], que hasta el momento no tiene utilidad y

siempre está vacío.

TCategorias categorías: Se trata de un array de estructuras de tipo TCategoria.

int16 auxiliar: Campo en el que se almacena información adicional sobre el

bloque. Normalmente, indica si el bloque de palabra se corresponde con una

abreviatura. Ya que este campo contendrá el valor de la posición dentro de la

tabla de abreviaturas en la que se encuentra el registro a traducir para la

síntesis.

prospal pro : Este campo se corresponde con una estructura de tipo prospal.

Esta estructura está formada a su vez por las variables factMult, factAd,

velelocu, atenuacion, Hayinfo y pausa. Este campo pro es necesario dentro de

los bloques de palabras puesto que, contienen información sobre los cambios

que definen las secuencias de control sobre los valores iniciales de prosodia. Si

un bloque de palabra se ve afectado por una etiqueta, y en consecuencia se

producen cambios en algunas de las características de la prosodia, el campo

81

Page 102: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Hayinfo de la estructura pro contendrá el valor “1” y los campos factMult,

factAd, velelocu y atenuacion contendrán los valores a modificar. Así, se evita

el tener que leer la estructura para cada bloque de palabra. Por último, el

campo pausa se encarga de recoger información referente a la introducción de

pausas en el texto, lo que también se consigue con secuencias de control,

como se explicará.

La figura 22 muestra la estructura de bloques de palabra descrita.

FIGURA 22: ESQUEMA DE LA ESTRUCTURA TBLKPALABRA

Proceso de creación y escritura de los bloques de palabra (TBlkPalabra)

Como ya se ha comentado, dependiendo del tipo de bloque de entrada en la

función MeteBuffer se realiza un determinado procesamiento de la cadena de texto,

previo a la creación de los bloques de palabra. Una vez realizado este preprocesado

de texto, el proceso de generación de los bloques de palabra se mantiene.

En primer lugar, se crea un nuevo bloque de palabra mediante la función

TBlkPalabraIndex NuevoBloque (matriz *puntero). Esta función recibe como

argumento de entrada la matriz de datos asociada al hilo de sintesis y lo primero que

hace es incrementar el número de bloques de palabra que lleva generados (campo

num_palabras_frase de la estructura puntero_Psd) mediante la función void

incrementaPalabrasFrase(matriz *puntero). A continuación, la función invoca a

TBlkPalabraIndex BlkPalabraCrea (void) que reserva la memoria suficiente para

almacenar el nuevo bloque, resetea los campos y devuelve el puntero a la posición de

inicio de la estructura TBlkPalabra.

Una vez creado el nuevo bloque TBlkPalabra, se escribe en el campo palabra del

mismo la cadena de texto a la que hace referencia mediante la función void

BlkPalabraEscribe(TBlkPalabraIndex blk, TPalabra cadena). La función recibe como

82

Page 103: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

argumentos de entrada el bloque generado previamente y la cadena de texto con la

palabra, sigla, número, etc. asociado.

6.3.2.3 Generación de los bloques de fonema

Hasta ahora, hemos visto como la función int Psd_Main (matriz *puntero, char c) se encarga de recoger cada uno de los caracteres que recibe como argumento y que

componen el texto de entrada, y generar a partir de ellos una serie de estructuras de

tipo TBlkPalabra que se corresponden con cada uno de los bloques de texto que

aparecen a la entrada. En la siguiente figura se puede ver un diagrama en el que se

muestra un resumen del funcionamiento hasta el momento de la función Psd_Main.

FIGURA 23: DIAGRAMA PSD_MAIN HASTA GENERACIÓN DE BLOQUES DE PALABRA

Este proceso se realiza hasta que se llega al final de la frase, siendo en ese

momento cuando la función Psd_Main se dispondrá a generar la cadena de bloques

de fonema a partir de la cadena de bloques de palabra ya descrita.

Las comprobaciones para la detección del final de una frase se realizan después de

que se detecte el final de una palabra o bloque de texto y de la consiguiente llamada a

MeteBuffer. La función PsdMain comprueba si el carácter almacenado en el campo act

del puntero_Psd supone el final de la frase. Existen tres situaciones en las que

podemos determinar que se ha llegado al final de una frase:

1. Cuando el carácter almacenado en act no es un carácter blanco y es un

carácter típico de final de frase, como puede ser: un punto, un cierre de

interrogación o un cierre de exclamación. Para saber si un carácter es

blanco, y en consecuencia no representa el final de frase, se utiliza la

función BOOL EsBlanco (char c) que comprueba si el carácter recibido

(almacenado en campo act) coincide con alguno de los siguientes

83

Page 104: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

caracteres: ‘\x1a’, ‘xFF’ (fin de archivo), ‘ ’, ‘\t’ (tabulación), ‘\n’ (retorno de

carro), ‘\0’ (carácter nulo). Si se diera alguno de estos casos, se consideraría

que no se está ante el final de frase por lo que se seguiría con el proceso de

lectura de caracteres y generación de bloques de palabra ya descrito. En

caso de que el carácter contenido en act no se corresponda con ninguno de

los citados, se comprueba si es un carácter de final de frase.

2. Cuando el carácter actual es un retorno de carro (‘\n’) y el siguiente carácter

también lo sea (campo sig de puntero_Psd).

3. Cuando se alcanza el final de la cadena de texto de forma inesperada.

Una vez detectado el final de frase, se realiza una llamada a la función void

ConvierteFrase (matriz *puntero, TBlkPalabraIndex cabeceraFrase), que es la

encargada de realizar la transformación de la cadena de bloques de palabra a una de

bloques de fonemas. La función recibe como argumentos, la matriz de datos propios

del hilo y un puntero al primer bloque de la cadena.

La transformación no se realiza de forma directa sino que se realizan llamadas a un

conjunto de funciones para lograr el objetivo:

void reseteaContadorFraseActual (matriz *puntero):

Esta función realiza el reseteo del campo fraseActual de la estructura

puntero_Psd que almacena la frase a sintetizar y actúa como contador de los

caracteres contenidos en la frase.

void PreProc (matriz *mi_matriz,TBlkPalabraIndex blq):

La función recibe como argumentos el puntero al primer bloque de la cadena

de bloques de palabra y la matriz de datos del hilo. PreProc se encarga de

analizar el contenido del campo palabra de cada uno de los bloques

TBlkPalabra creados anteriormente y realizar los cambios necesarios sobre los

mismos para que, al finalizar, en estos campos haya una cadena de letras

inteligible. Dependiendo del tipo de bloque, se realizarán unas acciones u otras:

NUMERO : Cuando el campo palabra de un bloque contenga un número, se

llama a la función TBlkPalabraIndex Preproc_Numeros (TBlkPalabraIndex

blq) que a su vez delega en TBlkPalabraIndex Numeros

(TBlkPalabraIndex blq, int *flags). Esta función comprueba si el número

debe ser leído como una fecha, como una hora o como un numero y para

cualquiera de los casos se traduce a texto el contenido del campo palabra

del bloque. Normalmente será necesario crear otros bloques TBlkPalabra

ya que la traducción del número, fecha u hora a texto dará lugar a varias

84

Page 105: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

palabras. Así, por ejempo, si el contenido del campo palabra de uno de

los bloques TBlkPalabra es “14:30”, la traducción dará lugar a cinco

bloques TBlkPalabra con valores en el campo palabra: “catorce”, “horas”,

“y”, “treinta” y “minutos” respectivamente.

ABREVIATURA: Si el bloque contiene una abreviatura (el campo palabra

contiene el símbolo “ ”), se llama a la función TBlkPalabraIndex

ExpandeAbrev (TBlkPalabraIndex blq, Tnumero n) que lee el número

contenido en el campo auxiliar del bloque TBlkPalabra y lee de la tabla de

abreviaturas el registro de la posición marcada. El contenido del registro

se almacena en el campo palabra del bloque.

PALABRA: Si el campo palabra contiene una cadena de letras, se

comprueba en primer lugar si la cadena contiene alguna vocal. En caso

de que no la contenga, se llama a la función TBlkPalabraIndex

Deletrea(TBlkPalabraIndex blq) que deletreará el texto creando tantos

bloques de palabra como caracteres formen la cadena de texto

contenida. Por ejemplo, si en el texto contenido en el campo palabra de

uno de los bloques es “gth”, Deletrea generará tres bloques TBlkPalabra

cuyos campos palabra contengan los valores “ge”, “te” y “hache”

respectivamente.

SIGNOS ORTOGRÁFICOS: Cuando el contenido del campo palabra del

bloque TBlkPalabra sea un signo de ortografía (signos de exclamación e

interrogación, dos puntos, punto, punto y coma, paréntesis y guión) se

llama a la función TBlkPalabraIndex Preproc_signo_ortografico (matriz

*puntero, TBlkPalabraIndex blq, char signo) que se encargará de

procesarlo según sea el caso.

void Graf2Fon (TBlkPalabraIndex blq1):

Básicamente, esta función realiza la conversión de grafema a fonema, es

decir, se encarga de procesar el campo palabra de cada uno de los bloques

TBlkPalabra, convirtiendo el texto en cadenas de fonemas. Se recibe como

argumento el puntero al primer bloque de palabra, TBlkPalabra, de la cadena

de palabras. La función procesa, bloque a bloque, las cadenas de texto

contenidas en el campo palabra. Se determinan las sílabas tónicas del texto

según las reglas de acentuación y se analiza el contexto vocálico en el que se

encuentra cada uno de los caracteres. Por último, la función void Conversion

(char *cad) se encarga de realizar la conversión propiamente dicha de la

cadena de texto pasada como argumento.

85

Page 106: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

TBlkFonemaIndex CadenaPal2CadenaFon (TBlkPalabraIndex indPal, TBlkFonemaIndex indFon, char modo):

Se encarga de generar los bloques de fonemas, de tipo TBlkFonema, a

partir de los bloques de palabras, TBlkPalabra, recibidos. Recibe como

argumentos el puntero al primer bloque de fonema, el puntero al primer bloque

de palabra y un flag en el que se indica el modo en el que realizar la

conversión. En primer lugar lee los campos palabra y pro del bloque

TBlkPalabra mediante la función void BlkPalabraLee (TBlkPalabraIndex blk,

TPalabra cadena) y la función prospal BlkPalabraLeePro (TBlkPalabraIndex

blk) y también se lee la información del siguiente bloque para obtener

información contextual. Se procede después a generar tantas estructuras

TBlkFonema como fonemas aparezcan en el contenido de la variable palabra

con la función TBlkFonemaIndex Palabra2Fonemas (TPalabra palabra,

TBlkFonemaIndex *indFon, char modo, char homolog[ ], prospal pro). La

función rellenará los campos fonema y pro de la estructura TBlkFonema

generada con los valores contenidos en TBlkPalabra. Por último, se libera el

espacio de memoria asociado al bloque de palabra utilizado.

Llegados a este punto se dispone de una lista de estructuras TBlkFonema en las

que los campos TDuracion Duracion y TF0 F0 continúan vacíos. Estos parámetros

juegan un papel muy importante, puesto que son los que van a definir la prosodia de la

frase. Como ya se ha comentado, es en el proceso de generación de la información

prosódica de los fonemas, donde se han introducido los nuevos módulos de

entonación y duración heredados del sintetizador de Klatt disponible en el laboratorio y

que forma parte del proyecto ROBINT. Debido a las características del sintetizador por

concatenación de partida, se han adaptado estos módulos a los ya disponibles para

dotar a la voz sintetizada con diferentes emociones.

Para determinar el valor de estas variables en cada bloque de fonema, el sistema

llama, desde ConvierteFrase, a la función BOOL Entonacion (matriz* mi_matriz,

TBlkFonemaIndex ind_fon) y las funciones heredadas del sintetizador por formantes

void DuracionesMST (matriz* puntero, TBlkFonemaIndex fonema_inicio) y void

EntonacionMST (matriz* puntero, TBlkFonemaIndex ind_fon) que se describen en los

siguientes apartados.

86

Page 107: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Estructura TBlkFonema

La estructura de los bloques de fonemas, de tipo TBlkFonema, consta de los

siguientes campos:

TFonema fonema : Se trata de una variable del tipo TFonema (unsigned char),

en la que se almacena la representación fonética del carácter.

struct TBlkFonema *ant : Es el homólogo del campo ant de las estructuras

TBlkPalabra. Es un puntero que permite acceder a la estructura TBlkFonema

correspondiente al bloque anterior. Este campo indica el comienzo de la zona

de memoria destinada a albergar el bloque del fonema anterior.

struct TBlkFonema *sig : Puntero que permite acceder a la estructura

TBlkFonema que contiene la información sobre el bloque posterior al actual.

TF0 F0: Es un campo de tipo TF0 (int) destinado a almacenar la frecuencia (en

Hertzios) de la fuente glotal asociada a cada fonema.

TDuracion Duracion : Es una variable de tipo TDuracion (long) encargada de

almacenar una cifra relacionada con la velocidad de locución en cada

momento.

TFlags Flags: Contiene información adicional sobre el bloque de fonema. Se

utiliza para indicar por ejemplo si el bloque TBlkFonema es el bloque final de

una palabra, si forma parte de un diptongo, etc.

prosfon pro : Este campo se corresponde con una estructura de tipo prosfon.

Esta estructura está formada por las variables factAd, factMult, velelocu,

atenuación y Hayinfo. Estas variables llevan a cabo la misma función que sus

homónimas en los bloques de palabra TBlkPalabra. Al realizar la conversión de

estructuras TBlkPalabra a TBlkFonema se observa si la variable Hayinfo del

campo prospal pro esta activa (valor “1”). Si existe información prosódica en el

bloque, se copian los valores contenidos en el resto de las variables en el

campo prosfon pro de la estructura TBlkFonema creada. Posteriormente,

cuando se proceda a la generación de los parámetros de síntesis, la función

encargada de ello, leerá uno a uno y de forma consecutiva los fonemas de la

lista de bloques y generará a partir de ellos los parámetros que regirán su

pronunciación. Es aquí cuando se descubre si existen fonemas que incluyen

órdenes de cambio (Hayinfo= “1”), y en el caso de que así sea se modificarán

las variables necesarias antes de proceder a la generación de los parámetros

de síntesis.

87

Page 108: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

La estructura TBlkFonema presenta el esquema de la figura 24:

FIGURA 24: ESQUEMA DE LA ESTRUCTURA TBLKFONEMA

6.3.2.4 Asignación de tono y duraciones a los fonemas

La duración y el tono inicial de los fonemas que forman la cadena de texto de

entrada al sintetizador, son asignados por la red neuronal implementada en el sistema,

a partir de una serie de parámetros y trazas necesarios para su correcto

funcionamiento. El sistema, sobre esos valores iniciales de duración y tono, aplica

posteriormente una serie de modificaciones que dependen de la información

contextual extraída, resultando finalmente que la duración y el tono asignados a todos

los fonemas es el producto del valor obtenido inicialmente y varios factores

multiplicativos dependientes del contexto. Esta última parte es la heredada del

sintetizador de formantes Klatt disponible en el laboratorio y se detallará

posteriormente.

La función encargada de realizar la asignación inicial de los valores de tono y

duración a los fonemas se describe a continuación.

BOOL Entonacion (matriz *mi_matriz, TBlkFonemaIndex ind_fon):

Esta función se encarga del modelado inicial de la duración y el tono de cada uno

de los fonemas que forman la cadena de texto a sintetizar. Asigna valores iniciales,

calculados mediante una red neuronal, a los campos Duracion y F0 de cada bloque

TBlkFonema. La función recibe como parámetros de entrada la matriz de datos del

hilo, y un puntero al primer bloque fonema de la cadena de estructuras TBlkFonema.

El sistema analiza la cadena de entrada buscando un signo de puntuación. Cuando

lo encuentra, inicia el procesado del grupo fónico mediante la función

TBlkFonemaIndex Busca_Signo_Punt (matriz *mi_matriz,TBlkFonemaIndex fon_ini,

unsigned char *signo) que es donde se produce el cálculo y asignación de los valores

88

Page 109: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

de entonación y duración a los fonemas que lo conforman. El proceso de la función se

puede dividir en dos etapas, la primera de ellas está destinada al cálculo de la

frecuencia media asociada a cada fonema, mientras que la segunda se basa en el

cálculo de las duraciones de los fonemas que conforman la cadena de entrada al

sintetizador.

a) Cálculo y asignación del campo F0: La entonación8 del grupo fónico

depende, en gran medida, del número de palabras tónicas que existan, de la

posición de las mismas dentro del texto, de los signos ortográficos que

aparezcan en el mismo, etc. El sistema, en primer lugar, calcula el número total

de fonemas y de palabras que componen el grupo fónico, el número de

fonemas correspondientes a cada palabra y la posición de los fonemas

acentuados. Una vez obtenidos estos datos, se obtienen el número y la

posición de las sílabas que forman cada una de las palabras, mediante la

función int16 Silabica (char *palabra, int16 Silabas []) que divide la cadena. A

partir de este punto del proceso, se realizan una serie de llamadas a diferentes

funciones con el fin de obtener el tono asociado a cada uno de los fonemas que

conforman el grupo:

void AsignaMatricesTono (TPIVector *AcentuadaF0, TPIVector

*Zona_inicial, TPIVector *Zona_final, TPDDVector *Trama, int16 Num_sil)

Realiza la reserva de memoria, para las matrices que se utilizan

durante el proceso de obtención, como son: Acentuada_F0 (contiene,

para cada sílaba obtenida anteriormente, los valores “1” ó “0”

dependiendo si la sílaba es tónica o no lo es), Zona_inicial (indica,

mediante el valor “1”, las sílabas pertenecientes a la zona inicial de la

curva de entonación), Zona_final (indica mediante un flag activo, las

sílabas que pertenecen a la zona final de la curva de tono) y la matriz

Trama (contiene las tramas de entrada a la red neuronal del cálculo del

tono). La longitud de las matrices está asociada al número de sílabas que

recibe como argumento de entrada.

void Codifica_silabas (int16 Num_sil, int16 Silabas[], char* FraseTon,

int16 AcentuadaF0[], int16 Zona_inicial[], int16 Zona_final[])

Esta función realiza la asignación de valores a los distintos registros

de las matrices anteriormente mencionadas. Así, Codifica_silabas,

detectará en primer lugar todas las sílabas tónicas del grupo fónico,

introduciendo el valor “1” en la posición de la matriz AcentuadaF0

8 Entendiendo entonación como la variación de la frecuencia de vibración de las cuerdas vocales.

89

Page 110: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

correspondiente a cada una de las sílabas, para después poder definir la

zona inicial (sílabas existentes hasta la primera tónica) y final (sílabas

desde la anterior a la última tónica hasta el final) de la curva de

entonación.

void Analiza_Tipo_Frase(unsigned char signo, int16 *Tipo_frase, int16

*Tipo_terminacion, int16 *Tipo_frase_dur)

La función asigna unos valores a las variables Tipo_frase,

Tipo_terminacion y Tipo_frase_dur que dependen de los signos

ortográficos que aparezcan en el grupo.

void Genera_tramas_tono (int16 Num_sil, double Trama[]

[LONG_TRAMA], int16 AcentuadaF0[], int16 Zona_inicial[], int16

Zona_final[], int16 Tipo_frase, int16 Tipo_terminacion)

A partir de toda la información aportada por las matrices de generación

de tono y de las variables asociadas, se generan las tramas de entrada a

la red neuronal de cálculo de la frecuencia media de los fonemas,

mediante un algoritmo de cálculo dependiente del número de silabas y de

si la curva de entonación es ascendente o descendente.

void Interpolar (matriz *mi_matriz,TBlkFonemaIndex inic, int16 num_fon,

int16 Num_sil,int16 Silabas[], double Tramas[][LONG_TRAMA])

En esta función se obtiene el tono de cada uno de los fonemas que

componen el grupo fónico mediante la red neuronal. En primer lugar, se

reserva espacio para las matrices de entrada y salida a través de la

función preparamat_red, la cual necesita como argumentos de entrada,

las dimensiones de la red neuronal a utilizar para el cálculo de la

frecuencia media de cada fonema. Posteriormente, y para cada una de

las sílabas, se realiza una llamada a la función que implementa la red

neuronal para el cálculo del tono. Es necesario pasarle como argumentos

las dimensiones de la red y la trama de tono asociada a la silaba

correspondiente. A los valores obtenidos por la red neuronal se les aplica

una recta de normalización de forma que el tono de cada sílaba queda

establecido como:

Tono=((Tonorrnn+B)/A)

Dónde B=13.5 /145 y A=0.8/145 .

Una vez realizado el proceso para todas las sílabas, se liberan las

matrices utilizadas y se produce la interpolación del tono para poder

90

Page 111: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

obtener la frecuencia media asociada a cada fonema a partir de los datos

obtenidos mediante la red neuronal.

Por último, se introduce en el campo F0 de los bloques de fonemas,

TBlkFonema, el valor de tono obtenido para cada uno de ellos. El

procedimiento es realizado por la función void BlkFonemaEscribeF0

(TBlkFonemaIndex blk, TF0 F0) que recibe el puntero al bloque de

fonema correspondiente y la frecuencia media obtenida.

b) Cálculo y asignación del campo Duración: Una vez obtenida la frecuencia

media de cada uno de los fonemas, se procede al cálculo de la duración de los

mismos. En primer lugar, se reserva espacio para las matrices de entrada y

salida de la red neuronal de duraciones, y para las matrices de duraciones

utilizadas para la obtención de la trama de duraciones de entrada a la misma.

El procedimiento se realiza a través de las funciones preparamat_red (necesita

las dimensiones de la red neuronal como argumentos) y AsignaMatricesDur

(Num_sil+1, Num_fon+1, Num_pal+1, &sil_acent, &sil_abierta, &Silaba_de_fon,

&trama_dur, &resultNet, &Sil_inic_pal, &Num_sil_pal) respectivamente.

AsignaMatricesDur, reserva memoria para las matrices que se utilizan durante

el proceso de obtención de las tramas de duración, como son: sil_acent

(contiene valores “1” y “0” dependiendo de si las sílabas son acentuadas o no),

sil_abierta (indican mediante los valores “1” ó “0” si la sílaba es abierta9 o

cerrada10), Silaba_de_fon (indica mediante un índice la sílaba a la que

pertenece cada fonema representado en un registro de la matriz), trama_dur

(contiene las tramas de entrada a la red neuronal del cálculo de duraciones),

resultNet (almacena las duraciones obtenidas, mediante red neuronal, para

cada uno de los fonemas), Sil_inic_pal (indica la posición de la primera sílaba

de cada una de las palabras del grupo fónico) y Num_sil_pal (indica el numero

de sílabas que forman cada palabra).

Una vez reservada la memoria, es necesario obtener los valores

correspondientes a cada una de las matrices. Así, el sistema detectará las

sílabas acentuadas y las abiertas, identificará la sílaba a la que corresponde

cada fonema y calculará el número de sílabas que forman cada palabra, las

posiciones de las silabas iniciales de cada palabra y la posición de la última

sílaba tónica.

9 Sílaba abierta es aquella que termina en vocal. Por ejemplo, las sílabas de “cama”.10 Sílaba cerrada es aquella que termina en consonante, como las de “silbar”.

91

Page 112: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Por último, para cada uno de los fonemas, se realiza el siguiente proceso:

Obtención de las tramas de entrada a la red neuronal de cálculo de

duraciones, teniendo en cuenta una serie de parámetros que caracterizan

a cada fonema. Se tendrá en cuenta el tipo de la frase, la posición de la

palabra contenedora dentro del grupo fónico, la posición de la sílaba

correspondiente en la palabra y la posición del fonema dentro de la

sílaba. Los valores de la trama dependen también del tipo de fonema

para el que se quiere calcular la duración, del contexto del mismo (del

fonema anterior y posterior), así como de las características de la sílaba

contenedora (si es una sílaba abierta, tónica, diptongo, etc.).

Obtención de las duraciones mediante estimación de la red neuronal. Es

necesario introducir como argumentos de entrada las dimensiones de la

red de duraciones y la matriz de tramas de entrada para el proceso. El

resultado obtenido es almacenado en la matriz resultNet.

Una vez obtenidas las duraciones estimadas de los fonemas, se procede a

la normalización de los mismos de forma que:

Duracion=resultNet . x [ i ]/11.3∗1000.0

El valor de duración normalizado se escribe en el campo Duracion

correspondiente a cada bloque fonema mediante la función void

BlkFonemaEscribeDur (TBlkFonemaIndex blk,TDuracion dur), y se liberan las

matrices utilizadas durante todo el proceso.

Una vez obtenidas las duraciones y las frecuencias medias de los fonemas

asociados al grupo fónico se devuelve el control a la función Entonacion la cual

repetirá el proceso hasta que se llegue al final de la cadena de texto a sintetizar.

6.4 Bloque de síntesis de habla

En este apartado se va a describir el proceso mediante el cual se generan las

tramas de audio a partir de todos los parámetros generados en la etapa anterior. Se

realiza, de la misma forma que en el bloque de Procesado de Texto, una descripción

global de la etapa en primer lugar, para pasar a describir de forma concreta el proceso

y su implementación en el sistema.

6.4.1 DESCRIPCIÓN GENERAL DEL BLOQUE

Una vez modelada la cadena de bloques de fonema correspondiente al texto de

entrada, con las características de la voz para cada uno de los bloques, se procede a

la síntesis de habla propiamente dicha. Esta etapa es la encargada de leer los valores

92

Page 113: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

de cada uno de los bloques y generar las tramas de audio correspondientes, a partir

de las unidades pregrabadas almacenadas en memoria en la etapa de inicialización

del sistema.

Para realizar el proceso de generación de voz, el bloque de síntesis está basado en

la implementación en lenguaje C de un sintetizador por concatenación de difonemas

TD-PSOLA.

En la siguiente figura se puede ver un esquema de la segunda etapa de la síntesis

de habla:

FIGURA 25: ESQUEMA DEL BLOQUE DE SÍNTESIS DE HABLA

6.4.2 LA SÍNTESIS TD-PSOLALa síntesis TD-PSOLA (Time Domain Pitch-Synchronous Overlap-Add) es la técnica

de síntesis por concatenación de forma de onda implementada en el sistema Boris. Al

igual que el resto de técnicas, ésta pretende conseguir una buena calidad de la señal

de voz generada a partir de las unidades pregrabadas.

Como es de imaginar, la concatenación directa de unidades en este resulta

imposible ya que normalmente las unidades pregrabadas tendrán una prosodia distinta

a la exigida. El principal problema que surge se produce en la adaptación de la

prosodia de las unidades pregrabadas a la prosodia del texto donde se utilizan, de

forma eficaz para perder calidad de la señal.

El algoritmo TD-PSOLA, trata de hacer dicha adaptación a través de modificaciones

en el dominio del tiempo, afectando dichas modificaciones de forma conjunta a la

frecuencia fundamental y a la duración de las unidades. Además, al hacerse todas las

modificaciones en el dominio temporal, se elimina la carga de cálculo debida a la FFT.

Teóricamente, nos ofrece la posibilidad de modificar la frecuencia en un rango de,

aproximadamente, unas dos octavas (de la mitad de la frecuencia original al doble de

ésta), aunque en la práctica el intervalo permitido se acorta bastante si queremos

mantener un determinado grado de calidad.

93

Page 114: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

[MGCM 00]

6.4.2.1 El proceso de síntesis

Como ya se ha comentado, la síntesis parte de una serie de difonemas,

pregrabados anteriormente, que hay que concatenar y modificar para adaptar sus

características prosódicas a las de la secuencia “objetivo” generada en la etapa de

Procesado de Texto.

Todas las unidades están formadas por una serie de periodos básicos de forma de

onda delimitados por las marcas de pitch, que como vimos, reflejan los momentos de

cierre de la glotis. Estas marcas reciben el nombre de marcas de análisis, y están

contenidas en cada una de las unidades que componen la base de datos. En la

siguiente figura se puede ver un ejemplo de señal de voz con las marcas de pitch

asociadas.

FIGURA 26: SEÑAL DE VOZ CON SUS MARCAS DE PITCH.

El algoritmo TD-PSOLA modifica las características prosódicas de las unidades

almacenadas en la base de datos mediante la repetición en el tiempo de los periodos

básicos que forman las mismas, con una determinada cadencia. Así se consigue

modificar la estructura de armónicos de las unidades originales sin llegar a alterar el

espectro de la señal. Estos periodos básicos se enventanan síncronamente con las

marcas de pitch, de forma que la longitud de las ventanas siempre es mayor que un

periodo fundamental, existiendo un solape entre periodos consecutivos. En este caso,

el enventanado que se usa en el sintetizador es el de Tukey en el que la longitud de la

ventana es el doble del periodo fundamental y en el que el enventanado se centra en

las marcas de pitch, lo que contribuye a minimizar el efecto de la reverberación

94

Page 115: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

producido por la copia de señales a corto plazo y a suavizar las transiciones

espectrales.

[MGCM 00]

El proceso de síntesis calcula, a partir de los parámetros obtenidos en el bloque de

procesado, el número de marcas de pitch que tendrá la unidad sintetizada y la posición

de las mismas dentro de la unidad. El número de marcas de la unidad de síntesis se

obtiene mediante la ecuación:

nmars=0,5+2∗( duracionf 0i+f 0 f )

A la hora de calcular la posición de las marcas, hay que tener en cuenta que el tono

no es constante a lo largo de la unidad a generar, de forma que las marcas de pitch no

se encuentran equiespaciadas. Se parte de un valor de F 0 inicial y se termina la unidad

con un valor de F0 final . Se supone que la curva de tono se comporta de forma lineal a

lo largo de la unidad por lo que se puede determinar la posición de las marcas de

síntesis obteniendo el escalón de la curva de síntesis. Éste se calcula mediante:

escalon=(f 0¿¿ f− f 0i)

(nmars−2)¿

De forma que la posición de las marcas se obtienen con la ecuación:

mars [i ]=mars[ i−1]+ f 0i+(i−1)∗escalon

FIGURA 27: POSICIÓN DE LAS MARCAS EN EL EJE DE SÍNTESIS

Cabe aclarar que si la frecuencia al inicio y al final de la unidad es la misma, el

escalón será nulo y las marcas del eje de síntesis quedan equiespaciadas.

Después de resolver la posición de las marcas, se establece una correlación entre

los periodos de la señal del eje de análisis y los del de síntesis, de cara a realizar la

copia o la supresión de los periodos de la señal original del eje de análisis al de

síntesis. Dado que cada uno de los nuevos periodos a generar, normalmente, tendrá

95

Page 116: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

una duración diferente a la del periodo original del que provienen, habrá que realizar

una serie de transformaciones sobre los mismos que básicamente consistirán en lo

siguiente:

Si el periodo a generar tiene una duración inferior a la del periodo original

eliminaremos muestras del mismo.

Si la duración del periodo a generar es mayor que la del periodo original,

completaremos con ceros las muestras del periodo original.

FIGURA 28: CORRELACIÓN ENTRE LOS EJES DE ANÁLISIS Y SÍNTESIS [MGCM00]

El último paso para la obtención de la señal sintetizada consiste en un filtrado

Overlapp-Add entre los periodos consecutivos y enventanados de la señal de síntesis.

Al igual que el enventanado de análisis, el enventanado en la síntesis también es de

Tukey, tiene un tamaño de dos periodos básicos de señal, y está centrado en las

marcas de pitch de síntesis.

6.4.3 IMPLEMENTACIÓN DEL BLOQUE DE SÍNTESIS

El bloque de síntesis se encarga de la síntesis acústica del texto de entrada a partir

de la información prosódica obtenida en la etapa anterior. Así pues, una vez obtenida

la cadena de estructruras TBlkFonema con toda la información de cada uno de los

fonemas del texto de entrada del sintetizador, la función ConvierteFrase devuelve el

control a la función Psd_Main que finaliza devolviendo el control a la función

Ctv_Preprocesar, la cual finalmente devuelve el control a Ctv_Hablar que continúa con

la síntesis acústica del texto de entrada y no devolverá el control a la función

oir_cadena hasta que la cadena no haya sido completamente sintetizada.

96

Page 117: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Una vez obtenida la prosodia del texto de entrada al sintetizador, se llamará en

repetidas ocasiones a la función que realiza la síntesis acústica y que es

Ctv_Acustico (matriz *mi_matriz, WORD wParam, DWORD lparam). De forma

breve, esta función sintetiza un periodo de señal y lo envia al interfaz de salida activo.

La función recibe como parámetro la matriz datos asociada al hilo de síntesis con la

información necesaria. La función devolverá un valor igual al de la constante CTV_OK

mientras queden periodos de señal por sintetizar y un valor igual a la constante

CTV_END cuando no queden mas periodos por sintetizar, marcando así el fin del

bucle de síntesis.

Ctv_Acustico realiza una llamada, en primer lugar, a la función Tdp_Concatena

(matriz *puntero, WORD lParam, DWORD buffer) que es la encargada de realizar la

síntesis de un segmento. Esta función recibe como argumentos la matriz de

parámetros correspondiente al hilo de síntesis, y un buffer donde se almacenará el

periodo sintetizado. El proceso que sigue la función para realizar la síntesis es:

En primer lugar la función obtiene la unidad a sintetizar a partir de la cadena de

bloques de fonema mediante la función Ifz_DameUnidad (matriz *mi_matriz,

TUnidadSintesis *unidad). Esta función es igual a la que se utiliza en

SacadifCV.exe durante el proceso de generación de base de datos. La función

obtiene a partir de la cadena de fonemas, los distintos difonemas asociados de

forma que cada vez que se llama a Tdp_Concatena se sintetizará un difonema

diferente obtenido mediante esta función.

Una vez obtenido el difonema que hay que sintetizar, se llama a la función

TdpCopiaUnidad (char *s,TEjes *eje, TIVector **x, int16 *numUnidad) pasando

como argumentos el nombre de la unidad a sintetizar, el puntero a la estructura

TEjes donde se almacenará la información de las marcas, el puntero a la

estructura TIVector donde se almacenarán las muestras y una variable

numUnidad en la que se almacenará la posición de la unidad dentro de la base

de datos. La función se encarga de leer la información de las muestras y las

marcas correspondiente a la unidad recibida. Las unidades de la base de datos

se almacenaron en memoria, en la inicialización del sistema, por la función

TdpCargaUnidades, la cual almacenó en un array de estructuras tipo

TListaUnidades el nombre de las unidades y la posición en la base de datos, en

el array TEjes2 Ejes las marcas de cada una de ellas y en el vector de tipo

TIVector mstDifs las muestras que conforman cada uno de los difonemas. Asi

pues, la función TdpCopiaUnidad copia a las estructuras pasadas como

97

Page 118: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

argumentos, las marcas y las muestras originales de las que está compuesta la

unidad recibida.

La función TdpPreprocFast (TEjes *eje, TUnidadSintesis *unidad, int16 f0Inicial,

unsigned long nmst, int16 *numUnidad) la cual crea el eje de síntesis de la

unidad a partir del eje de análisis recibido. La función además recibe el nombre

y la posición de la unidad dentro de la base de datos, la frecuencia asociada al

primer periodo de la unidad y el número de muestras que componen la unidad

original. Esta función es la que realiza la síntesis propiamente dicha y la que

modifica la unidad original para obtener la unidad de síntesis necesaria de

acuerdo a la información prosódica obtenida de la primera etapa de síntesis. La

función calcula el número de marcas de la unidad en el eje de síntesis (marcas

para la unidad a sintetizar) y la posición de las mismas siguiendo el proceso

explicado en el apartado anterior. Se calcula también la correspondencia entre

el eje de análisis y el eje de síntesis. Al final, la función devuelve el número de

periodos a sintetizar que será nmars−1, pero como en este caso, y como ya se

ha explicado, de los periodos que se solapan solo se considera uno, el número

de periodos final a sintetizar será nmars−2 .

Se llama después a la función int16 TdpSintOla (matriz *mi_matriz, TEjes *eje1,

TEjes *eje2, TIVector *x1, TIVector *x2, char *unidad, TIVector *sal) que recibe

como argumentos el puntero a la matriz de datos del hilo de síntesis, los

punteros a las estructuras con las información de las marcas de dos unidades

consecutivas, los punteros a las estructuras que contienen las muestras

originales asociadas a las mismas y el vector donde se almacenarán las

muestras del periodo sintetizado. Esta función, cada vez que es llamada,

sintetiza un periodo de la señal de voz, de forma que en sucesivas llamadas

genera todos los periodos de síntesis calculados previamente. Para realizar el

proceso de síntesis la función se apoya en otras dos funciones importantes:

La función int16 TdpGetSenialSint (matriz *mi_matriz, TEjes *eje, int16 *x,

int16 ind, int16 invierte, int16 *mst, float *vent) que selecciona la zona de

una unidad determinada y crea la señal a corto plazo asociada, las

ventanas de síntesis de tipo Tukey, etc…La función recibe como

argumentos la matriz de datos asociada al hilo de síntesis, el puntero al

eje de marcas de sintesis y el puntero a las muestras originales de la

unidad, el indice de la marca de síntesis que determina la señal a corto

plazo deseada, ind, un flag que indica si la unidad es sorda para procesar

los periodos que se repiten de forma diferente, invierte, y dos vectores

98

Page 119: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

donde se devuelve la señal a corto plazo sintetizada y la ventana de

sintesis.

La función void TdpOverlapAdd (int16 *a1, int16 *a2, float *v1, float *v2,

int16 m1, int16 m2, int16 N, int16 *vs) que sintetiza un periodo de señal a

partir de dos señales a corto plazo, enventanadas, y de sus respectivas

ventanas de sintesis. Recibe los punteros a las señales a corto plazo, las

ventanas de sintesis, la longitud de las señales y las ventanas de sintesis,

y el vector de salida donde se almacena toda la informacion sobre la

unidad sintetizada.

Una vez sintetizado un periodo de señal de voz, se envía éste al dispositivo de

salida mediante la función Int Out_SendBlk (matriz *mi_matriz, WORD control,

DWORD vector). Esta función queda enmarcada dentro del bloque de salida del

sintetizador y se estudia a continuación.

6.5 Bloque de Salida

Este bloque se encarga de recoger la trama de audio procedente del Bloque de

Síntesis y realizar sobre ella las operaciones necesarias para almacenarla o

reproducirla de una forma u otra dependiendo del tipo de dispositivo codificado en la

inicialización del sistema. En este bloque también se realiza la liberación de los

recursos asignados al hilo de síntesis, de cara a la finalización del proceso de síntesis.

6.5.1 DESCRIPCIÓN GENERAL DEL BLOQUE DE SALIDA

El bloque de salida es la última etapa del sintetizador. Este bloque recoge las

tramas generadas por el sintetizador de concatenación y las deposita en un archivo de

audio de tipo WAV. En este bloque, se realizan las modificaciones que sean

necesarias de la señal sintetizada, para adaptarla al formato de salida. También se

realizarán los procesos de liberación de matrices, limpieza de los buffers, etc…para

dejar el sistema preparado para un nuevo proceso de síntesis.

99

Page 120: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 29: ESQUEMA DEL BLOQUE DE SALIDA

6.5.2 IMPLEMENTACIÓN DEL BLOQUE

Una vez sintetizado un periodo de señal de voz, se envía éste al dispositivo de

salida mediante la función Int Out_SendBlk (matriz *mi_matriz, WORD control,

DWORD vector). La función recibe como argumentos el puntero a la matriz de datos

del hilo de síntesis, una variable control que permite saber si el bloque que se está

procesando es el último de la frase o no, y un vector donde están las muestras

sintetizadas que hay que enviar al dispositivo de salida. La función realiza la

transferencia de un bloque de muestras al dispositivo de salida, encolándolas, o en su

defecto, esperando a que se abra hueco en el dispositivo de salida. Dependiendo del

tipo de dispositivo parametrizado en la inicialización del sistema, esta función llamará

a:

La función int Out_SendBlk_Tarjeta (matriz *mi_matriz, WORD control,

DWORD vector) si el dispositivo de salida es una tarjeta de audio.

La función int Out_SendBlk_Fichero (matriz *puntero,WORD control, DWORD

buffer) si se genera un fichero con el habla sintetizada.

La función int Out_SendBlk_Memoria (matriz *puntero,WORD control, DWORD

buffer) si la señal sintetizada se almacena en memoria del sistema.

En nuestro caso, se ha parametrizado el sistema para que el habla generada se

guarde en un fichero de audio de tipo WAV, por lo que se accederá a la función

Out_SendBlk_Fichero para la escritura de la trama sintetizada en el archivo de audio

final de nombre salida.wav abierto por la función Ctv_AcusticoOpen durante la

inicialización del sistema.

100

Page 121: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

6.5.2.1 Liberación de recursos del sistema

Una vez terminada la síntesis de todos los difonemas y enviados al dispositivo de

audio de salida, se rompe el bucle de la función Ctv_Acustico y se devuelve el control

a la función Ctv_Hablar que continua procesandose. A partir de este punto, todas las

acciones que realiza el sistema son para la liberación de recursos, limpieza de buffers

de síntesis y de todos las variables y parámetros utilizados en el hilo de síntesis. En

primer lugar la función Ctv_Hablar termina de procesarse llamando a la función int

Ctv_Reset (matriz *mi_matriz, WORD wParam, DWORD lParam) la cual se encarga

de limpiar los buffers de muestras para que cuando se inicie un nuevo proceso de

síntesis, no se sinteticen periodos que hayan quedado encolados previamente.

Tambien se realiza, en esta función, un reseteo del hardware utilizado durante la

síntesis.

Una vez que termina el procesado de Ctv_Hablar y se devuelve el control a

oir_cadena esta llama a la función Ctv_AcusticoClose (matriz *mi_matriz, WORD

wParam, DWORD lParam) que se encarga de cerrar los canales de Hardware que se

hayan abierto durante la síntesis. Con esta función se termina el procesamiento de la

función oir_cadena y se devuelve el control a la función hilo_sintesis que finaliza

llamando a las funciones int Ctv_Unload (matriz *puntero,WORD wParam, DWORD

lParam), que realizará la descarga o el borrado de toda la información cargada

previamente en memoria por la funcion Ctv_Load en la etapa de inicialización. Por

último, la función void libera_matriz (matriz *mi_matriz) libera la memoria dinámica que

se reservó para los datos propios de cada hilo de síntesis.

6.6 Modificaciones realizadas en el sintetizador

6.6.1 MÓDULOS DE ENTONACIÓN Y DURACIONES HEREDADOS

Como ya se ha comentado anteriormente, se han adaptado una serie de módulos

del sintetizador de formantes utilizado en el proyecto de Rosario Alcázar con el fin de

dotar al sintetizador por concatenación de una mayor naturalidad y expresión a la voz

sintetizada. En el bloque de procesado de lenguaje es donde se han introducido los

módulos de entonación y duraciones utilizados en el sintetizador de formantes con el

fin de modificar, dependiendo de la información contextual, los valores de duración y

frecuencia media estimados por la red neuronal del sistema Boris.

101

Page 122: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

6.6.1.1 Asignación de duraciones a los fonemas

Una vez obtenida la duración inicial de los fonemas de la cadena de texto a

sintetizar, se procederá a la modificación de los mismos. El sistema llamará dentro de

la función ConvierteFrase a la función:

void DuracionesMST (matriz *puntero, TBlkFonemaIndex fonema_inicio):

Esta función se encarga de modificar, si procede, el valor de duración contenido en

el campo Duracion de cada bloque fonema. Para ello se basa en la información

contextual dada por los fonemas contiguos al fonema procesado. El sistema aplicará

por tanto, una serie de modificaciones sobre las duraciones de forma que finalmente,

la duración asignada a los fonemas es el producto del valor obtenido inicialmente y

varios factores multiplicativos dependientes del contexto [Córdoba 02].

La función DuracionesMST va leyendo los fonemas iniciales de cada una de las

palabras de la cadena de texto, y los guarda en el array palabra[ ] que almacenará

todos los fonemas pertenecientes a una misma palabra.

Si el fonema leído es un signo de puntuación, realiza una llamada a la función void

Asigna_Duracion_PausasMST (matriz *puntero, char i, TBlkFonemaIndex fon_index),

que se encarga de asignar el valor adecuado al campo Duracion del bloque fonema en

cuestión.

Si el fonema no es un signo de puntuación, lee el resto de fonemas de la palabra

hasta alcanzar el final de la misma. Cuando ya se han leído todos ellos y se tienen

almacenados en el array citado, se procede a extraer la información relacionada con la

diptongación en la palabra y se definen una serie de variables que permiten tratar

situaciones de homologación que se puedan dar en la articulación de fragmentos

como “ofendedme en”. Después de obtener la información contextual necesaria, se

procede a analizar cada uno de los fonemas que conforman la palabra y se realiza una

llamada a la función void Asigna_Duracion_Consonante (char i, TBlkFonemaIndex

fon_index, int *coef_prep) en caso de que el fonema sea una consonante, o a la

función void Asigna_Duracion_Vocal (char i, TBlkFonemaIndex fon_index, int

*coef_prep) en caso de que sea una vocal.

Por último, después de que las duraciones asociadas a los bloques fonema hayan

sido modificadas por estas funciones y por Asigna_Duracion_PausasMST, se produce

un ajuste de las mismas con respecto a la velocidad de elocución del sistema

contenida en el campo psdVelocidadElocucion.val de la estructura puntero_Psd de la

matriz de parámetros del hilo de síntesis. El proceso es realizado por la función void

Ajusta_Velocidad_ElocucionMST (matriz *puntero,char Tipo, TBlkFonemaIndex inicio,

TBlkFonemaIndex fin).

102

Page 123: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Según lo expuesto, el valor de duración final que contendrá el campo Duracion de

cada bloque TBlkFonema depende tanto del valor estimado por la red neuronal y los

coeficientes modificadores del fichero de inicialización como del valor de la velocidad

del habla, de forma que:

DurF=Durrrnn∗Coef contextual∗FactorAjusteVel

A continuación se describen de forma detallada las funciones mencionadas.

void Asigna_Duracion_PausasMST (matriz *puntero, char i, TBlkFonemaIndex

fon_index

La función no tiene en cuenta el valor estimado por la red neuronal, de

forma que el valor final asignado al signo de puntuación que se está

tratando, se obtiene del archivo de inicialización de la emoción a sintetizar.

El valor se lee del archivo mediante la función float Lee_Duracion_Pausas

(int i), la cual accede a la sección [PAUSAS] del fichero de inicialización

cuyo nombre se encuentra almacenado en el array fich_inicializ_2, y dentro

de la misma, al coeficiente que corresponda según el signo de puntuación

que se esté tratando. Se han determinado los coeficientes:

paus_pto: Cuando el fonema tratado sea “.”.

paus_ptocoma: Cuando el fonema sea “;”.

paus_coma : Cuando el fonema sea “,” o cualquier otro signo de

puntuación no contemplado.

Los valores de los coeficientes están expresados en ms y pueden variar

de una emoción a otra. Una vez normalizado el valor del coeficiente

obtenido, se procede a escribir el valor de duración estimado por la red

neuronal mediante la función void BlkFonemaEscribeDur

(TBlkFonemaIndex blk, TDuracion dur), la cual escribe en el campo

Duracion del bloque asociado al signo de puntuación recibido como

argumento, el valor de duración del fichero de inicialización.

void Asigna_Duracion_Consonante (char i, TBlkFonemaIndex fon_index, int

*coef_prep)

La función se encarga de leer el valor de duración inicial de los fonemas

de tipo consonante, previamente estimado por la red neuronal. Después

multiplicará ese valor inicial por una serie de factores moduladores que

dependerán del contexto en el que se encuentre el fonema en cuestión y

cuyos valores varían dependiendo de la emoción a sintetizar.

103

Page 124: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

En primer lugar se realiza una llamada a la función TFlags

BlkFonemaLeeDur (TBlkFonemaIndex blk) que devuelve el valor de la

duración inicial del fonema que se está tratando. Este valor sufre una serie

de modificaciones, si procede, al ser multiplicado por un conjunto de

factores que dependerán del contexto consonántico y vocálico en el que se

encuentre el fonema tratado.

En el sintetizador por concatenación Boris, sólo se modifican los valores

de duración de aquellas consonantes que se vean afectadas por el efecto

de alargamiento prepausa. Los coeficientes que modulan la variación de la

duración de los fonemas consonánticos, se encuentran dentro de la

sección [DURACION] del fichero de inicialización contenido en la variable

fich_inicializ_2. A continuación se enumeran los utilizados y se detalla la

situación contextual en la que se aplican:

coef49: Se aplica a las consonantes no continuas (oclusivas y

vibrantes) que se encuentran situadas después de la última vocal

del grupo fónico, como en la palabra “comprar”.

coef50: Se aplica a las consonantes continuas que se encuentran

situadas después de la última vocal del grupo fónico, como en la

palabra “pudiereis”.

Una vez obtenido el coeficiente de modificación se multiplica éste por la

duración inicial del fonema consonántico y se almacena el valor obtenido

en el campo Duracion del bloque fonema correspondiente mediante la

función void BlkFonemaEscribeDur (TBlkFonemaIndex blk, TDuracion dur).

void Asigna_Duracion_Vocal (char i, TBlkFonemaIndex fon_index, int *coef_prep)

La función se encarga, de la misma forma que la anterior, de leer el

valor de duración inicial de los fonemas de tipo consonante. Después

multiplica ese valor inicial por una serie de factores moduladores que

dependerán del contexto en el que se encuentre el fonema y cuyos valores

varían dependiendo de la emoción a sintetizar.

Para determinar la duración inicial estimada por la red neuronal, se

accede de nuevo a la función TFlags BlkFonemaLeeDur

(TBlkFonemaIndex blk). Una vez leída esa duración inicial el sistema pasa

a obtener los factores multiplicativos que modificarán su valor. Estos

factores van a depender fundamentalmente de:

Contexto post_vocálico del fonema.

104

Page 125: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Homologación11.

Posición de la palabra dentro del grupo fónico y acentuación de la

vocal.

Al igual que ocurría en la modificación de las duraciones de los fonemas

consonánticos, los coeficientes que modulan la variación de la duración de

las vocales se encuentran dentro de la sección [DURACION] del fichero de

inicialización contenido en la variable fich_inicializ_2. Los coeficientes que

modifican la duración de las vocales son:

coef48 : Se aplica a la última vocal del grupo fónico.

ult_palabra : Se aplica a las vocales de la última palabra del grupo

fónico.

acent_oxitona : Se aplica a la vocal tónica de la última palabra del

grupo fónico en caso de que la última palabra sea oxítona.

acent_no_oxi : Se aplica a la vocal tónica de la última palabra del

grupo fónico en caso de que la última palabra no sea oxítona.

sil_final_no_oxi : Se aplica a la última vocal del grupo fónico en el

caso de que la última palabra no sea oxítona.

sil_acentuada : Se aplica a las vocales acentuadas del grupo

fónico.

Una vez obtenidos los coeficientes que modifican la duración de la vocal

correspondiente, se almacena el valor obtenido en el campo Duracion del

bloque fonema correspondiente mediante la función void

BlkFonemaEscribeDur (TBlkFonemaIndex blk, TDuracion dur).

void Ajusta_Velocidad_ElocucionMST (matriz *puntero, char Tipo,

TBlkFonemaIndex inicio, TBlkFonemaIndex fin)

Esta función modifica los valores de duración obtenidos por las tres

funciones anteriores mediante un factor que depende de la velocidad de

elocución parametrizada. Se recorren uno a uno las distintas estructuras

TBlkFonema y dependiendo de si el fonema contenido en el bloque es un

silencio o un fonema el sistema accederá a la matriz

Velocidad_Elocucion_FonemasMST o a la matriz

Velocidad_Elocucion_SilenciosMST. Se accederá a un coeficiente u otro

dentro de la correspondiente matriz, dependiendo del valor almacenado en

11 La homologación es el fenómeno que se produce, en ciertos casos, cuando el fonema final de una palabra se funde con el fonema inicial de la siguiente, formando un único fonema de mayor duración.

105

Page 126: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

el campo psdVelocidadElocucion.val de la estructura puntero_Psd de la

matriz de parámetros. Una vez obtenido el factor de modificación

necesario, se multiplica éste por el valor de la duración del fonema (leído

previamente mediante la función BlkFonemaLeeDur, ya comentada) y se

almacenará de nuevo en el campo Duracion del bloque fonema asociado

(mediante la función BlkFonemaEscribeDur).

6.6.1.2 Asignación de frecuencia media a los fonemas

Una vez determinado el valor de duración correspondiente a cada uno de los

fonemas, se pasa a realizar la asignación de un valor de F0 a cada uno de los bloques

TBlkFonema. Como ya se ha comentado anteriormente, los distintos valores de

frecuencia fundamental asignados van a determinar la entonación de la frase. Los

picos de la curva de entonación son aquellas sílabas que están acentuadas (presentan

mayor frecuencia que el resto), mientras que los valles de la curva son las sílabas que

preceden a los picos y que tienen una menor frecuencia.

El modelo de entonación que se utiliza en el sistema divide la curva de tono en 3

tramos bien definidos [Martínez 98], [ D’ Haro 03 ], [Gutierrez-Arriola 01] :

Zona inicial: Es la zona comprendida desde el principio del grupo fónico hasta

la primera sílaba tónica.

Zona central: Modela la entonación de los fonemas situados entre la primera y

la penúltima tónica.

Zona final: Esta zona abarca a todos los fonemas situados entre la última átona

antes de la última tónica y el final del grupo fónico.

Con estas tres zonas queda totalmente definida la curva de entonación para un

grupo fónico cualquiera.

El sistema calcula el valor de tono de cada uno de los fonemas mediante la función

EntonacionMST que se describe a continuación.

void EntonacionMST (matriz *puntero,TBlkFonemaIndex ind_fon):

De forma resumida, esta función obtiene la frecuencia media de todos los fonemas

y los almacena en el campo F0 de los bloques de fonema correspondientes. El

proceso se realiza mediante la asignación inicial de un determinado valor de tono a

unos fonemas “clave” concretos y una posterior interpolación entre los mismos para

obtener el resto de valores. Los valores iniciales son obtenidos a partir de un fichero

de inicialización que variará dependiendo de la emoción que se esté sintetizando en

cada momento.

106

Page 127: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

En el proceso seguido para la obtención del tono de los fonemas se utilizan las

funciones principales detalladas a continuación:

void Leer_inicializacion() :

En primer lugar el sistema obtiene del fichero de inicialización correspondiente,

cuyo nombre se encuentra almacenado en la variable fich_inicializ, una serie de

coeficientes de entonación que almacena en unas variables globales de tipo int

homónimas. Estos coeficientes de entonación se encuentran en la sección

[ENTONACION] del fichero de inicialización y son los siguientes:

TON1V: Contiene el valor de tono del valle del grupo fónico. Se aplica cuando

el grupo fónico consta de una sola tónica y no acaba en punto.

TON1T: Contiene el valor de tono del pico del grupo fónico. Se aplica en los

casos en los que el grupo fónico conste de una sola tónica y no acabe en

punto.

TON1F: Representa el valor de tono asignado al último fonema del grupo

fónico cuando éste consta de una sola tónica y no acaba en punto.

TON1_pV: Contiene el valor de tono asignado al valle del grupo fónico. Se

aplica cuando el grupo fónico consta de una sola tónica y acaba en punto.

TON1_pT: Contiene el valor de tono asignado al pico del grupo fónico. Se

aplica cuando éste consta de una sola tónica, acaba en punto y la última

palabra no es oxítona12.

TON1_oT: Contiene el valor de tono asignado al pico del grupo fónico. Se

aplica cuando éste consta de una sola tónica, acaba en punto y la última

palabra es oxítona.

TON1_pF: Representa el valor de tono asignado al último fonema del grupo

fónico cuando éste consta de una sola tónica y acaba en punto.

PICO1: Contiene el valor de tono asignado al primer pico del grupo fónico, y se

tendrá en cuenta cuando el grupo fónico conste de más de una tónica.

VALLE1: Representa el valor de tono asignado al primer valle del grupo fónico.

Se aplica en los casos en los que el grupo fónico conste de más de una tónica.

PENPIC: Representa la pendiente (con signo contrario) con la que aumenta o

disminuye el valor de tono entre los picos del grupo fónico.

PENVAL: Representa la pendiente (con signo contrario) con la que aumenta o

disminuye el valor de tono entre los valles del grupo fónico.

12 Las palabras oxítonas o agudas son aquellas cuya sílaba tónica se encuentra al final de palabra (última posición). Las palabras no oxítonas son el resto de palabras, esdrújulas y llanas.

107

Page 128: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Una vez se han leído y almacenado en variables estos coeficientes, se procede a la

detección de tónicas y valles que existen dentro del grupo fónico mediante la función

BuscaSignoPunt que se detalla a continuación.

TBlkFonemaIndex BuscaSignoPunt (TBlkFonemaIndex fon_ini, unsigned char

*num_ton, unsigned char *signo) :

Esta función recorre cada uno de los fonemas del grupo fónico, hasta el final del

mismo o hasta detectar un signo de puntuación. Se analiza cada uno de los fonemas

para detectar las tónicas y los valles del grupo. Cuando se detecta alguno de ellos, se

almacena el puntero a la estructura TBlkFonema asociada en el array Tonicas

[MAX_NUM_TON] o en el array Valles [MAX_NUM_TON] según corresponda. Durante

el proceso, también se asigna un valor a las variables num_ton (contiene el número de

tónicas que hay en grupo fónico) y signo (contiene el valor del signo ortográfico que

marca el final del grupo fónico).

Así pues, al finalizar el proceso de la función, el array Tonicas contendrá, de forma

ordenada, los punteros de los bloques de fonema correspondientes a las tónicas (p. ej.

Tonicas[0] puntero a la primera tónica del grupo fónico) y de igual forma que el array

Valles contendrá los punteros a los bloques correspondientes a los valles del grupo

fónico.

Una vez obtenidas la posición de las tónicas y de los valles del grupo fónico, se

procede a la generación de los valores de F0 asociados a los fonemas.

void GeneraF0 (TBlkFonemaIndex fon_ini_GF, TBlkFonemaIndex fon_fin_GF,

unsigned char num_ton, unsigned char signo, int Oxitona) :

Esta función es la que realiza el cálculo del tono de los fonemas. La función recibe

como argumentos los punteros del primer y último bloque fonema del grupo fónico

(fon_ini_GF y fon_fin_GF respectivamente), el número de tónicas existentes en el

grupo (num_ton), el signo de puntuación (signo) y un flag que indica si la última

palabra del grupo es oxítona o no.

Como ya se ha comentado, la función en primer lugar asignará los valores de tono

obtenidos del fichero de inicialización, a unos determinados fonemas según sea el tipo

de grupo fónico de entrada. En segundo lugar, se producirá la interpolación entre los

valores iniciales asignados para la obtención de los valores de frecuencia de todos los

fonemas. Dependiendo del número de tónicas que se hayan detectado previamente,

se realizan unas acciones u otras. De esta forma:

Si el número de tónicas es 0, se realiza una llamada a la función int Principio

(unsigned char signo) para cada uno de los fonemas pertenecientes al grupo.

108

Page 129: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Si el número de tónicas es 1, se realiza una llamada a void AsignaUnaTonica

(TBlkFonemaIndex fon_ini_GF, TBlkFonemaIndex fon_fin_GF, unsigned char

signo, int oxitona).

Si el número de tónicas es 2, se llamará a las funciones void AsignaPrincipio

(TBlkFonemaIndex fon_ini_GF, unsigned char signo) y void AsignaFinal

(TBlkFonemaIndex fon_fin_GF, unsigned char num_ton, unsigned char signo,

int Oxitona).

Si el número de tónicas es mayor que 2, se realiza una llamada a la función

void AsignaPrincipio (TBlkFonemaIndex fon_ini_GF, unsigned char signo),

después otra a la función void AsignaMedio (unsigned char num_ton) y por

último se llama a void AsignaFinal (TBlkFonemaIndex fon_fin_GF, unsigned

char num_ton, unsigned char signo, int Oxitona).

Dentro de todas estas funciones se invoca a la función static void Interpola

(TBlkFonemaIndex Pos_Ini, TF0 F0_Ini, TBlkFonemaIndex Pos_Fin, TF0 F0_Fin) que

realiza la interpolación mediante una recta de los valores asignados inicialmente para

obtener todos los valores de tono de la curva de entonación.

A continuación se describen de forma de forma detallada todas las funciones

mencionadas.

I N T P R I N C I P I O ( U N S I G N E D C H A R S I G N O ) :

Devuelve el tono indicado en el coeficiente de la sección [ENTON_PRINCIPIO] del

fichero de inicialización cuyo nombre está contenido en la variable fich_inicializ. El

coeficiente obtenido del fichero de inicialización depende del signo de puntuación que

marca el final del grupo fónico. Los coeficientes contenidos en esta sección del fichero

de inicialización son:

Coma : Contiene el valor de frecuencia a asignar cuando el grupo acaba con el

signo “,”.

Pto_Coma : Contiene el valor de frecuencia a asignar cuando el grupo acaba

con el signo “;”.

Abre_Int: Contiene el valor de frecuencia a asignar cuando el grupo acaba con

el signo “¿”.

Cierra_Int : Contiene el valor de frecuencia a asignar cuando el grupo acaba

con el signo “?”.

Abre_Adm : Contiene el valor de frecuencia a asignar cuando el grupo acaba

con el signo “¡”.

Cierra_Adm : Contiene el valor de frecuencia a asignar cuando el grupo acaba

con el signo “!”.

109

Page 130: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

2_Ptos : Contiene el valor de frecuencia a asignar cuando el grupo acaba con el

signo “:”.

Comillas : Contiene el valor de frecuencia a asignar cuando el grupo acaba con

el signo “ “” ”.

Guion : Contiene el valor de frecuencia a asignar cuando el grupo acaba con el

signo “-”.

Abre_Parent : Contiene el valor de frecuencia a asignar cuando el grupo acaba

con el signo “(”.

Cierra_Parent : Contiene el valor de frecuencia a asignar cuando el grupo acaba

con el signo “)”.

Pto : Contiene el valor de frecuencia a asignar cuando el grupo acaba con el

signo “.”.

El tono obtenido se almacena en el campo F0 de la estructura TBlkFonema

asociada a cada uno de los fonemas que forman el grupo fónico. La asignación de un

determinado valor de tono al campo F0 del bloque fonema asociado se realiza

mediante la función void BlkFonemaEscribeF0 (TBlkFonemaIndex blk, TF0 F0) que

recibe como argumentos el puntero al bloque fonema correspondiente y el valor de

frecuencia a asignar.

V O I D AS I G N A U N AT O N I C A (TB L KF O N E M A IN D E X F O N_ I N I _GF, TB L KF O N E M A IN D E X F O N_ F I N_GF, U N S I G N E D C H A R S I G N O , I N T O X I T O N A ) :

Esta función se aplica cuando el grupo fónico a sintetizar sólo consta de una sílaba

tónica. La función recibe como argumentos los punteros a las estructuras TBlkFonema

correspondientes al primer y último fonema del grupo fónico (fon_ini_GF y

fon_fin_GF), el signo que indica el final del grupo fónico (signo) y un flag que indica si

la última palabra que aparece en el grupo fónico es oxítona o no (oxitona).

Para la asignación del valor de frecuencia a los distintos fonemas que forman el

grupo, la función distingue los siguientes casos:

El grupo fónico no acaba con el signo de puntuación “.” Se contemplan las

siguientes situaciones:

El primer fonema del grupo coincide con la tónica: En este caso se asigna

al campo F0 del bloque correspondiente al primer fonema del grupo

fónico, el valor de la variable TON1T (inicializada previamente por la

función Leer_inicializacion). Después se asigna el valor de la variable

TON1F al campo F0 del bloque fonema asociado al último fonema del

grupo fónico, fon_fin_GF. El valor de la frecuencia que se asigna al resto

110

Page 131: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

de los fonemas comprendidos entre el primero y el último se calcula a

través de una recta de interpolación mediante la función Interpola.

No hay ningún valle inicial (no existen vocales entre el inicio de la frase y

la vocal tónica): Se asigna el valor de la variable TON1V al campo F0 de

la estructura TBlkFonema asociada a fon_ini_GF, primer fonema del

grupo fónico. Se asigna el valor de la variable TON1T al campo F0 del

fonema tónico apuntado por el registro Tonicas [0] y, finalmente, se

almacena el valor de TON1F en el campo de frecuencia del último

fonema del grupo fónico. Para calcular la curva de entonación asociada a

los fonemas comprendidos entre el fonema inicial y el final del grupo

fónico se utiliza la función Interpola, que aplicará una recta de

interpolación sobre estos valores.

En caso distinto a los citados anteriormente : En este caso, se asigna al

primer fonema del grupo fónico y al fonema situado en el primer valle el

valor de frecuencia almacenado en la variable TON1V. Se asigna el valor

de TON1T al campo de frecuencia del fonema tónico, y por último, se

asigna el valor de frecuencia almacenado en TON1F al último fonema del

grupo fónico. Se utiliza la función Interpola para obtener el valor del tono

del resto de los fonemas del grupo.

El grupo fónico acaba con el signo de puntuación “.” En este caso se

contemplan las siguientes situaciones:

El primer fonema del grupo coincide con la tónica: La función realiza

diferentes acciones dependiendo de si el grupo fónico acaba en una

palabra oxítona o no.

- El grupo fónico acaba en oxítona: En este caso, el primer fonema

toma el valor de frecuencia contenido en la variable TON1_oT y el

último fonema del grupo fónico toma el valor asignado en TON1_pF.

Al igual que en el resto de casos, el valor de tono de los fonemas del

grupo se calcula mediante una recta de interpolación.

- El grupo fónico no acaba en oxítona: El campo F0 del bloque fonema

asociado al primer fonema del grupo toma el valor almacenado en

TON1_pT. El último fonema toma el valor asignado en TON1_pF. La

frecuencia del resto de fonemas del grupo fónico se calcula mediante

interpolación a través de la función Interpola.

111

Page 132: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

No hay ningún valle inicial (no existen vocales entre el inicio de la frase y

la vocal tónica): Las acciones que realiza la función difieren dependiendo

de si la última palabra del grupo fónico es oxítona o no.

- El grupo fónico acaba en una palabra oxítona: El primer fonema del

grupo, fon_ini_GF, toma el valor de frecuencia almacenado en la

variable TON1_pV. En el fonema tónico apuntado por el registro

Tonicas[0] se almacena el valor de frecuencia de la variable

TON1_oT y por último, el valor de la variable TON1_pF es asignado

al campo F0 del último bloque fonema del grupo fónico. La frecuencia

del resto de fonemas del grupo fónico se calcula mediante

interpolación a través de la función Interpola.

- El grupo fónico no acaba en oxítona: En esta ocasión, al primer

fonema del grupo se le asigna el valor de TON1_pV, al fonema tónico

se le asigna el valor de frecuencia contenido en la variable TON1_pT

y el valor de la variable TON1_pF es asignado al campo F0 del último

bloque fonema del grupo fónico. Al igual que en los casos anteriores

la frecuencia del resto de fonemas del grupo se calcula mediante la

función Interpola que se describirá posteriormente.

En caso distinto a los citados anteriormente : Se realiza una distinción

dependiendo del tipo de la última palabra del grupo fónico.

- El grupo fónico acaba en oxítona: Se asigna al primer fonema del

grupo fónico y al fonema situado en el primer valle el valor de

frecuencia almacenado en la variable TON1_pV. Se asigna el valor

de TON1_oT al campo de frecuencia del fonema tónico, y por último,

se asigna el valor de frecuencia almacenado en TON1_pF al último

fonema del grupo fónico. Se utiliza la función Interpola para obtener

el valor del tono del resto de los fonemas del grupo.

- El grupo fónico no acaba en oxítona: Se asigna al primer fonema del

grupo fónico y al fonema situado en el primer valle el valor de

frecuencia almacenado en la variable TON1_pV. Se asigna el valor

de TON1_pT al campo de frecuencia del fonema tónico, y por último,

se asigna el valor de frecuencia almacenado en TON1_pF al último

fonema del grupo fónico. Se utiliza la función Interpola para obtener

el valor del tono del resto de los fonemas del grupo.

112

Page 133: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

La siguiente tabla muestra de forma esquemática las asignaciones del campo F0 de

los fonemas “clave” al final de la función, dependiendo de las distintas situaciones

contempladas:

1er Fonema Valle Tónica Fonema

Final

Grupo fónico

no acaba

en PUNTO

1er fonema coincide con tónica TON1T     TON1F

1er fonema no coincide con tónica y no hay valle TON1V   TON1T TON1F

1er fonema no coincide con tónica y hay valle TON1V TON1V TON1T TON1F

Grupo fónico acaba

en PUNTO

1er fonema coincide

con tónica

Oxítona TON1_oT     TON1_pF

No oxítona TON1_pT     TON1_pF

1er fonema no

coincide con tónica y no hay

valle

Oxítona TON1_pV   TON1_oT TON1_pF

No oxítona TON1_pV   TON1_pT TON1_pF

1er fonema no

coincide con tónica y hay valle

Oxítona TON1_pV TON1_pV TON1_oT TON1_pF

No oxítona TON1_pV TON1_pV TON1_pT TON1_pF

TABLA 3: ASIGNACIÓN DE F0 PARA GRUPOS FÓNICOS CON UNA TÓNICA

La asignación de un determinado valor de tono al campo F0 del bloque fonema

asociado se realiza mediante la función BlkFonemaEscribeF0.

V O I D A S I G N AP R I N C I P I O (TB L KF O N E M A IN D E X F O N_ I N I _GF, U N S I G N E D C H A R S I G N O ) :

La función calcula y asigna valores de frecuencia a los fonemas situados entre el

fonema inicial y la primera tónica del grupo fónico. La función recibe como argumentos

el puntero a la estructura TBlkFonema correspondientes al primer fonema del grupo

fónico (fon_ini_GF) y el signo que indica el final del grupo fónico (signo).

Para la obtención y asignación de los valores de tono de cada uno de los fonemas

de la zona inicial, la función realiza diferentes acciones dependiendo de las

características del grupo:

a) El primer fonema del grupo coincide con la tónica: En este caso, sólo se asigna

el valor de la variable PICO1, inicializada previamente por la función

Leer_inicializacion, al campo F0 del bloque correspondiente al primer fonema

del grupo fónico.

113

Page 134: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

b) El primer fonema del grupo no coincide con la primera tónica y existe valle: Se

asigna al primer fonema del grupo fónico, fon_ini_GF, el valor de frecuencia

obtenido a la salida de la función Principio, la cual, como ya se ha comentado,

obtiene el valor asociado al signo de puntuación del grupo fónico a través del

fichero de inicialización. Después se asigna el valor de la variable VALLE1 al

campo F0 del bloque fonema asociado al primer valle y el valor de la variable

PICO1 al del fonema tónico. El valor de la frecuencia que se asigna al resto de

los fonemas comprendidos entre el primer fonema y la primera tónica se

obtiene mediante la función Interpola.

c) El primer fonema del grupo no coincide con la primera tónica y no existe valle:

Se asigna al primer fonema del grupo fónico, el valor de frecuencia obtenido a

la salida de la función Principio y el valor de la variable PICO1 al campo F0 del

bloque fonema asociado a la tónica. Para obtener los valores de frecuencia del

resto de fonemas comprendidos en la zona inicial se interpola entre el valor

asignado al primer fonema y el valor asignado al fonema tónico utilizando para

ello la función Interpola.

La asignación de un determinado valor de tono al campo F0 del bloque fonema

asociado se realiza mediante la función BlkFonemaEscribeF0.

La siguiente tabla muestra de forma esquemática las asignaciones del campo F0 de

los fonemas “clave” al final de la función, dependiendo de las distintas situaciones

contempladas:

  1er fonema 1er valle 1er pico1er fonema coincide con la

1ª tónica     PICO11er fonema no coincide con

la 1ª tónica y no hay valle Principio(signo)   PICO11er fonema no coincide con

la 1ª tónica y hay valle Principio(signo) VALLE1 PICO1

TABLA 4: ASIGNACIÓN DE F0 EN LA ZONA INICIAL

V O I D A S I G N AM E D I O ( U N S I G N E D C H A R N U M _ T O N ) :

Se encarga de modelar la entonación de los fonemas situados entre la primera y la

penúltima tónica del grupo fónico. Para ello en primer lugar asigna el valor de

frecuencia a los picos (sílabas tónicas) y a los valles (sílabas que preceden a las

tónicas) que comprendidos en la zona media. El proceso seguido para el cálculo y la

asignación de la frecuencia es el mismo tanto para los valles como para las tónicas:

a) Cálculo y asignación de F0 a picos : Para el cálculo de la frecuencia de los

fonemas tónicos que aparecen en el grupo fónico se dispone de las variables

114

Page 135: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

PICO1 y PENPIC, inicializadas previamente por la función Leer_inicializacion.

El modelo seguido para el cálculo de la frecuencia se basa en situar todos los

picos sobre una recta cuyo punto inicial es PICO1 (frecuencia asignada al

primer pico del grupo por la función AsignaPrincipio) y cuya pendiente queda

determinada por la ecuación:

PdtePICO=−PENPIC

(nº tonicas−1)

Así pues, el valor de frecuencia asociado a la tónica i-ésima queda establecido

por la ecuación:

F0Tonicai−esima=PICO1−( (i−1 )∗PENPIC

nº tonicas−1 )Donde i varía desde i=1 hasta i=nº tonicas−1 .

b) Cálculo y asignación de F0 a valles : Para el cálculo de la frecuencia asociada a

los valles del grupo, se usa el mismo algoritmo que para los picos pero, en este

caso, partiendo de las utilizando las variables VALLE1 (frecuencia asociada al

primer valle del grupo fónico) y PENVAL. En el caso de los valles, el valor de

frecuencia asociado al valle i-ésimo se obtendrá mediante la ecuación:

F 0Vallei−esimo=VALLE1−( ( i−1 )∗PENVAL

nº tonicas−1 )Donde i varía desde i=1 hasta i=nº tonicas−1 .

Una vez se ha calculado un valor de entonación para todos los picos y los valles

que se encuentran entre la primera y la penúltima tónica del grupo fónico, se realizan

las interpolaciones necesarias para la obtención de los valores de frecuencia

intermedios que sean necesarios. Una vez obtenida la frecuencia de los fonemas, la

asignación se realiza mediante la función BlkFonemaEscribeF0.

V O I D A S I G N AF I N A L (TBL K F O N E M A I N D E X F O N_ F I N_GF, U N S I G N E D C H A R N U M _T O N , U N S I G N E D C H A R S I G N O , I N T OX I T O N A ) :

Esta función se encarga de asignar valores de tono a los fonemas situados entre la

penúltima tónica y el final de la frase. Esta zona es la más importante en la curva de

tono, ya que es la que realmente marca la entonación y da sentido y significado al

resto de la frase.

La función recibe como argumentos el puntero al último fonema del grupo fónico, el

numero de tónicas del grupo, el signo de puntuación que determina el final del grupo y

un flag que indica si la última palabra del grupo es oxítona (valor “1”) o no lo es (valor

115

Page 136: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

“0”). Igual que ocurre en el resto de zonas de la curva de entonación, en primer lugar

se asignarán unos valores de frecuencia a unos fonemas determinados, para después

obtener el resto de valores mediante la interpolación de los primeros.

Así pues, la función obtiene el valor de frecuencia asociado al último valle, a la

última tónica y al fonema final del grupo fónico. Para ello, se analiza el tipo de signo de

puntuación final del grupo fónico y dependiendo si la palabra final es oxítona o no

oxítona, se llama a la función void AsignaVTF (int *Valle, int *Tonica, int *Final,

unsigned char Pos) con un valor u otro asignado a la variable Pos. Esta función

accede, para cada uno de los fonemas de interés, a una determinada sección del

fichero de inicialización asociado a la emoción a implementar. De esta forma, se

accede a la sección [ENTON_VTF_VALLE] para obtener el valor de F0 del último valle

del grupo, a [ENTON_VTF_TONICA] para la última tónica y a [ENTON_VTF_FINAL]

para obtener el valor de F0 correspondiente al último fonema del grupo.

Dependiendo del valor que tome el último argumento Pos, la función AsignaVTF

accederá a un coeficiente u otro dentro de la sección de interés. En la siguiente tabla

se muestra la relación entre los coeficientes de cada una de las secciones y el signo

de puntuación asociado dependiendo del tipo de palabra final:

Nombre del coeficiente

Última palabra del grupo fónico

Signo de puntuación que limita el grupo fónico

Coma_oxi_asc Oxítona “,”Coma_noxi_asc No oxítona “,”Pto_Coma_oxi Oxítona “;”

Pto_Coma_noxi No oxítona “;”Cierra_Int -- “?”

Cierra_Adm -- “!”2Ptos_Oxi Oxítona “:”2Ptos_noxi No oxítona “:”

Abre_Parent_asc -- “(”Abre_Parent_des -- “(”

Cierra_Parent -- “)”Pto_oxi Oxítona “.”Pto_noxi No oxítona “.”

TABLA 5: COEFICIENTES PARA LA ASIGNACIÓN DE F0 EN LA PARTE FINAL

Después de obtener los valores de frecuencia necesarios se procede al cálculo del

resto de valores de frecuencia de los fonemas comprendidos en la zona final mediante

la función Interpola.

116

Page 137: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

V O I D IN T E R P O L A (TB L KF O N E M A IN D E X PO S _I N I , TF0 F0_ I N I , TBL K F O N E M A I N D E X P O S_F I N , TF0 F0_F I N ) :

La función recibe como argumentos los punteros a las estructuras TBlkFonema

asociados al fonema inicial y final entre los que se realiza la interpolación, y los valores

de frecuencia de ambos bloques fonema.

En primer lugar, se obtiene el valor de la variable Num_inter que expresa el valor de

número de fonemas+1 . Después calcula la frecuencia de los fonemas intermedios

basándose en que los valores de todos ellos se encuentran en una recta cuyo punto

inicial y final son los valores de frecuencia F0_Ini y F0_Fin recibidos como

argumentos. La pendiente de esta recta de interpolación queda definida por:

(F0¿¿ fin−F 0ini)Numinter

¿

Teniendo esto en cuenta, el valor de frecuencia asignado al fonema i-ésimo

comprendido entre los dos que se quieren interpolar será el obtenido de:

F 0 i=F0ini+ i∗( (F0 fin−F0 ini)Numinter )

Dondei indica el índice o la posición del fonema dentro de la zona comprendida por

los dos fonemas de entrada.

Nuevamente se utiliza la función BlkFonemaEscribeF0 para asignar el valor de

frecuencia calculado al campo F0 de la estructura TBlkFonema asociada al fonema

correspondiente.

Una vez que se ha determinado un valor de F0 para cada uno de los fonemas

mediante la función GeneraF0, se realiza una llamada a AleatorizaF0 descrita a

continuación.

void AleatorizaF0 (matriz *puntero, TBlkFonemaIndex fon_ini,

TBlkFonemaIndex fon_fin)

La función recibe los punteros a las estructuras TBlkFonema correspondientes al

primer y último fonema del grupo fónico y el puntero a la matriz de datos del hilo de

síntesis. AleatorizaF0 se encarga de modificar de forma aleatoria el valor de la

frecuencia asignada previamente a los fonemas con el fin de conseguir una mayor

naturalidad en el habla. La ecuación de cálculo del valor final de frecuencia para cada

uno de los fonemas del grupo fónico es:

F0=(F 0ini+AleatVar (±5Hz ) )∗factMult+ factAd

117

Page 138: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

De esta forma, el valor final de la frecuencia de un fonema depende de un valor

aleatorio entre ±5Hz y de los factores aditivo y multiplicativo que modulan el tono

medio del hilo de síntesis.

6.6.2 ADAPTACIÓN AL NUEVO FORMATO DEL ARCHIVO DE BASE DE DATOS

Como ya se comentó en el capítulo anterior, el archivo creado por el generador de

base de datos, Gendb.exe, tiene una cabecera de 32 bytes con información del

archivo. Para que no haya problemas a la hora de almacenar las unidades de la base

de datos de entrada al sintetizador, es necesario que, durante el proceso de carga, no

se tenga en cuenta esta cabecera de 32 bytes insertada por el programa Gendb.exe.

Para ello, se ha modificado la función TdpCargaUnidades (char *nombreFichero), ya descrita anteriormente, de forma que el sintetizador se salte la cabecera inicial del

fichero minidb.dfm, situada delante de la información de marcas de pitch y muestras.

Después de la apertura del archivo que contiene la base de datos, se realiza un

desplazamiento del cursor de la siguiente forma:

lseek(fileHandle,32,SEEK_SET);

6.6.3 CONTROL DE UNIDADES ENSORDECIDAS EN EL SINTETIZADOR

Durante la caracterización prosódica de la emoción tristeza se detectó que la mayor

parte de los difonemas procedentes de la base de datos, estaban ensordecidos de

forma que la distancia entre las marcas de F0 contenidas, daban lugar a una

frecuencia media en los difonemas, demasiado baja como para poder utilizarlos

durante el proceso de síntesis de habla.

Por tanto, se ha añadido al sintetizador un control que verifica la calidad de los

difonemas contenidos en la base de datos, verificando si la frecuencia media de la

unidad a cargar es menor que TONO_MINSORDAS, que por defecto tiene un valor de

100 Hz. El control se realiza después de almacenar en memoria la información de las

marcas de los difonemas mediante la condición:

( f s∗Nummarcas)(Posicionmarca fin

−Posicionmarcaini)

En el caso de que el valor obtenido sea menor que el tono mínimo establecido para

los difonemas, se comprueba si la unidad es fricativa, oclusiva o un silencio, en cuyo

caso no se realizará ninguna advertencia. Si el tipo de la unidad no es ninguno de los

anteriores, se escribe el nombre de la misma en el archivo de texto listaSordos.txt.

118

Page 139: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Si el valor obtenido es mayor que el tono mínimo, el proceso continúa con la carga

de la información de muestras de los difonemas de forma normal.

6.6.4 LAS SECUENCIAS DE CONTROL

6.6.4.1 Descripción e implementación en el programa

Las secuencias de control son cadenas de caracteres que se insertan en medio del

texto a reproducir permitiendo introducir variaciones en el habla sintetizada. Las

secuencias de control o etiquetas, quedan delimitadas por corchetes en cuyo interior

se encuentran una letra y un número separados por dos puntos, de la forma [letra:

número]. Dependiendo de la letra de la etiqueta, el sintetizador realizará una acción u

otra que afectará a la prosodia de la frase en mayor o menor medida dependiendo del

número adjunto a la misma.

La identificación y aplicación de las secuencias de control se realiza en la etapa de

procesado del texto de entrada. Como se vio anteriormente, es en la función BOOL

EnPalabra (matriz *puntero) donde se determina si una secuencia de caracteres

corresponde o no a un comando de control. Para que una cadena de letras sea

considerada como secuencia de control se debe verificar que el primer carácter de la

secuencia sea “[”, y que el segundo carácter se corresponda con una letra asociada a

alguno de los comandos de control. Para hacer esta comprobación, como ya se ha

visto, se utiliza la función BOOL EsCtrl (char c), a la que se le pasa como parámetro el

carácter en cuestión.

Una vez que una secuencia de caracteres ha sido identificada como una etiqueta

de control, cuando se alcanza el fin de palabra y se están generando los bloques de

palabras asociados a la cadena de entrada, se les da el tratamiento necesario a las

secuencias detectadas anteriormente con la función void ProcesaSecCtrl (matriz

*puntero). Esta función realiza una acción u otra dependiendo de la secuencia de

control almacenada en el campo buf de la estructura puntero_Psd de la matriz de

datos del hilo de síntesis.

En primer lugar, ProcesaSecCtrl analiza si el contenido del campo buf tiene la forma

[letra:número], es decir, si el contenido es una secuencia de control:

Si el contenido del campo no coincide con ninguna de las secuencias

implementadas, se deletrea la cadena de caracteres de forma que se crean

tantos bloques de palabra como sean necesarios.

Si la cadena almacenada en el campo buf tiene la estructura de una secuencia

de control, se procede al procesado de la etiqueta mediante una estructura de

programación de tipo switch en la que se implementan, para cada uno de los

119

Page 140: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

casos a tener en cuenta, las acciones a realizar para llevar a cabo la función

indicada por cada etiqueta.

Se detalla a continuación, cada una de las etiquetas de control implementadas en

el sintetizador y el efecto producido por cada una de ellas en la prosodia del texto a

sintetizar.

6.6.4.2 Análisis de las secuencias de control disponibles

A la hora de introducir una etiqueta de control dentro de la cadena de texto a

sintetizar se puede realizar de dos formas, en función del ámbito de aplicación de los

efectos que producen. La primera de ellas consiste en introducir una etiqueta en un

punto cualquiera de una frase, siendo el ámbito de aplicación de la misma desde el

principio de la frase en la que se ha insertado hasta el final del texto, o bien hasta que

se inserte otra etiqueta que sobrescriba las mismas variables. La otra forma de

introducir las etiquetas posee un ámbito de aplicación más flexible, ya que la unidad de

división en este caso es la palabra en vez de la frase, siendo además las etiquetas

anidables entre sí. Esta segunda forma de etiquetar hace necesario ampliar la sintaxis

añadiendo una etiqueta de cierre de la forma [letra:0], que delimita el fin de la zona de

aplicación de la etiqueta con la letra contenida.

Dependiendo del efecto de la secuencia de control en la prosodia del texto a

sintetizar, se pueden clasificar las etiquetas implementadas de forma:

Modificación del tono medio de la voz (Factor Aditivo)

El sintetizador dispone de dos etiquetas que permiten modificar la frecuencia media

de la fuente glotal. Se ha supuesto, para la implementación, que el valor medio del

tono de las unidades de voz pregrabadas es de 150 Hz, ya que se trata de habla

femenina.

120

Page 141: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Etiqueta de ámbito global

Etiqueta [t]Sintaxis [t:x] x=[100-200]

Parámetro

El término x representa la frecuencia media en Hertzios de la fuente glotal. Puede tomar un valor entre 100 Hz y 200 Hz. Si se escribe un número fuera de este rango se tomará por defecto 100 ó 200 según corresponda, es decir, sólo se aumenta o disminuye el tono en ±50Hz.

Ámbito de aplicación

La etiqueta actúa desde el inicio de la frase en que se encuentra hasta el final del texto o hasta el inicio de la frase en la que aparezca una nueva etiqueta [t]. Si aparecen distintas etiquetas [t] en una misma frase, el sistema sólo se considera la que aparece en último lugar.

TABLA 6: SECUENCIA DE CONTROL [T:X] (TONO GLOBAL DEL HABLA, FACTOR ADITIVO)

Ejemplo.- "Puedo aumentar el tono [t:260] medio de mi voz. Y también puedo

bajarlo [t:120]."

El sintetizador, en este caso, genera la primera frase aumentando la frecuencia

media del habla en 50Hz, es decir, aumenta el tono de cada uno de los fonemas en

50Hz respecto al valor calculado en el módulo de entonación. La segunda frase se

sintetiza de forma que se disminuye la frecuencia media de los mismos en 30Hz.

Etiqueta de ámbito local

Etiqueta [p]Sintaxis [p:x] x=[100-200], x=0

Parámetro

El término x representa la frecuencia media en Hertzios de la señal a sintetizar. Puede tomar un valor entre 100 Hz y 200 Hz. Si se escribe un número fuera de este rango se tomará por defecto 100 ó 200 según corresponda. La etiqueta que limita el fin de aplicación de la secuencia es [p:0].

Ámbito de aplicación

La etiqueta actúa desde la palabra posterior a la etiqueta de apertura hasta la palabra anterior a la etiqueta de cierre. Las etiquetas de apertura y cierre deben estar situadas en la misma frase. Es posible realizar el anidamiento de etiquetas [p] en la misma frase.

TABLA 7: SECUENCIA DE CONTROL [P:X] (TONO LOCAL DEL HABLA, FACTOR ADITIVO)

Ejemplo.- "Puedo decir palabras [p:195] con mayor frecuencia [p:0] que otras."

La frase sintetizada tendrá una frecuencia media 45Hz superior al resto en la zona

“con mayor frecuencia”. El resto de la frase tendrá la frecuencia media estimada por el

modulo de entonación del sintetizador.

121

Page 142: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Ejemplo.- "Puedo [p:350] anidar etiquetas de control [p:100] de este tipo [p:0] en

una [p:0] misma frase."

En este caso se aumenta el tono de las zonas “anidar etiquetas de control” y “en

una” 50Hz por encima del valor de frecuencia calculado por el sintetizador, y se

disminuye el tono en la zona “de este tipo” en 50Hz. El resto de la frase (zonas

“Puedo” y “misma frase”) se sintetiza de forma normal, con los valores previamente

calculados.

Modificación del tono medio de la voz (Factor Multiplicativo)

El sintetizador dispone de dos etiquetas que permiten modificar la frecuencia media

de la fuente glotal mediante la multiplicación de un determinado factor a la frecuencia

media de los fonemas que conforman el texto de entrada al sistema.

Etiqueta de ámbito global

Etiqueta [m]Sintaxis [m:x] x=[55-200]

Parámetro

El término x representa el tanto por ciento de variación de la frecuencia media de la fuente glotal respecto a la original. Puede tomar un valor entre 55% y 200 %. Si se escribe un número fuera de este rango se tomará por defecto 0,55 ó 2 según corresponda.

Ámbito de aplicación

La etiqueta actúa desde el inicio de la frase en que se encuentra hasta el final del texto o hasta el inicio de la frase en la que aparezca una nueva etiqueta [m]. Si aparecen distintas etiquetas [m] en una misma frase, el sistema sólo se considera la que aparece en último lugar.

TABLA 8: SECUENCIA DE CONTROL [M:X] (TONO GLOBAL DEL HABLA, FACTOR MULTIPLICATIVO)

Ejemplo.- "Puedo hablar normal. Duplicar el tono de mi voz [m:200]. E [m:50]

incluso reducirlo a casi la mitad."

La primera frase se genera de forma normal, es decir, el tono es el que le

corresponde según los ficheros de configuración de la emoción a implementar. La

segunda frase se genera con doble frecuencia media de la que le corresponde,

mientras que en la última frase se reduce el tono prácticamente a la mitad (factor

mínimo 0,55).

122

Page 143: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Etiqueta de ámbito local

Etiqueta [w]Sintaxis [w:x] x=[55-200], x=0

Parámetro

El término x representa el tanto por ciento de variación de la frecuencia media de la fuente glotal respecto a la original. Puede tomar un valor entre 55% y 200 %. Si se escribe un número fuera de este rango se tomará por defecto 0,55 ó 2 según corresponda. La etiqueta que limita el fin de aplicación de la secuencia es [w:0].

Ámbito de aplicación

La etiqueta actúa desde la palabra posterior a la etiqueta de apertura hasta la palabra anterior a la etiqueta de cierre. Las etiquetas de apertura y cierre deben estar situadas en la misma frase. Es posible realizar el anidamiento de etiquetas [w] en la misma frase.

TABLA 9: SECUENCIA DE CONTROL [W:X] (TONO LOCAL DEL HABLA, FACTOR MULTIPLICATIVO)

Ejemplo.- "Ahora voy a [w :150] aumentar el tono de mi voz [w :0] y ahora voy

[w :20] a reducirlo [w :0]."

El sintetizador modifica la frecuencia de los fonemas contenidos en “aumentar el

tono de mi voz” multiplicando la frecuencia inicial por un factor de 1,5 y en “a reducirlo”

donde multiplica por el factor 0,55. El resto de la frase no sufrirá las modificaciones

asociadas al efecto de la etiqueta.

Modificación de la velocidad de elocución

Existen dos etiquetas que modifican la velocidad de elocución mediante la

modificación de la duración de los fonemas de la cadena de texto. Antes de la

aplicación de la etiqueta, los fonemas tendrán la duración establecida en el módulo de

procesado de texto de entrada, donde se obtiene la prosodia de los fonemas, de

acuerdo a la velocidad parametrizada en el hilo de síntesis.

123

Page 144: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Etiqueta de ámbito global

Etiqueta [v]Sintaxis [v:x] x=[50-250]

Parámetro

El término x representa la velocidad media de habla en sílabas por minuto. Puede tomar un valor entre 50 y 250. Si se escribe un número fuera de este rango se aproximará por defecto a 50 ó 250 según corresponda.

Ámbito de aplicación

La etiqueta actúa desde el inicio de la frase en que se encuentra hasta el final del texto o hasta el inicio de la frase en la que aparezca una nueva etiqueta [v]. Si aparecen distintas etiquetas [v] en una misma frase, sólo se considerará la que aparece en último lugar.En caso de que en una misma frase aparezca una etiqueta de velocidad [v] y una etiqueta [e] asociada a la implementación de emociones, la velocidad de habla que presente el habla vendrá determinada por el efecto de la etiqueta que aparezca en último lugar.

TABLA 10: SECUENCIA DE CONTROL [V:X] (VELOCIDAD GLOBAL DE HABLA)

Ejemplo.- "Si quieres puedo leer muy rápido [v :180]. También [v :75] puedo leer

muy despacio."

El habla generada para la primera frase es muy rápida, mientras que en la segunda

frase el habla es muy lenta.

Etiqueta de ámbito local

Etiqueta [u]Sintaxis [u:x] x=[50-250] , x=0

Parámetro

El término x representa la velocidad media de habla en sílabas por minuto. Puede tomar un valor entre 50 y 250. Si se escribe un número fuera de este rango, se aproximará por defecto a 50 ó 250 según corresponda. Se utiliza [u:0] como etiqueta de cierre.

Ámbito de aplicación

La etiqueta actúa desde la palabra posterior a la etiqueta de apertura hasta la palabra anterior a la etiqueta de cierre. Las etiquetas de apertura y cierre deben estar situadas en la misma frase. Es posible realizar el anidamiento de etiquetas [u] en la misma frase.

TABLA 11: SECUENCIA DE CONTROL [U:X] (VELOCIDAD LOCAL DE HABLA)

Ejemplo.- "Lo voy a decir [u: 80] muy despacio [u: 0] para que me entiendas.”

En este caso, el habla generada en el tramo “muy despacio” tiene una velocidad de

80 sílabas por minuto, mientras que en el resto de la frase, la velocidad de elocución

es la parametrizada en el hilo de síntesis.

124

Page 145: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Introducción de emociones en el habla

Existe una etiqueta de control mediante la cual se puede implementar cierta

emoción en el texto de entrada. Así pues, dependiendo de la emoción inicial de las

unidades pregrabadas que se utilicen en la síntesis, se tendrán unos resultados u

otros. La secuencia de control tiene efecto tanto en la velocidad de elocución del texto,

como en la curva de entonación de la misma, ya que esta varía de acuerdo a la

emoción a implementar. Se han implementado las emociones: tristeza, alegría,

sorpresa, enfado o un estado neutral.

Se pueden obtener diferentes resultados dependiendo de la emoción de las

unidades de habla pregrabadas.

Etiqueta [e] Sintaxis [e:x] x=[1-5]

Parámetro

El término x se utiliza para seleccionar la emoción deseada. Las combinaciones posibles son:[e:1] TRISTEZA [e:2] NEUTRA [e:3] ALEGRÍA[e:4] SORPRESA [e:5] ENFADOLa relación existente entre el valor del parámetro y la emoción asociada queda determinada en la sección [EMOCIONES] del fichero de inicialización “pros.ini”.Si se escribe un valor fuera de los definidos en el rango se considerará como si no se hubiera escrito nada.

Ámbito de aplicación

La etiqueta actúa desde el inicio de la frase en que se encuentra, hasta el final del texto o hasta el inicio de la frase en la que aparece una nueva etiqueta [e].Si hay varias etiquetas [e] en una misma frase, sólo se considerará la que aparece en último lugar.

TABLA 12: SECUENCIA DE CONTROL [E:X] (EMOCIONES)

Ejemplo.- "Cuando [e :1]estoy triste. No hablo en [e :2]tono neutro.”

En este caso en la primera frase el robot hablaría con tristeza, mientras que en la

segunda expresaría alegría.

Introducción de grados en las emociones

Durante el desarrollo de este proyecto se ha incorporado una nueva etiqueta que

permite introducir un estado gradual en las emociones, de modo que éstas puedan

manifestarse con distintos niveles.

Etiqueta [n]

125

Page 146: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Sintaxis [n:x] x=[0-100]

Parámetro

El término x representa el porcentaje en el que se desea que aparezca la emoción indicada por la etiqueta [e], respecto de un estado de emoción neutra.

Ámbito de aplicación

La etiqueta actúa desde el inicio de la frase en que se encuentra, hasta el final del texto o hasta el inicio de la frase en la que aparece una nueva etiqueta [n]. Si hay varias etiquetas [n] en una misma frase, sólo se considerará la que aparece en último lugar.

TABLA 13: SECUENCIA DE CONTROL [N:X] (GRADOS EN EMOCIONES)

Ejemplo.- “Cuando [e :1] estoy[n: 30] muy triste. Hablo [e :1] de [n: 100] forma

muy triste.”

En este caso la primera frase se recitaría con una emoción tristeza en una

proporción del 30% y en la segunda se recita con un factor del 100%.

Introducción de pausas

Se dispone de una etiqueta que permite introducir pausas a lo largo del texto, lo que

puede servir para enfatizar las palabras que siguen a la pausa o para simular un

momento de reflexión del locutor.

Etiqueta [b] Sintaxis [b:x]

Parámetro

El término x representa la duración de la pausa en décimas de segundo.

Ámbito de aplicación

El efecto de la etiqueta de pausa tiene lugar en el momento en que aparece la etiqueta.

TABLA 14: SECUENCIA DE CONTROL [B:X] (INTRODUCCIÓN DE PAUSAS)

Ejemplo.- " Si quieres puedo parar [b :6] y seguir cuando estés listo.”

El sistema genera una pausa de duración 0,6 s entre las palabras “parar” e “y” del

texto de entrada.

6.6.5 INTRODUCCIÓN DE EMOCIONES CON DISTINTO GRADO

Como se comentó en el apartado 3.3 de esta memoria, existen dos enfoques para

la clasificación de las emociones, el enfoque que las supone discretas y únicas frente

al resto y el que las supone continuas de forma que se pueden caracterizar en un

espacio bidimensional como el de la circunferencia de Russell.

126

Page 147: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

En el proyecto se han implementado 5 emociones de forma discreta: estado neutro,

alegría, tristeza, enfado y sorpresa. Como valor añadido a la implementación y para

asemejar el modelo utilizado en el proyecto con el enfoque que se describe a las

emociones como estados continuos, se han introducido grados en las emociones, de

modo que al expresar una determinada emoción en el texto de entrada al sintetizador,

se le pueda indicar también en qué grado o intensidad se desea que aparezca la

citada emoción.

Como se ya se ha indicado anteriormente, los coeficientes que se encuentran en

los ficheros de inicialización y que hacen alusión a la duración de los fonemas, la

entonación y la velocidad de elocución, varían dependiendo de la emoción a

implementar en cada caso. Por tanto, para denotar los diferentes grados de cada una

de las emociones se realizará una mezcla de los valores necesarios en cada caso

para la emoción a implementar por medio de las etiquetas de control con el fichero de

control asociado a la emoción base que dependerá de la base de datos utilizada en

cada caso.

Por tanto, para implementar los grados en las emociones, se toma el valor asignado

al coeficiente de interés del fichero de inicialización del estado neutro y del fichero de

inicialización asociado a la emoción a implementar y se realiza un promedio de los dos

valores, de modo que el coeficiente de la emoción implementada se encuentre en la

proporción que indicada por la etiqueta de control de grado de emoción.

Ejemplo.- “Hablo así porque [e :1] no estoy[n: 30] muy triste.”

De acuerdo con las etiquetas indicadas y según lo expuesto en el apartado anterior,

el sistema sintetiza la frase “Hablo así porque no estoy muy triste” con emoción

tristeza (basada en un corpus neutro) en un grado de intensidad del 30%.

A la hora de determinar el valor de entonación asociado al primer pico del grupo

fónico, el sistema accede al coeficiente PICO1 en la sección [ENTONACION] del

fichero de inicialización de la emoción tristeza (triste.ini). En este caso, el valor

obtenido es 113 Hz. También se accede al mismo parámetro del fichero asociado a la

emoción neutra normal.ini que en este caso tiene un valor de 136 Hz. Una vez que se

han leido estos dos coeficientes el valor que finalmente se almacenará en la variable

correspondiente será 113∗0,3+136∗0,7=129,1Hz .

127

Page 148: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

La etiqueta de grado de emoción afectará a aquellos coeficientes que resultan clave

para la caracterización de los estados emocionales, y que son los siguientes:

Coeficientes de duración

coef48 coef49 coef50

ult_palabra acent_oxiton acent_no_oxi

sil_final_no_oxi sil_acentuada

Coeficiente de velocidad de elocución

vel_elocu

Coeficientes relativos a la entonación

PICO1 VALLE1 PENPIC PENVAL

TON1V TON1T TON1F

TON1_pV TON1_pT TON1_pF TON1_oT

128

Page 149: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

7. IMPLEMENTACIÓN DE EMOCIONES EN EL HABLA El sintetizador inicial de partida de este proyecto, contenía una base de datos de

difonemas de habla masculina y el modelado prosódico que se realizaba estaba

basado en los resultados obtenidos de las redes neuronales del mismo. Como ya se

ha detallado, el objetivo del proyecto ha consistido en dotar al sintetizador de

emociones y para ello se han utilizado diferentes bases de datos de difonemas con

habla femenina para las emociones a implementar, y se ha añadido un nuevo módulo

de prosodia, heredado del sintetizador por formantes, que modifica los valores de tono

y duraciones obtenidos por las redes neuronales ya existentes, mediante una serie de

ficheros de inicialización que contienen la información característica de la prosodia

asociada a cada una de ellas.

En esta parte de la memoria se detalla el proceso seguido para la obtención de los

nuevos valores prosódicos característicos del habla femenina en estado neutro y en

cada una de las emociones implementadas: alegría, tristeza, sorpresa y enfado.

7.1 Corpus S.E.S.

A la hora de analizar las características de cada una de las emociones de interés se

han estudiado, para cada emoción, una serie de frases pertenecientes a la base de

datos disponible S.E.S., de las que se han obtenido un conjunto de parámetros

característicos de cada emoción. La base de datos contiene, para cada una de las

emociones, un conjunto de tres niveles de emoción, en el que cada uno de ellos

consta de 15 frases grabadas por la misma actriz que grabó el corpus de logatomos de

los que se han obtenido las bases de datos de emociones. Así pues, se dispone en

total de 45 frases para cada emoción, excepto para la voz normal, para la que sólo se

cuenta con un nivel de 15 frases.

Aunque la base de datos S.E.S. también cuenta con párrafos grabados en tres

niveles de intensidad para cada una de las emociones, no se han utilizado para el

análisis. Las frases pertenecientes al corpus que se han utilizado en el proceso son las

siguientes:

No queda fruta los viernes.

El final del siglo veinte.

La puerta tiene cerrojo.

Tengo la llave en el bolsillo.

Gozan de perfecta salud.

Vivirás una feliz experiencia.

129

Page 150: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Le gusta mucho el gregoriano.

Llegó la reina del puño cerrado.

Las herramientas que se han utilizado para realizar el análisis de las grabaciones

de la base de datos son, por un lado, el programa Praat que como ya se ha indicado,

permite la visualización y el análisis del habla y, por otro lado, el programa

GeneraParPcm.exe que obtiene el fichero de extensión *.par con información de la

duración y la entonación de cada frase, a partir del fichero de audio y el fichero de

marcas y etiquetas asociados.

Estos ficheros generados son los utilizados para el modelado prosódico del habla

generada en cada emoción.

7.2 Estructura de los ficheros de inicialización de emociones

Para la implementación de las emociones en el sintetizador, además de las distintas

bases de datos utilizadas para cada una de las emociones, es necesario la utilización

de ficheros de inicialización *.ini. Estos archivos son generados de forma manual y

contienen los valores obtenidos del estudio prosódico de las frases de muestra

pertenecientes al corpus S.E.S.

Los ficheros de inicialización están formados por una serie de secciones,

identificadas por el nombre de la sección entre corchetes. Dentro de cada sección

aparece una lista de asociaciones de tipo “NombreParametro = ValorAsociado”. Los

ficheros que se van a utilizar para la implementación de las emociones del sintetizador

son: pros.ini, alegre.ini, normal.ini, triste.ini, sorpresa.ini y enfado.ini. El nombre del fichero de inicialización de la emoción a implementar se almacena en

la variable global fich_inicializ. Esta variable por defecto, contiene el nombre del

fichero de inicialización asociado al estado neutro, neutra.ini, y varía dependiendo de

la emoción a sintetizar.

En cada uno de los ficheros de inicialización correspondientes a cada una de las

emociones se tienen las siguientes secciones:

- [ENTONACION]: Contiene el conjunto de parámetros que modelan la

entonación de una frase o grupo fónico cuando este sólo consta de una

tónica y cuando consta de más de una tónica.

- [ENTON_PRINCIPIO]: Los parámetros listados en esta sección contienen

los valores del tono asociado al primer fonema de un grupo fónico o frase

cuando estos tienen más de una tónica. Los valores de tono varían

dependiendo del signo de puntuación final que limita el grupo.

130

Page 151: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

- [ENTON_VTF_TONICA]: Contiene información del tono asignado al último

pico del grupo fónico dependiendo del signo de puntuación final y de si la

última palabra es oxítona o no.

- [ENTON_VTF_VALLE]: Igual al anterior pero en este caso se modela el

último valle del grupo.

- [ENTON_VTF_FINAL]: La lista de coeficientes de esta sección modelan el

tono asociado al último fonema del grupo fónico, dependiendo del signo de

puntuación final y de si la última palabra del grupo es oxítona o no.

- [DURACION]: Esta sección contiene los valores de los coeficientes que

modifican las duraciones de algunos fonemas de la frase dependiendo del

contexto de los mismos.

- [PAUSAS]: Detalla las duraciones en milisegundos de las pausas

dependiendo de si el signo ortográfico es una coma, un punto ó un punto y

coma.

- [VELOCIDAD]: Contiene el valor de la velocidad de elocución para la

emoción a sintetizar.

- [TONO]: Contiene el valor del tono medio de la emoción modelada en el

fichero. Se utiliza a la hora de establecer los diferentes grados en las

emociones.

El archivo pros.ini se usa en el tratamiento de la secuencia de control asociada a la

implementación de emociones en la voz neutra y que, como se vio en el capítulo

anterior, es de la forma “[e:parámetro]”. El fichero de inicialización contiene la

asignación de cada parámetro a un fichero de inicialización de una determinada

emoción. Por tanto, dentro de pros.ini se accede a la sección [Emociones] que

contiene la lista de asociaciones entre los parámetros y los ficheros de inicialización

asociados. La lista contenida en el fichero es:

- Emocion1=normal.ini

- Emocion2=triste.ini

- Emocion3=alegre.ini

- Emocion4=sorpresa.ini

- Emocion5=enfado.ini

Todos los valores contenidos en los ficheros de inicialización son leídos y

almacenados en memoria mediante las funciones TPortError DameProfileDouble

(const char * NombreFichero, const char * Seccion, const char * Parametro, double

Defecto, double *Destino, BOOL verbose), TPortError DameProfileString (const char *

131

Page 152: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

NombreFichero, const char * Seccion, const char * Parametro, const char * Defecto,

char * Destino, int16 Cuantos, BOOL verbose) o TPortError DameProfileShort (const

char * NombreFichero, const char * Seccion,const char * Parametro, short Defecto,

short *Destino, BOOL verbose). Estas funciones buscan un coeficiente de nombre

Parametro dentro de la sección Seccion del fichero de inicialización NombreFichero y

copian el valor de ese coeficiente, que dependiendo de la función utilizada será de tipo

double, string ó short, en la variable Destino. Si no encuentra el coeficiente buscado

dentro del fichero, copia el valor Defecto en la variable pasada como argumento

Destino. Mediante la variable verbose la función muestra mensajes de error en el caso

de que aparezca algún problema durante el proceso de lectura.

7.3 Modelado prosódico del estado neutro

A continuación se detalla el proceso seguido para la obtención de los valores de

entonación y duración que hay que aplicar a los obtenidos a partir de la red neuronal

para una mejora en la caracterización del habla.

7.3.1 CARACTERIZACIÓN DEL ESTADO NEUTRO

De las frases escogidas para el estudio de la prosodia que caracteriza las

emociones, se han utilizado para el análisis del estado neutro, las siguientes:

No queda fruta los viernes.

El final del siglo veinte.

Tengo la llave en el bolsillo.

Gozan de perfecta salud.

Vivirás una feliz experiencia.

Le gusta mucho el gregoriano.

Llegó la reina del puño cerrado.

Sobre cada una de estas frases se ha realizado un estudio con el objetivo de

obtener las características prosódicas que definen el estado neutro en cada caso. Así,

a partir de cada frase se han obtenido los valores de los parámetros contenidos en el

fichero de inicialización que caracterizaría el estado neutro. Una vez obtenidos los

valores que caracterizan cada una de las frases se ha realizado la media entre ellos

para obtener unos valores, que aunque no sean reales, si sean los que más se ajusten

a todas las frases y que así ofrezcan los mejores resultados globales.

132

Page 153: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

“No queda fruta los viernes”

Los valores de prosodia obtenidos del estudio realizado, permitirán que el

resultado de la síntesis de la frase “No queda fruta los viernes” sea lo más similar

posible a la grabación de la actriz que se muestra en la siguiente figura.

FIGURA 30: GRABACIÓN FRASE “NO QUEDA FRUTA LOS VIERNES.” CON EMOCIÓN NEUTRA

Al escuchar la grabación se observa como la actriz resalta la palabra inicial

“no”, comenzando con un tono alto y disminuyendo el valor del mismo a lo largo

de la frase. Se puede ver que durante toda la frase, no se producen grandes

variaciones en el tono de los fonemas ni en la duración de los mismos. Esta

estabilidad en la curva de tono se puede considerar como la principal

característica del estado neutro.

Si se realiza un estudio del fichero *.par con información de la duración y la

entonación de la frase se observa que:

ENTONACIÓN

La frase o el grupo fónico “No queda fruta los viernes.” contiene 4 tónicas

contenidas en las palabras: no, queda, fruta, viernes. Al estudiar el fichero de

información prosódica y analizar el valor de la frecuencia fundamental en el primer

y último fonema del grupo fónico así como en los distintos picos y valles que

aparecen, se obtiene que, de manera aproximada, los parámetros que modelan la

entonación de esta frase son:

133

Page 154: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Tono en el 1er fonema 190 HzTono en el 1er pico 205 HzTono en el 1er valle 95 HzPendiente de picos 75Pendiente de valles 0Tono en el último valle 95 HzTono en el último pico 130 HzTono en el último fonema 110 Hz

TABLA 15: PARÁMETROS ENTONACIÓN "NO QUEDA FRUTA LOS VIERNES" (ESTADO NEUTRO)

A su vez, el tono medio de la frase tiene un valor en torno a los 167 Hz y la

velocidad de elución se estima en 150 silabas /min.

“El final del siglo veinte”

Al analizar la grabación correspondiente al estado neutro para esta frase se

observa como la actriz enfatiza las dos primeras palabras del grupo, dotándolas

de una mayor intensidad y tono que el resto. El valor de la curva disminuye a lo

largo de la frase. En la siguiente figura se puede apreciar lo comentado:

FIGURA 31: GRABACIÓN FRASE “EL FINAL DEL SIGLO VEINTE” CON ESTADO NEUTRO

Al igual que en el caso anterior, no se producen grandes variaciones en la

duración de los fonemas ni en el tono de los mismos. El análisis del fichero de

valores con la curva de entonación y las duraciones de los fonemas ha arrojado

los siguientes resultados:

134

Page 155: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

ENTONACIÓN

La frase “El final del siglo veinte” tiene 3 tónicas contenidas en final, siglo,

veinte y queda caracterizada por los valores:

Tono en el 1er fonema 170 HzTono en el 1er pico 185 HzTono en el 1er valle 130 HzPendiente de picos 50Pendiente de valles 20Tono en el último valle 100 HzTono en el último pico 135 HzTono en el último fonema 107 Hz

TABLA 16: PARÁMETROS ENTONACIÓN "EL FINAL DEL SIGLO VEINTE" (ESTADO NEUTRO)

El tono medio de la frase queda establecido en torno a 150 Hz , siendo mayor

en el caso de las palabras “el” y “final” y algo menor en el resto de palabras que

forman el grupo. La velocidad de elocución de la actriz para la pronunciación de

esta frase es de 145 silabas /min.

“Tengo la llave en el bolsillo”

A continuación se muestra la grabación analizada para la frase “Tengo la llave

en el bolsillo”:

FIGURA 32: GRABACIÓN FRASE “TENGO LA LLAVE EN EL BOLSILLO” EN ESTADO NEUTRO

Como se puede observar en la figura, la actriz comienza la grabación con un

tono de habla muy elevado (curva de tono en azul en la figura) y éste va

135

Page 156: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

disminuyendo poco a poco a lo largo de la frase hasta alcanzar unos valores más

comunes. La curva de tono no presenta grandes variaciones ni inestabilidad y sólo

cabe destacar, al igual que el resto de casos, que la actriz hace énfasis en la

primera palabra del grupo fónico “Tengo”. Los resultados obtenidos del análisis del

fichero *.par son los siguientes:

ENTONACIÓN

La frase “Tengo la llave en el bolsillo” tiene 3 tónicas contenidas en tengo,

llave, bolsillo y tras la medida del valor de frecuencia fundamental en los distintos

valles y picos, se obtiene que los parámetros que mejor caracterizan la entonación

en la frase son:

Tono en el 1er fonema 175 HzTono en el 1er pico 205 HzTono en el 1er valle 180 HzPendiente de picos 55Pendiente de valles 20Tono en el último valle 140 HzTono en el último pico 150 HzTono en el último fonema 105 Hz

TABLA 17: PARÁMETROS ENTONACIÓN "TENGO LA LLAVE EN EL BOLSILLO" (ESTADO NEUTRO)

El tono medio de la frase es de 170 Hz y la velocidad de elocución media se

puede estimar en torno a 190 silabas /min.

“Gozan de perfecta salud”

Esta frase es muy similar a la anterior. En ella la actriz hace un especial

hincapié en la primera sílaba tónica del grupo fónico y continua con la

pronunciación de la frase de forma que el tono va disminuyendo a lo largo de la

misma. En la siguiente figura se puede observar la curva de tono generada por el

programa Praat (en azul) para la grabación del habla.

136

Page 157: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 33: GRABACIÓN FRASE “GOZAN DE PERFECTA SALUD.” CON EMOCIÓN NEUTRA

Al realizar el estudio del fichero que contiene información de la duración y la

entonación de la frase se observa que:

ENTONACIÓN

La frase “Gozan de perfecta salud.” contiene 3 tónicas que se dan en las

palabras: Gozan, perfecta, salud. Los parámetros obtenidos que modelan la

entonación de esta frase son:

Tono en el 1er fonema 160 HzTono en el 1er pico 190 HzTono en el 1er valle 180 HzPendiente de picos 70Pendiente de valles 110Tono en el último valle 125 HzTono en el último pico 120 HzTono en el último fonema 110 Hz

TABLA 18: PARÁMETROS ENTONACIÓN "GOZAN DE PERFECTA SALUD" (ESTADO NEUTRO)

El tono medio de la frase tiene un valor en torno a los 163 Hz y la velocidad de

elución se estima en 190 silabas /min.

“Vivirás una feliz experiencia”

Al analizar la grabación de esta frase se puede observar como la actriz parece

dar énfasis a la primera palabra de la frase, puesto que aumenta la intensidad y el

137

Page 158: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

tono de la misma. A partir de ahí se puede ver como la pendiente de la curva de

tono es negativa, teniendo menor tono al finalizar la frase. En la figura se puede

observar la señal de voz grabada para esta frase y la curva de entonación de la

misma (en color azul) generada por el programa Praat utilizado para la

visualización de la misma.

FIGURA 34: GRABACIÓN FRASE “VIVIRÁS UNA FELIZ EXPERIENCIA” EN ESTADO NEUTRO

Al analizar los rasgos característicos de la entonación mediante el análisis del

archivo *.par se obtienen los siguientes resultados:

ENTONACIÓN

La frase comprende 4 tónicas contenidas en las palabras vivirás, una, feliz,

experiencia y los valores que mejor caracterizan la entonación de la frase son:

Tono en el 1er fonema 175 HzTono en el 1er pico 190 HzTono en el 1er valle 160 HzPendiente de picos 70Pendiente de valles 45Tono en el último valle 115 HzTono en el último pico 120 HzTono en el último fonema 117 Hz

TABLA 19: PARÁMETROS ENTONACIÓN "VIVIRÁS UNA FELIZ EXPERIENCIA" (ESTADO NEUTRO)

El tono medio de la frase tiene un valor de 158 Hz y la velocidad de elocución

de la misma puede establecerse en 170 silabas /min.

138

Page 159: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

“Le gusta mucho el gregoriano”

La entonación de la frase comienza subiendo hasta la primera tónica, y a partir

de ahí, va disminuyendo de forma similar al resto de casos estudiados. Este

comportamiento se puede observar en la siguiente figura, en la que se muestra la

frase grabada por la actriz junto con la curva de tono generada por el programa

Praat.

FIGURA 35: GRABACIÓN FRASE “LE GUSTA MUCHO EL GREGORIANO” EN ESTADO NEUTRO

Analizando el fichero *.par generado a partir de la grabación se obtienen los

siguientes resultados:

ENTONACIÓN

La frase de estudio contiene 4 sílabas tónicas que se presentan en las

palabras gusta, mucho, gregoriano y los valores que mejor se ajustan al modelo

de la curva de entonación de la misma son:

Tono en el 1er fonema 180 HzTono en el 1er pico 195 HzTono en el 1er valle 170 Hz

139

Page 160: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Pendiente de picos 75Pendiente de valles 20Tono en el último valle 150 HzTono en el último pico 120 HzTono en el último fonema 100 Hz

TABLA 20: PARÁMETROS ENTONACIÓN "LE GUSTA MUCHO EL GREGORIANO" (ESTADO NEUTRO)

El tono medio de la frase se ha estimado en torno a los 156 Hzy la velocidad de

elocución de la misma por parte de la actriz es de 153 silabas /min.

“Llegó la reina del puño cerrado”

En esta última frase se puede observar como la actriz ha dado énfasis tanto a

la primera como a la última sílaba tónica del grupo fónico. En la figura posterior se

puede ver como la intensidad de la primera y última palabra del grupo aumenta

con respecto al resto.

FIGURA 36: GRABACIÓN FRASE “LLEGÓ LA REINA DEL PUÑO CERRADO” EN ESTADO NEUTRO

Se puede apreciar también la diferencia de tono entre los valles y los picos de

la frase y que la pendiente de los valles de la misma va a ser positiva. Al igual que

para las anteriores frases, el resultado de analizar el fichero de información de la

prosodia es:

ENTONACIÓN

La entonación viene modelada por los siguientes parámetros:

Tono en el 1er fonema 184 Hz

140

Page 161: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Tono en el 1er pico 190 HzTono en el 1er valle 165 HzPendiente de picos 60Pendiente de valles -20Tono en el último valle 175 HzTono en el último pico 130 HzTono en el último fonema 100 Hz

TABLA 21: PARÁMETROS ENTONACIÓN "LLEGÓ LA REINA DEL PUÑO CERRADO" (ESTADO NEUTRO)

El tono medio de la frase es de 164 Hz y la velocidad de elocución se establece

en 157 silabas /min.

Analizadas estas 6 grabaciones es fácil observar como la emoción alegría no queda

caracterizada por un patrón único, sino que para cada una de las frases la actriz se

sirve de distintos matices para transmitir la emoción.

Una vez que se tienen los modelos generados para la implementación de la

emoción o estado neutro, se ha realizado una media de los valores de aquellos

modelos que sean similares para poder obtener valores que aunque no sean los reales

si sean lo más ajustados posible al modelo a caracterizar. En la siguiente tabla se

muestran todos los valores de entonación obtenidos, y en ella se puede apreciar como

la última frase, “Llegó la reina del puño cerrado”, difiere del modelo común en el que

se contempla una pendiente de valles negativa. Por tanto los valores obtenidos para

esta frase no se tendrán en cuenta a la hora de realizar los cálculos.

Parámetros Frase 1 Frase 2 Frase 3 Frase 4 Frase 5 Frase 6 Frase 7Tono en el 1er fonema 190 Hz 170 Hz 175 Hz 160 Hz 175 Hz 180 Hz 184 HzTono en el 1er pico 205 Hz 185 Hz 205 Hz 190 Hz 190 Hz 195 Hz 190 HzTono en el 1er valle 95 Hz 130 Hz 180 Hz 180 Hz 160 Hz 170 Hz 165 HzPendiente de picos 75 50 55 70 70 75 60Pendiente de valles 0 20 20 110 45 20 -20Tono en el último valle 95 Hz 100 Hz 140 Hz 125 Hz 115 Hz 150 Hz 175 HzTono en el último pico 130 Hz 135 Hz 150 Hz 120 Hz 120 Hz 120 Hz 130 HzTono en el último fonema 110 Hz 107 Hz 105 Hz 110 Hz 117 Hz 100 Hz 100 Hz

TABLA 22: RESUMEN PARÁMETROS ENTONACIÓN ESTADO NEUTRO

El modelo final obtenido al realizar la media de las 6 primeras frases analizadas es:

Parámetros Frase 1 Frase 2 Frase 3 Frase 4 Frase 5 Frase 6 Media

141

Page 162: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Tono en el 1er fonema 190 Hz 170 Hz 175 Hz 160 Hz 175 Hz 180 Hz 175 HzTono en el 1er pico 205 Hz 185 Hz 205 Hz 190 Hz 190 Hz 195 Hz 195 HzTono en el 1er valle 95 Hz 130 Hz 180 Hz 180 Hz 160 Hz 170 Hz 153 HzPendiente de picos 75 50 55 70 70 75 66Pendiente de valles 0 20 20 110 45 20 2613

Tono en el último valle 95 Hz 100 Hz 140 Hz 125 Hz 115 Hz 150 Hz 121 HzTono en el último pico 130 Hz 135 Hz 150 Hz 120 Hz 120 Hz 120 Hz 129 HzTono en el último fonema 110 Hz 107 Hz 105 Hz 110 Hz 117 Hz 100 Hz 108 Hz

TABLA 23: CARACTERIZACIÓN DE LA ENTONACIÓN DEL ESTADO NEUTRO

Al realizar la media de las velocidades de elocución utilizadas en los modelos y del

tono medio de los mismos se obtiene que:

vel_elocu = 165 ; tono_medio = 160

Tras realizar un conjunto de pruebas con este modelo, se han realizado una serie

de modificaciones. Así, se observa que las duraciones de los archivos sintetizados son

menores que las de las grabaciones que se han utilizado para la obtención del modelo,

por lo que se ha aumentado el valor del parámetro correspondiente en el fichero de

inicialización del estado neutro.

vel_elocu = 185

7.4 Modelado prosódico de la emoción alegría

La alegría surge cuando un objeto o acontecimiento se evalúa como deseable o

favorable para la obtención de determinadas metas u objetivos. Al analizar las frases

de estudio de la base de datos S.E.S. se han obtenido las siguientes características

generales del habla alegre:

El tono utilizado por la actriz es más alto que el utilizado en el estado neutro,

dando lugar a un incremento general del valor del tono medio. También se

produce una mayor variación entre los valores de frecuencia, aumentando el

margen de oscilación.

La velocidad del habla aumenta de forma considerable respecto al estado

neutro. Se disminuyen el número y la duración de las pausas. También se

aumenta el volumen o la intensidad de la voz.

13 En el cálculo del valor medio de la pendiente de valles caracterizada en el modelo, no se han tenido en cuenta los valores obtenidos de la frase 1 ni de la frase 4 ya que difieren enormemente del resto.

142

Page 163: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

7.4.1 CARACTERIZACIÓN DE LA EMOCIÓN ALEGRÍA

En el análisis de las grabaciones disponibles para la emoción alegría se observa

como la curva de tono no se ajusta a un único modelo, sino que varía dependiendo de

dónde la actriz decida poner el foco del grupo fónico o de la frase. Es decir, una misma

frase puede ser expresada de distinta forma dependiendo del modelo de entonación

utilizado. Las frases correspondientes a la base de datos S.E.S. que se han utilizado

en el estudio de la emoción alegría son:

No queda fruta los viernes.

El final del siglo veinte.

Tengo la llave en el bolsillo.

Vivirás una feliz experiencia.

Le gusta mucho el gregoriano.

Llegó la reina del puño cerrado.

Sobre cada una de estas frases se ha realizado un estudio similar al realizado en la

caracterización del estado neutro con el objetivo de obtener las características

prosódicas que definen la emoción alegría en cada caso. De igual modo que en el

caso anterior, se obtendrán los valores de los parámetros que forman un posible

fichero de inicialización y una vez obtenidos todos los parámetros para las seis frases

de ejemplo se calcula la media de aquellos modelos de entonación que sean similares

entre sí, para poder obtener un modelo de entonación que se ajuste lo más fielmente

posible a todas las frases, con el fin de obtener los mejores resultados globales.

“No queda fruta los viernes”

Con el análisis de la frase se pretende conseguir una serie de parámetros que

hagan que la frase generada por el sintetizador se ajuste lo máximo posible a la

grabación obtenida de la actriz y que se muestra en la figura siguiente.

143

Page 164: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 37: GRABACIÓN FRASE “NO QUEDA FRUTA LOS VIERNES” EN EMOCIÓN ALEGRÍA

En este caso al escuchar la grabación se observa como la actriz resalta

principalmente tres palabras “no”, “fruta” y “viernes”. También se puede ver cómo

comienza con un tono bastante elevado y su valor medio va disminuyendo a lo

largo de la sentencia, y cómo se produce mayor variación de la frecuencia en los

distintos tramos de la señal.

A la hora de escoger algún rasgo importante de la grabación que aporte alegría

al habla, se ha tomado el aumento de la frecuencia media en la frase y el aumento

del tono en el final de misma. Este aspecto puede observarse en la curva de tono

obtenida por Praat (color azul) de la figura anterior. En ella se ve la tendencia

positiva de la curva en los fonemas finales de la frase pertenecientes a la palabra

“viernes”.

Si estudiamos el archivo de información de frecuencia y duración obtenido

mediante el programa GeneraParPcm.exe se pueden obtener los siguientes

parámetros que modelan la entonación de la grabación:

ENTONACIÓN

En el grupo fónico “No queda fruta los viernes.” aparecen 4 tónicas contenidas

en las palabras no, queda, fruta, viernes. Al analizar el archivo de información

*.par se han obtenido el valor de la frecuencia fundamental en el primer y último

fonema del grupo fónico así como en los distintos picos y valles que aparecen,

modelando la entonación de este grupo mediante los valores:

144

Page 165: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Tono en el 1er fonema 300 HzTono en el 1er pico 245 HzTono en el 1er valle 160 HzPendiente de picos 80Pendiente de valles 0Tono en el último valle 160 HzTono en el último pico 165 HzTono en el último fonema 140 Hz

TABLA 24: PARÁMETROS ENTONACIÓN "NO QUEDA FRUTA LOS VIERNES" (EMOCIÓN ALEGRÍA)

El tono medio de la frase queda establecido en 205 Hz, demostrando ser

superior al tono medio en el estado neutro. La velocidad de elocución estimada es

de 190 silabas /min.

“El final del siglo veinte”

Al escuchar la grabación se aprecia como la actriz resalta las sílabas tónicas de

la sentencia aumentando el tono de las mismas de forma notable y alargando la

duración de las mismas. Este rasgo se puede apreciar de una forma clara en la

palabra “final”. En la figura se muestra la grabación analizada con el programa

Praat, y en la misma se puede apreciar el aumento del tono e intensidad de la voz

en las sílabas tónicas.

FIGURA 38: GRABACIÓN FRASE “EL FINAL DEL SIGLO VEINTE” CON LA EMOCIÓN ALEGRÍA

Los parámetros que modelan la entonación de la frase se muestran a

continuación.

145

Page 166: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

ENTONACIÓN

En el grupo fónico “El final del siglo veinte.” aparecen 3 tónicas contenidas en

las palabras final, siglo, veinte. Al analizar el archivo de información *.par se han

obtenido el valor de la frecuencia fundamental en el primer y último fonema del

grupo fónico así como en los distintos picos y valles que aparecen, modelando la

entonación de este grupo mediante los valores:

Tono en el 1er fonema 272 HzTono en el 1er pico 232 HzTono en el 1er valle 220 HzPendiente de picos 70Pendiente de valles 60Tono en el último valle 160 HzTono en el último pico 162 HzTono en el último fonema 169 Hz

TABLA 25: PARÁMETROS ENTONACIÓN "EL FINAL DEL SIGLO VEINTE" (EMOCIÓN ALEGRÍA)

El valor del tono medio de la grabación con habla expresando alegría es de

195 Hz y la velocidad de elocución de la misma se establece en un valor de

179 silabas /min.

“Tengo la llave en el bolsillo”

Si observamos la curva de tono que se muestra en la figura 39, se puede ver

como existen dos zonas diferenciadas en la grabación: la primera de ellas tiene un

tono muy alto, alrededor a 250 Hz, mientras que la segunda de ellas tiene un tono

muy similar al del estado neutro, rondando los 165 Hz. En este caso, la actriz

mantiene un tono más o menos estable hasta la última palabra del grupo en la

cual disminuye el tono de forma continua.

146

Page 167: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 39: GRABACIÓN FRASE “TENGO LA LLAVE EN EL BOLSILLO” CON EMOCIÓN ALEGRÍA

No hay ningún aspecto destacable a la hora de dotar de emoción a la

grabación salvo el aumento de tono, aunque hay que mencionar que parece

producirse un alargamiento en la primera y última sílaba tónica del grupo, es decir,

en las sílabas “ten” y “si”. Los parámetros que caracterizan la entonación de la frase se muestran a

continuación y son obtenidos mediante el análisis del fichero generado por el

programa GeneraParPcm.exe:

ENTONACIÓN

En la frase “Tengo la llave en el bolsillo.” aparecen 3 tónicas contenidas en las

palabras tengo, llave, bolsillo. Teniendo esto en cuenta y después de estudiar el

fichero asociado con la información de la frecuencia a lo largo de la frase, se han

determinado los siguientes valores para el modelo de la entonación:

Tono en el 1er fonema 290 HzTono en el 1er pico 282 HzTono en el 1er valle 250 HzPendiente de picos 102Pendiente de valles 156Tono en el último valle 172 HzTono en el último pico 180 HzTono en el último fonema 145 Hz

TABLA 26: PARÁMETROS ENTONACIÓN "TENGO LA LLAVE EN EL BOLSILLO" (EMOCIÓN ALEGRÍA)

147

Page 168: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

En la tabla se puede ver la gran variación comentada anteriormente entre el

valor de frecuencia en el primer pico del grupo y en el último pico del mismo.

El tono medio de la frase queda establecido en 230 Hz y la velocidad de

elocución es de 205 silabas /min.

“Vivirás una feliz experiencia”

En esta frase, la actriz enfatiza de forma notable la palabra “feliz”, otorgando al

grupo de un toque alegre. Esto se puede apreciar en la siguiente figura, donde

también se puede ver cómo la primera tónica tiene una intensidad mayor al resto

de los fonemas.

FIGURA 40: GRABACIÓN FRASE “VIVIRÁS UNA FELIZ EXPERIENCIA” CON EMOCIÓN ALEGRÍA

Al igual que ocurría en el caso anterior, el tono utilizado por la actriz disminuye

en la última palabra de la frase. En este caso, también se aprecia un alargamiento

en el último fonema del grupo, así como en las tónicas del mismo.

Al analizar de forma concreta la frecuencia en cada instante de la frase, se han

obtenido los siguientes resultados:

ENTONACIÓN

En la frase “Vivirás una feliz experiencia.” aparecen 4 tónicas contenidas en las

palabras vivirás, una, feliz, experiencia. Teniendo esto en cuenta y después de

estudiar el fichero asociado con la información de la frecuencia a lo largo de la

frase, se han determinado los siguientes valores para el modelo de la entonación:

148

Page 169: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Tono en el 1er fonema 267 HzTono en el 1er pico 200 HzTono en el 1er valle 240 HzPendiente de picos 66Pendiente de valles 142Tono en el último valle 145 HzTono en el último pico 156 HzTono en el último fonema 134 Hz

TABLA 27: PARÁMETROS ENTONACIÓN "VIVIRÁS UNA FELIZ EXPERIENCIA" (EMOCIÓN ALEGRÍA)

El tono medio del grupo fónico obtenido tiene un valor de 210 Hzy la velocidad

de elocución es de 175 silabas /min.

“Le gusta mucho el gregoriano”

En la grabación mostrada se puede ver como la actriz enfatiza las tónicas del

grupo fónico, dando lugar a una gran variabilidad en el tono del habla. También se

puede apreciar como el tono inicial de la frase es más elevado que en el resto de

casos anteriores, rozando casi los 400 Hz.

FIGURA 41: GRABACIÓN FRASE “LE GUSTA MUCHO EL GREGORIANO” EN EMOCIÓN ALEGRÍA

El aspecto fundamental que dota a la grabación de alegría parece ser el énfasis

de las sílabas tónicas y la variabilidad de la frecuencia. También se puede

apreciar como el último fonema es alargado hasta que la señal desaparece de una

forma continua.

149

Page 170: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Después de analizar el fichero *.par, se ha obtenido el siguiente modelo de

entonación que caracteriza a la frase.

ENTONACIÓN

Teniendo en cuenta que en la frase “Le gusta mucho el gregoriano.” contiene 3

tónicas en las palabras gusta, mucho, gregoriano, se han determinado los

siguientes valores para el modelo de la entonación:

Tono en el 1er fonema 280 HzTono en el 1er pico 245 HzTono en el 1er valle 200 HzPendiente de picos 10Pendiente de valles 60Tono en el último valle 170 HzTono en el último pico 235 HzTono en el último fonema 230 Hz

TABLA 28: PARÁMETROS ENTONACIÓN "LE GUSTA MUCHO EL GREGORIANO" (EMOCIÓN ALEGRÍA)

El tono medio del grupo fónico se ha determinado en un valor de 230 Hz y la

velocidad de elocución del mismo es de 200 silabas /min.

“Llegó la reina del puño cerrado”

En esta frase la actriz enfatiza la última tónica frente al resto. En la figura se

puede observar cómo comienza la frase con un tono muy elevado, próximo a 400

Hz, y va bajándolo a medida que recita la frase.

150

Page 171: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 42: GRABACIÓN “LLEGÓ LA REINA DEL PUÑO CERRADO.” CON EMOCIÓN ALEGRÍA

Después de analizar el fichero *.par, se ha obtenido el siguiente modelo de

entonación que caracteriza a la frase.

ENTONACIÓN

Teniendo en cuenta que en la frase “Llegó la reina del puño cerrado.” contiene

4 tónicas en las palabras llegó, reina, puño, cerrado, se han determinado los

siguientes valores para el modelo de la entonación:

Tono en el 1er fonema 290 HzTono en el 1er pico 265 HzTono en el 1er valle 245 HzPendiente de picos 95Pendiente de valles 127Tono en el último valle 160 HzTono en el último pico 170 HzTono en el último fonema 157 Hz

TABLA 29: PARÁMETROS ENTONACIÓN "LLEGÓ LA REINA DEL PUÑO CERRADO" (EMOCIÓN ALEGRÍA)

El tono medio de la frase es de 210 Hz y la velocidad de elocución es de

195 silabas /min.

151

Page 172: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Una vez obtenidos los 6 modelos que caracterizan las 6 grabaciones estudiadas, se

obtiene la media aritmética de aquellos modelos que sean similares para obtener

valores que se ajusten estrechamente a todos los modelos de forma general.

Parámetros Frase 1 Frase 2 Frase 3 Frase 4 Frase 5 Frase 6Tono en el 1er fonema 300 Hz 272 Hz 290 Hz 267 Hz 280 Hz 290 HzTono en el 1er pico 245 Hz 232 Hz 282 Hz 200 Hz 245 Hz 265 HzTono en el 1er valle 160 Hz 220 Hz 250 Hz 240 Hz 200 Hz 245 HzPendiente de picos 80 70 102 66 10 95Pendiente de valles 0 60 156 142 60 127Tono en el último valle 160 Hz 160 Hz 172 Hz 145 Hz 170 Hz 160 HzTono en el último pico 165 Hz 162 Hz 180 Hz 156 Hz 235 Hz 170 HzTono en el último fonema 140 Hz 169 Hz 145 Hz 134 Hz 230 Hz 157 Hz

TABLA 30: RESUMEN PARÁMETROS ENTONACIÓN ALEGRÍA

Como se puede observar en la tabla resumen de los modelos conseguidos, el

modelo asociado a la frase “Tengo la llave en el bolsillo.” es el que tiene los valores

más elevados de tono y también la mayor diferencia entre la frecuencia al inicio y al

final de la frase. Eliminaremos este modelo a la hora de calcular los valores medios.

El modelo generado para la caracterización de la entonación en la emoción alegría

contiene los valores:

Parámetros Frase 1 Frase 2 Frase 4 Frase 5 Frase 6 MediaTono en el 1er fonema 300 Hz 272 Hz 267 Hz 280 Hz 290 Hz 282 HzTono en el 1er pico 245 Hz 232 Hz 200 Hz 245 Hz 265 Hz 237 HzTono en el 1er valle 160 Hz 220 Hz 240 Hz 200 Hz 245 Hz 213 HzPendiente de picos 80 70 66 10 95 78Pendiente de valles 0 60 142 60 127 60Tono en el último valle 160 Hz 160 Hz 145 Hz 170 Hz 160 Hz 159 HzTono en el último pico 165 Hz 162 Hz 156 Hz 235 Hz 170 Hz 178 HzTono en el último fonema

140 Hz 169 Hz 134 Hz 230 Hz 157 Hz 166 Hz

TABLA 31: CARACTERIZACIÓN DE LA ENTONACIÓN DE LA EMOCIÓN ALEGRÍA

Como se ha observado al estudiar las grabaciones, la velocidad de habla cuando se

expresa emoción alegría es, en general, más alta que cuando se tiene un estado

neutro. Por ese motivo el coeficiente relativo a velocidad “vel_elocu” toma el valor:

vel_elocu = 191

El tono medio aumenta en general y se ha establecido que:

tono_medio = 210

152

Page 173: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Tras realizar un conjunto de pruebas con este modelo, se han realizado una serie

de modificaciones. Así, se observa que el tono de los fonemas es demasiado elevado,

de forma que se produce una distorsión que afecta a la inteligibilidad del habla

sintetizada. Se ha bajado el tono del 1er fonema a 250 Hz, y se ha bajado el tono del

1er pico y el 1er valle en 20 Hz, disminuyendo en consecuencia, la pendiente de picos y

de valles de la curva. Se han mantenido los valores en la parte final del modelo.

Finalmente, los valores de los parámetros han quedado fijados en:

Tono en el 1er fonema 250 HzTono en el 1er pico 217 HzTono en el 1er valle 203 HzPendiente de picos 60Pendiente de valles 40Tono en el último valle 160 HzTono en el último pico 170 HzTono en el último fonema 157 Hz

TABLA 32: VALORES FINALES DE PARÁMETROS DE ENTONACIÓN CON ALEGRÍA

En cuanto a las duraciones, se ha observado que la velocidad del habla de las

grabaciones es mayor a la de los archivos sintetizados por lo que se ha aumentado el

valor de la velocidad hasta:

vel_elocu = 195

Por otro lado, se ha observado en las grabaciones que en algunos casos la actriz al

expresar alegría hace un alargamiento de las sílabas tónicas y del fonema final. Tras

realizar una serie de pruebas se fijan los siguientes coeficientes:

sil_final_no_oxi = 1,1

sil_acentuada = 1,15

7.5 Modelado prosódico de la emoción tristeza

La tristeza es un sentimiento negativo en el que el individuo muestra baja actividad

y una desmotivación generalizada, que aparece como consecuencia de algún cambio

en el entorno valorado como negativo. Al analizar las frases de estudio de la base de

datos S.E.S. para la emoción tristeza se han obtenido las siguientes características

generales del habla:

Se emplea un tono menor que con el habla en estado neutro. Además, este

se mantiene casi constante a lo largo de las frases analizadas.

El volumen de habla empleado es inferior al que presenta en el estado

neutro, y éste va disminuyendo de forma continua a lo largo de la frase.

153

Page 174: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

La velocidad del habla es lenta, existiendo una diferencia notable respecto a

la utilizada en el estado neutro. Se puede observar como hay un aumento en

el número de pausas y en la duración de las mismas.

Se ha observado como en ocasiones se han introducido una especie de

suspiros en la voz y en algunos casos, el habla se presenta de un modo

tembloroso.

7.5.1 CARACTERIZACIÓN DE LA EMOCIÓN TRISTEZA

En el análisis de las grabaciones disponibles para la emoción tristeza se observa

como la curva de tono no se ajusta a un único modelo, sino que varía dependiendo de

dónde la actriz decida poner el foco del grupo fónico o de la frase. También se ha

comprobado como en algunas de las frases, la actriz realiza una pausa a mitad de la

grabación para enfatizar más la tristeza. El sintetizador toma estas pausas como el

límite de un grupo fónico de forma que una única frase da lugar a dos grupos fónicos y

en consecuencia a dos modelos de entonación diferentes. Por esta razón sólo se han

analizado aquellas grabaciones con habla continua a lo largo de las sentencias. Las

frases correspondientes a la base de datos S.E.S. que se han utilizado en el estudio

de la emoción alegría son:

No queda fruta los viernes.

La puerta tiene cerrojo.

Gozan de perfecta salud.

Vivirás una feliz experiencia.

Le gusta mucho el gregoriano.

Sobre cada una de estas frases se ha realizado un estudio similar al realizado en la

caracterización del resto de emociones con el fin de obtener las características

prosódicas que definen la tristeza en cada caso. De igual modo que en el caso

anterior, se obtendrán los valores de los parámetros que forman un posible fichero de

inicialización y una vez obtenidos todos los parámetros para las cinco frases de

ejemplo se calcula la media de aquellos modelos de entonación que sean similares

entre sí, para poder obtener un modelo de entonación que se ajuste lo más fielmente

posible a todas las frases, y así obtener los mejores resultados globales.

“No queda fruta los viernes”

Los valores de prosodia obtenidos del estudio realizado, permitirán que el

resultado de la síntesis de la frase “No queda fruta los viernes” sea lo más similar

posible a la grabación de la actriz que se muestra en la siguiente figura.

154

Page 175: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 43: GRABACIÓN FRASE “NO QUEDA FRUTA LOS VIERNES.” CON EMOCIÓN TRISTEZA

Al escuchar la grabación se observa como la actriz utiliza un tono de voz

sensiblemente inferior al utilizado en el estado neutro. Así, el tono utilizado a lo

largo de la frase no supera en ningún momento los 200 Hz y se mantiene en torno

a valores de 100 Hz. Los fonemas están muy ensordecidos dificultando la

medición de la frecuencia media en la frase. Se puede observar como la curva de

entonación generada por Praat, en azul en la figura, es discontinua en aquellos

puntos en los que el ensordecimiento de los fonemas hace que resulte imposible

hallar la periodicidad de la señal.

En este caso, se puede ver como la actriz resalta las tónicas de la frase, sobre

todo “que” y “vier”, así como la palabra inicial “no”, comenzando con un tono

medio y disminuyendo el valor del mismo a lo largo de cada palabra.

Si se realiza un estudio del fichero *.par con información de la duración y la

entonación de la frase se observa que:

ENTONACIÓN

La frase o el grupo fónico “No queda fruta los viernes.” contiene 4 tónicas

contenidas en las palabras: no, queda, fruta, viernes. Al estudiar el fichero de

información prosódica y analizar el valor de la frecuencia fundamental en el primer

y último fonema del grupo fónico así como en los distintos picos y valles que

aparecen, se obtiene que, de manera aproximada, los parámetros que modelan la

entonación de esta frase son:

155

Page 176: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Tono en el 1er fonema 168 HzTono en el 1er pico 140 HzTono en el 1er valle 130 HzPendiente de picos 10Pendiente de valles 0Tono en el último valle 130 HzTono en el último pico 130 HzTono en el último fonema 115 Hz

TABLA 33: PARÁMETROS ENTONACIÓN "NO QUEDA FRUTA LOS VIERNES" (EMOCIÓN TRISTEZA)

A su vez, el tono medio de la frase tiene un valor en torno a los 136 Hz y la

velocidad de elución se estima en 140 silabas /min, valores inferiores a los

utilizados en el estado neutro.

“La puerta tiene cerrojo”

En este caso la actriz enfatiza la primera palabra de la frase, y ensordece el

resto de palabras de forma que la curva de entonación es casi inexistente, curva

en azul en la grabación de la figura. Se puede apreciar cómo después de la

primera palabra, la actriz baja el tono y la intensidad de la voz a la mitad.

FIGURA 44: GRABACIÓN FRASE “LA PUERTA TIENE CERROJO.” CON TRISTEZA

Al realizar el estudio del fichero que contiene información de la duración y la

entonación de la frase se observa que:

156

Page 177: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

ENTONACIÓN

La frase “La puerta tiene cerrojo.” contiene 3 tónicas que se dan en las

palabras: puerta, tiene, cerrojo. Los parámetros obtenidos que modelan la

entonación de esta frase son:

Tono en el 1º fonema 170 HzTono en el 1º pico 120 HzTono en el 1º valle 115 HzPendiente de picos 15Pendiente de valles 15Tono en el último valle 105 HzTono en el último pico 110 HzTono en el último fonema 100 Hz

TABLA 34: PARÁMETROS ENTONACIÓN "LA PUERTA TIENE CERROJO" (EMOCIÓN TRISTEZA)

El tono medio de la frase tiene un valor en torno a los 140 Hz y la velocidad de

elocución se estima en 120 silabas /min.

“Gozan de perfecta salud”

En la figura 45 se observa como la última palabra de la frase está totalmente

ensordecida, sin posibilidad de encontrar la periodicidad del habla en ese tramo

de señal. Al escuchar la grabación, parece como si la actriz esté simulando un

susurro en la parte final de la misma.

FIGURA 45: GRABACIÓN FRASE “GOZAN DE PERFECTA SALUD.” CON EMOCIÓN TRISTEZA

157

Page 178: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

El aspecto fundamental a destacar de la emoción tristeza en este caso es ese

ensordecimiento mencionado tanto en este caso como en los previamente

analizados. También se ha observado que la actriz alarga la duración de la última

palabra del grupo fónico hasta que, finalmente, la voz se pierde.

Al realizar el estudio del fichero que contiene información de la duración y la

entonación de la frase se observa que:

ENTONACIÓN

La frase “Gozan de perfecta salud.” contiene 3 tónicas que se dan en las

palabras: Gozan, perfecta, salud. Los parámetros obtenidos que modelan la

entonación de la tristeza en esta frase son:

Tono en el 1er fonema 110 HzTono en el 1er pico 130 HzTono en el 1er valle 114 HzPendiente de picos 5Pendiente de valles 4Tono en el último valle 110 HzTono en el último pico 125 HzTono en el último fonema 105 Hz

TABLA 35: PARÁMETROS ENTONACIÓN "GOZAN DE PERFECTA SALUD" (EMOCIÓN TRISTEZA)

Según los datos obtenidos se puede ver como el tono utilizado se mantiene

prácticamente constante a lo largo de la grabación, habiendo muy poca variación

en la frecuencia de los picos y los valles a lo largo de la misma y no existiendo

una diferencia de tono destacable entre ambos.

El tono medio de la frase tiene un valor en torno a los 143 Hz y la velocidad de

elución se estima en 140 silabas /min.

“Vivirás una feliz experiencia”

Al analizar la grabación de esta frase se puede observar como la actriz da

énfasis a la palabra “feliz” aumentando el tono y alargando la parte final de la

misma. También se puede ver como hay partes en las que el habla se ensordece

pero sin llegar a perder la inteligibilidad de la frase. En la figura se puede observar

la señal de voz grabada para esta frase y la curva de entonación de la misma

generada por el programa Praat utilizado para la visualización de la misma.

158

Page 179: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 46: GRABACIÓN FRASE “VIVIRÁS UNA FELIZ EXPERIENCIA” CON TRISTEZA

Se puede ver como en la parte final del grupo se produce un aumento en el

tono de la voz, concretamente en la última tónica. También parece que se produce

un alargamiento del último fonema.

Al analizar los rasgos característicos de la entonación mediante el análisis del

archivo *.par se obtienen los siguientes resultados:

ENTONACIÓN

La frase comprende 4 tónicas contenidas en las palabras vivirás, una, feliz,

experiencia y los valores que mejor caracterizan la entonación de la frase son:

Tono en el 1er fonema 135 HzTono en el 1er pico 110 HzTono en el 1er valle 105 HzPendiente de picos -20Pendiente de valles 7Tono en el último valle 100 HzTono en el último pico 130 HzTono en el último fonema 110 Hz

TABLA 36: PARÁMETROS ENTONACIÓN "V IVIRÁS UNA FELIZ EXPERIENCIA" (EMOCIÓN TRISTEZA)

En la tabla se puede ver como el tono del último pico de la frase es mayor que

el primer pico de la misma, de forma que si se modela la pendiente de picos como

una recta entre ambos valores, la pendiente obtenida es positiva.

159

Page 180: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

El tono medio de la frase tiene un valor de 115 Hz y la velocidad de elocución

de la misma puede establecerse en 120 silabas /min.

“Le gusta mucho el gregoriano”

Al escuchar la grabación se observa como en las tres primeras palabras, hasta

la palabra “el” la actriz produce un temblor en la voz que otorga al habla, de una

forma clara, la sensación de tristeza. También se produce un alargamiento en las

tónicas del principio, “gus” y “mu”. Este comportamiento se puede observar en la

siguiente figura, en la que se muestra la frase grabada por la actriz junto con la

curva de tono generada por el programa Praat.

FIGURA 47: GRABACIÓN FRASE “LE GUSTA MUCHO EL GREGORIANO” CON TRISTEZA

En la figura se puede observar como el tono utilizado por la actriz es mayor en

la primera palabra de la frase y la diferencia entre la frecuencia en los picos y en

los valles es mayor que en el resto de casos estudiados.

Analizando el fichero *.par generado a partir de la grabación se obtienen los

siguientes resultados:

ENTONACIÓN

La frase de estudio contiene 4 sílabas tónicas que se presentan en las

palabras gusta, mucho, gregoriano y los valores que mejor se ajustan al modelo

de la curva de entonación de la misma son:

160

Page 181: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Tono en el 1er fonema 110 HzTono en el 1er pico 175 HzTono en el 1er valle 126 HzPendiente de picos 55Pendiente de valles 22Tono en el último valle 115 HzTono en el último pico 120 HzTono en el último fonema 110 Hz

TABLA 37: PARÁMETROS ENTONACIÓN "LE GUSTA MUCHO EL GREGORIANO" (EMOCIÓN TRISTEZA)

El tono medio de la frase se ha estimado en torno a los 135 Hzy la velocidad de

elocución de la misma por parte de la actriz es de 145 silabas /min.

Una vez obtenidos los 5 modelos que caracterizan las 5 grabaciones estudiadas, se

obtiene la media aritmética de aquellos modelos que sean similares para obtener

valores que se ajusten estrechamente a todos los modelos de forma general.

Parámetros Frase 1 Frase 2 Frase 3 Frase 4 Frase 5Tono en el 1er fonema 168 Hz 170 Hz 110 Hz 135 Hz 110 HzTono en el 1er pico 140 Hz 120 Hz 130 Hz 110 Hz 175 HzTono en el 1er valle 130 Hz 115 Hz 114 Hz 105 Hz 126 HzPendiente de picos 10 15 5 -20 55Pendiente de valles 0 15 4 7 22Tono en el último valle 130 Hz 105 Hz 110 Hz 100 Hz 115 HzTono en el último pico 130 Hz 110 Hz 125 Hz 130 Hz 120 HzTono en el último fonema 115 Hz 100 Hz 105 Hz 110 Hz 110 Hz

TABLA 38: RESUMEN PARÁMETROS ENTONACIÓN EMOCIÓN TRISTEZA

Como se puede observar en la tabla resumen de los modelos conseguidos, el

modelo asociado a la frase “Vivirás una feliz experiencia.” es el que tiene una

pendiente de picos positiva pareciendo mostrar cierto grado de sorpresa al finalizar la

grabación. Eliminaremos este modelo a la hora de calcular los valores medios.

161

Page 182: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

El modelo generado para la caracterización de la entonación en la emoción tristeza

contiene los valores:

Parámetros Frase 1 Frase 2 Frase 3 Frase 5 MediaTono en el 1er fonema 168 Hz 170 Hz 110 Hz 110 Hz 140 HzTono en el 1er pico 140 Hz 120 Hz 130 Hz 175 Hz 141 HzTono en el 1er valle 130 Hz 115 Hz 114 Hz 126 Hz 121 HzPendiente de picos 10 15 5 55 20Pendiente de valles 0 15 4 22 10Tono en el último valle 130 Hz 105 Hz 110 Hz 115 Hz 115 HzTono en el último pico 130 Hz 110 Hz 125 Hz 120 Hz 121 HzTono en el último fonema 115 Hz 100 Hz 105 Hz 110 Hz 108 Hz

TABLA 39: CARACTERIZACIÓN DE LA ENTONACIÓN DE LA EMOCIÓN TRISTEZA

Como se ha observado al estudiar las grabaciones, la velocidad de habla cuando se

expresa emoción tristeza es, en general, mucho más baja que en el estado neutro. Por

ese motivo el coeficiente relativo a velocidad “vel_elocu” toma el valor:

vel_elocu = 135

El tono medio también disminuye de forma general y se ha establecido que su valor

sea:

tono_medio = 130

Tras realizar un conjunto de pruebas con este modelo, se han realizado una serie

de modificaciones. Se ha observado que la velocidad del habla de las grabaciones es

mucho mayor a la de los archivos sintetizados por lo que se ha aumentado el valor del

parámetro del fichero de inicialización hasta:

vel_elocu = 170

Por otro lado, se ha observado en las grabaciones que en algunos casos la actriz al

expresar tristeza hace un alargamiento del fonema final del grupo fónico. Tras realizar

una serie de pruebas se fijan los siguientes coeficientes:

sil_acentuada = 1,15

7.6 Modelado prosódico de la emoción sorpresa

La sorpresa es reacción causada por un estímulo imprevisto y novedoso. Es una

emoción muy breve y con valencia neutra que desemboca o da paso a otro estado

emocional. Puede derivar tanto en una emoción positiva como en una negativa. En el

caso de las grabaciones disponibles en la base de datos S.E.S., la actriz simula una

sorpresa asociada a un suceso imprevisto positivo, de forma que la emoción sorpresa

162

Page 183: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

implementada en el sintetizador, como ya se ha comentado, será una sorpresa

positiva.

La sorpresa se caracteriza por ser una emoción prosódica, de forma que su

caracterización radica en el modelado de las duraciones de los fonemas y de la

entonación empleada. Al analizar las frases de estudio de la base de datos S.E.S. se

han obtenido las siguientes características generales del habla expresando sorpresa

positiva:

El tono utilizado por la actriz aumenta a lo largo del grupo fónico, es decir, es

más alto que el utilizado en el principio de la frase. El tono medio también

aumenta con respecto al estado neutro, siendo este incluso superior al utilizado

en la emoción alegría.

Las palabras finales son alargadas para dar énfasis a las mismas, así como las

tónicas del grupo. La velocidad del habla en general, es algo mayor que en el

estado neutro. Se aumenta el volumen o la intensidad de la voz en la parte

final.

7.6.1 CARACTERIZACIÓN DE LA EMOCIÓN SORPRESA

Además de los aspectos generales detectados, se hace necesario un estudio más

exhaustivo de las distintas grabaciones de las que se dispone para llegar a

conclusiones válidas a un nivel general. En el análisis de las grabaciones disponibles

para la emoción sorpresa se observa como la curva de tono no de algunas

grabaciones no se ajusta a la característica detectada de la pendiente positiva por lo

que sólo se han utilizado aquellas grabaciones que sigan el modelo de pendiente de

tono positiva. Las frases correspondientes a la base de datos S.E.S. que se han

utilizado en el estudio de la emoción sorpresa son:

No queda fruta los viernes.

El final del siglo veinte.

Vivirás una feliz experiencia.

Le gusta mucho el gregoriano.

Llegó la reina del puño cerrado.

Sobre cada una de estas frases se ha realizado un estudio similar al realizado en la

caracterización del resto de emociones con el objetivo de obtener las características

prosódicas que definen la sorpresa en cada caso. En primer lugar se obtendrán los

valores de los parámetros que forman un posible fichero de inicialización de cada una

de las grabaciones, y una vez obtenidos todos los parámetros para las seis frases de

ejemplo se calcula la media de aquellos modelos de entonación que sean similares

163

Page 184: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

entre sí, para poder obtener un modelo de entonación que se ajuste lo más fielmente

posible a todas las grabaciones para así obtener los mejores resultados globales.

“No queda fruta los viernes”

Los valores de prosodia obtenidos del estudio realizado, permitirán que el

resultado de la síntesis de la frase “No queda fruta los viernes” sea lo más similar

posible a la grabación de la actriz que se muestra en la siguiente figura.

FIGURA 48: GRABACIÓN FRASE “NO QUEDA FRUTA LOS VIERNES.” CON EMOCIÓN SORPRESA

Como se puede observar en la figura el tono utilizado por la actriz en la

grabación es muy superior al utilizado en la emoción alegría, siendo los valores

mínimos de frecuencia superiores a 150 Hz. La curva de entonación generada por

el programa de visualización Praat, muestra como se da una pendiente positiva de

forma que en el inicio de la grabación se tiene un tono cercano a los 210 Hz y éste

va aumentando a lo largo de la frase hasta llegar a un tono en torno a 375 Hz en

la última tónica de la misma. También puede verse la gran diferencia de

frecuencia existente entre los valles y los picos que forman el grupo.

La emoción sorpresa viene dada fundamentalmente en la última palabra, en la

que se realiza un énfasis especial. Este énfasis viene dado en parte por un

aumento del pitch en el pico, “vier”, de forma que sea superior al resto, y por un

aumento en el nivel de intensidad del mismo. El tono y la intensidad disminuyen

de valor en la sílaba final del grupo, “nes”, a valores de emoción neutra.

164

Page 185: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Si se realiza un estudio del fichero *.par con información de la duración y la

entonación de la frase se observa que:

ENTONACIÓN

La frase o el grupo fónico “No queda fruta los viernes.” contiene 4 tónicas

contenidas en las palabras: no, queda, fruta, viernes. Al estudiar el fichero de

información prosódica y analizar el valor de la frecuencia fundamental en el primer

y último fonema del grupo fónico así como en los distintos picos y valles que

aparecen, se obtiene que, de manera aproximada, los parámetros que modelan la

entonación de esta frase son:

Tono en el 1er fonema 219 HzTono en el 1er pico 264 HzTono en el 1er valle 285 HzPendiente de picos -76Pendiente de valles 0Tono en el último valle 285 HzTono en el último pico 340 HzTono en el último fonema 185 Hz

TABLA 40: PARÁMETROS ENTONACIÓN "NO QUEDA FRUTA LOS VIERNES" (EMOCIÓN SORPRESA)

El tono medio de la frase tiene un valor en torno a los 300 Hz y la velocidad de

elocución se estima en 170 silabas /min, valores superiores a los utilizados en el

estado neutro.

“El final del siglo veinte”

Al igual que en el caso anterior, esta grabación cumple el modelo de tono

ascendente a lo largo de la sentencia denotando la emoción sorpresa. También es

posible ver el amplio rango de diferencia entre los valores de frecuencia en los

picos y en los valles de la misma. En la siguiente figura se puede apreciar lo

comentado:

165

Page 186: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 49: GRABACIÓN FRASE “EL FINAL DEL SIGLO VEINTE” CON EMOCIÓN SORPRESA

Al escuchar la grabación se aprecia que se produce una enfatización de las

sílabas tónicas de la sentencia, de modo que la actriz aumenta el tono y el

volumen del habla. Al final de la grabación también se observa cómo se produce

un alargamiento de la última palabra del grupo.

El análisis del fichero de valores con la curva de entonación y las duraciones de

los fonemas ha arrojado los siguientes resultados:

ENTONACIÓN

La frase “El final del siglo veinte” tiene 3 tónicas contenidas en final, siglo,

veinte y queda caracterizada por los valores:

Tono en el 1er fonema 195 HzTono en el 1er pico 205 HzTono en el 1er valle 198 HzPendiente de picos -52Pendiente de valles -25Tono en el último valle 215 HzTono en el último pico 240 HzTono en el último fonema 203 Hz

TABLA 41: PARÁMETROS ENTONACIÓN "EL FINAL DEL SIGLO VEINTE" (EMOCIÓN SORPRESA)

El tono medio de la frase queda establecido en torno a 280 Hz , siendo mayor

en el final del grupo que en el principio del mismo, como ya se ha comentado. La

166

Page 187: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

velocidad de elocución de la actriz para la pronunciación de esta frase es de

175 silabas /min.

“Vivirás una feliz experiencia”

Si analizamos la grabación de la frase, se puede ver que la actriz enfatiza las

palabras “una” y “experiencia” aumentando el tono de las mismas. De forma

general, el tono medio de la grabación es mayor que en el estado neutro,

rondando valores de 450 Hz en algunos fonemas. Existe una gran diferencia entre

la frecuencia media asociada a los picos y la asociada a los valles, tal y como

ocurre en el resto de casos. En la figura se puede observar la señal de voz

grabada para esta frase y la curva de entonación de la misma generada por el

programa Praat utilizado para la visualización de la misma.

FIGURA 50: GRABACIÓN FRASE “VIVIRÁS UNA FELIZ EXPERIENCIA” CON SORPRESA

Al escuchar la grabación, se observa como en la parte final del grupo se

produce un aumento en el tono de la voz, concretamente en la última tónica y un

alargamiento de la última palabra.

Al analizar los rasgos característicos de la entonación mediante el análisis del

archivo *.par se obtienen los siguientes resultados:

167

Page 188: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

ENTONACIÓN

La frase comprende 4 tónicas contenidas en las palabras vivirás, una, feliz,

experiencia y los valores que mejor caracterizan la entonación de la frase son:

Tono en el 1er fonema 255 HzTono en el 1er pico 290 HzTono en el 1er valle 243 HzPendiente de picos -60Pendiente de valles -54Tono en el último valle 325 HzTono en el último pico 350 HzTono en el último fonema 248 Hz

TABLA 42: PARÁMETROS ENTONACIÓN "VIVIRÁS UNA FELIZ EXPERIENCIA" (EMOCIÓN SORPRESA)

En la tabla se puede ver como el tono del último pico de la frase es mayor que

el primer pico de la misma, de forma que si se modela la pendiente de picos como

una recta entre ambos valores, la pendiente obtenida es positiva.

El tono medio de la frase tiene un valor de 305 Hz y la velocidad de elocución

de la misma puede establecerse en 180 silabas /min.

“Le gusta mucho el gregoriano”

En la siguiente figura se puede observar la frase grabada por la actriz junto con

la curva de tono generada por el programa Praat.

168

Page 189: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 51: GRABACIÓN FRASE “LE GUSTA MUCHO EL GREGORIANO” CON SORPRESA

La caracterización de la emoción sorpresa queda determinada en la última

palabra de la grabación, “gregoriano”, con un aumento de la frecuencia media en

el último pico del grupo. En la figura se puede observar como el tono utilizado por

la actriz va aumentando a lo largo de la frase alcanzando el máximo en la última

palabra de la frase. Un rasgo destacable de este caso, es que aunque la

pendiente de los picos es positiva, aumentando el tono de forma continua en cada

uno de ellos a lo largo de la frase. La pendiente de los valles sufre un cambio en el

último de ellos, ya que la pendiente es positiva hasta la última palabra del grupo

en la que se produce una caída de la misma. Si la pendiente se calcula como una

recta entre el valor inicial y el final, esta tendría pendiente negativa. Así, para el

cálculo de la pendiente de valles, tomamos el antepenúltimo valle.

Analizando el fichero *.par generado a partir de la grabación se obtienen los

siguientes resultados:

ENTONACIÓN

La frase de estudio contiene 4 sílabas tónicas que se presentan en las

palabras gusta, mucho, gregoriano y los valores que mejor se ajustan al modelo

de la curva de entonación de la misma son:

169

Page 190: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Tono en el 1er fonema 255 HzTono en el 1er pico 292 HzTono en el 1er valle 200 HzPendiente de picos -18Pendiente de valles -50Tono en el último valle 250 HzTono en el último pico 310 HzTono en el último fonema 316 Hz

TABLA 43: PARÁMETROS ENTONACIÓN "LE GUSTA MUCHO EL GREGORIANO" (EMOCIÓN SORPRESA)

El tono medio de la frase se ha estimado en torno a los 280Hzy la velocidad de

elocución de la misma por parte de la actriz es de 170 silabas /min.

“Llegó la reina del puño cerrado”

En esta última frase se puede observar que la frecuencia media se mantiene

más o menos estable en los picos del grupo fónico, es decir, los picos tienen una

frecuencia similar. Este aspecto también se da en el caso del tono de los valles. Al

igual que en los casos anteriores, cabe destacar la diferencia entre los picos y los

valles del grupo fónico. En la figura posterior se puede lo comentado.

FIGURA 52: GRABACIÓN FRASE “LLEGÓ LA REINA DEL PUÑO CERRADO” CON SORPRESA

170

Page 191: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

La emoción sorpresa es notable a lo largo de toda la frase, mediante la

enfatización de los picos del grupo. El resultado de analizar el fichero de

información de la prosodia es:

ENTONACIÓN

Teniendo en cuenta que en la frase “Llegó la reina del puño cerrado.” contiene

4 tónicas en las palabras llegó, reina, puño, cerrado, se han determinado los

siguientes valores para el modelo de la entonación:

Tono en el 1er fonema 321 HzTono en el 1er pico 347 HzTono en el 1er valle 260 HzPendiente de picos -65Pendiente de valles -100Tono en el último valle 310 HzTono en el último pico 412 HzTono en el último fonema 350 Hz

TABLA 44: PARÁMETROS ENTONACIÓN "LLEGÓ LA REINA DEL PUÑO CERRADO" (EMOCIÓN SORPRESA)

El tono medio de la frase es de 385 Hz y la velocidad de elocución se establece

en 170 silabas /min.

Analizadas estas cinco grabaciones es fácil observar como la emoción sorpresa no

queda caracterizada por un patrón único, sino que para cada una de las frases la actriz

se sirve de distintos matices para transmitir la emoción. Una vez obtenidos los

modelos que caracterizan las grabaciones estudiadas, se obtiene la media aritmética

de aquellos modelos que sean similares para obtener valores que se ajusten

estrechamente a todos los modelos de forma general.

Parámetros Frase 1 Frase 2 Frase 3 Frase 4 Frase 5Tono en el 1er fonema 219 Hz 195 Hz 255 Hz 255 Hz 321 HzTono en el 1er pico 264 Hz 205 Hz 290 Hz 292 Hz 347 HzTono en el 1er valle 285 Hz 198 Hz 243 Hz 200 Hz 260 HzPendiente de picos -76 -52 -60 -18 -65Pendiente de valles 0 -25 -54 -50 -100Tono en el último valle 285 Hz 215 Hz 325 Hz 250 Hz 310 HzTono en el último pico 340 Hz 240 Hz 350 Hz 310 Hz 412 HzTono en el último fonema 185 Hz 203 Hz 248 Hz 316 Hz 350 Hz

TABLA 45: RESUMEN PARÁMETROS ENTONACIÓN EMOCIÓN SORPRESA

171

Page 192: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Como se puede observar en la tabla resumen de los modelos conseguidos, el

último modelo, asociado a la grabación “Llegó la reina del puño cerrado.” tiene una

pendiente de valles muy superior al resto de modelos por lo que en la media de la

pendiente de valles no se tendrá en cuenta asociado al modelo de entonación de esta

frase. Del mismo modo, la grabación estudiada de la frase “Le gusta mucho el

gregoriano.” tiene una pendiente de picos muy suave y no se tendrá en cuenta a la

hora de calcular la pendiente media.

El modelo generado para la caracterización de la entonación en la emoción

sorpresa contiene los valores:

Parámetros Frase 1 Frase 2 Frase 3 Frase 4 Frase 5 MediaTono en el 1er fonema 219 Hz 195 Hz 255 Hz 255 Hz 321 Hz 249 HzTono en el 1er pico 264 Hz 205 Hz 290 Hz 292 Hz 347 Hz 279 HzTono en el 1er valle 285 Hz 198 Hz 243 Hz 200 Hz 260 Hz 237 HzPendiente de picos -76 -52 -60 -18 -65 -63Pendiente de valles 0 -25 -54 -50 -100 -43Tono en el último valle 285 Hz 215 Hz 325 Hz 250 Hz 310 Hz 277 HzTono en el último pico 340 Hz 240 Hz 350 Hz 310 Hz 412 Hz 330 HzTono en el último fonema 185 Hz 203 Hz 248 Hz 316 Hz 350 Hz 260 Hz

TABLA 46: CARACTERIZACIÓN DE LA ENTONACIÓN DE LA EMOCIÓN SORPRESA

Como se ha observado al estudiar las grabaciones, la velocidad de habla cuando se

expresa emoción sorpresa es, en general, mayor que la utilizada en el estado neutro.

Por ese motivo el coeficiente relativo a velocidad “vel_elocu” toma el valor:

vel_elocu = 175

El tono medio de las grabaciones aumenta de forma general y se ha establecido

que su valor sea:

tono_medio = 310

Tras realizar un conjunto de pruebas con este modelo, se han realizado una serie

de modificaciones. Así, se observa que el tono de los fonemas es demasiado elevado,

de forma que se produce una distorsión que afecta a la inteligibilidad del habla

sintetizada. El valor del parámetro disminuirá hasta los 250 Hz, de forma que:

tono_medio = 250

172

Page 193: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Finalmente, los valores del resto de parámetros de entonación han quedado fijados

en:

Tono en el 1er fonema 200 HzTono en el 1er pico 210 HzTono en el 1er valle 203 HzPendiente de picos -60Pendiente de valles -40Tono en el último valle 240 HzTono en el último pico 257 HzTono en el último fonema 260 Hz

TABLA 47: VALORES FINALES DE PARÁMETROS DE ENTONACIÓN EN SORPRESA

En cuanto a las duraciones, se ha observado que la velocidad del habla de las

grabaciones es mayor a la de los archivos sintetizados por lo que se ha aumentado el

valor hasta:

vel_elocu = 200

Por otro lado, se ha observado en las grabaciones que en algunos casos la actriz al

expresar sorpresa hace un alargamiento de las sílabas tónicas del grupo, de la última

palabra, y en particular, del fonema final. Tras realizar una serie de pruebas se fijan los

siguientes coeficientes:

sil_final_no_oxi = 1,18

sil_acentuada = 1,35

ult_palabra = 1,3

7.7 Modelado prosódico de la emoción enfado

La emoción enfado se produce ante situaciones que generan frustración o que

resultan desagradables al individuo. El nivel de enfado dependerá de la urgencia con

la que la situación deba ser resuelta. Como ya se ha comentado, existen dos tipos de

enfado: un enfado amenazante o enfado en frío y otro enfado en caliente.

En las grabaciones estudiadas pertenecientes a la base de datos S.E.S. se tiene un

enfado en fío o amenazante, y después del análisis se han obtenido las siguientes

características generales del habla en esta emoción:

El nivel de intensidad del habla es superior al utilizado en el estado neutro y

parece que se enfatiza la última palabra del grupo respecto al resto.

Las grabaciones analizadas presentan unos valores de frecuencia superiores a

los valores asociados al estado neutro. La velocidad de elocución, en este

caso, es algo menor que la velocidad para la síntesis del estado neutro.

173

Page 194: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

En algunas grabaciones se puede observar de forma clara, que existe cierta

irregularidad en la señal de voz y en consecuencia en la curva de entonación.

7.7.1 CARACTERIZACIÓN DE LA EMOCIÓN ENFADO

Además de los aspectos generales detectados, se hace necesario un estudio más

exhaustivo de las distintas grabaciones de las que se dispone para llegar a

conclusiones válidas a un nivel general. Las frases correspondientes a la base de

datos S.E.S. que se han utilizado en el estudio de la emoción sorpresa son:

No queda fruta los viernes.

El final del siglo veinte.

Tengo la llave en el bolsillo.

Vivirás una feliz experiencia.

Le gusta mucho el gregoriano.

Llegó la reina del puño cerrado.

Sobre cada una de estas frases se ha realizado un estudio similar al realizado en la

caracterización del resto de emociones con el objetivo de obtener las características

prosódicas que definen el enfado. En primer lugar se obtendrán los valores de los

parámetros que forman un posible fichero de inicialización de cada una de las

grabaciones, y una vez obtenidos todos los parámetros para las seis frases de ejemplo

se calcula la media de aquellos modelos de entonación que sean similares entre sí,

para poder obtener un modelo de entonación que se ajuste lo más fielmente posible a

todas las grabaciones para así obtener los mejores resultados globales.

“No queda fruta los viernes”

Los valores de prosodia obtenidos del estudio realizado, permitirán que el

resultado de la síntesis de la frase “No queda fruta los viernes” sea lo más similar

posible a la grabación de la actriz que se muestra en la siguiente figura.

174

Page 195: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 53: GRABACIÓN FRASE “NO QUEDA FRUTA LOS VIERNES.” CON EMOCIÓN ENFADO

Como se puede observar en la figura el tono utilizado por la actriz en la

grabación es un tono medio-bajo, sin llegar a los valores alcanzados en la

emoción tristeza. La curva de entonación generada por el programa de

visualización Praat, muestra como se da una pendiente negativa de forma que en

el inicio de la grabación se tiene un tono cercano a los 210 Hz y éste va

disminuyendo a lo largo de la frase hasta llegar a un tono en torno a 90 Hz en el

último fonema de la misma. En el enfado, la diferencia de frecuencia que existe

entre los picos y los valles no es tan abultada como en las emociones sorpresa y

alegría ya mencionadas.

El rasgo fundamental que parece aportar enfado a la grabación es el

alargamiento y ensordecimiento de los picos del grupo fónico. A pesar de ello, el

enfado transmitido en las grabaciones parece ser muy poco prosódico, y el

aspecto fundamental que lo caracteriza es la irregularidad en el habla.

Si se realiza un estudio del fichero *.par con información de la duración y la

entonación de la frase se observa que:

ENTONACIÓN

La frase o el grupo fónico “No queda fruta los viernes.” contiene 4 tónicas

contenidas en las palabras: no, queda, fruta, viernes. Al estudiar el fichero de

información prosódica y analizar el valor de la frecuencia fundamental en el primer

175

Page 196: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

y último fonema del grupo fónico así como en los distintos picos y valles que

aparecen, se obtiene que, de manera aproximada, los parámetros que modelan la

entonación de esta frase son:

Tono en el 1er fonema 188 HzTono en el 1er pico 172 HzTono en el 1er valle 167 HzPendiente de picos 21Pendiente de valles 0Tono en el último valle 167 HzTono en el último pico 151 HzTono en el último fonema 118 Hz

TABLA 48: PARÁMETROS ENTONACIÓN "NO QUEDA FRUTA LOS VIERNES" (EMOCIÓN ENFADO)

El tono medio de la frase tiene un valor en torno a los 160Hz y la velocidad de

elocución se estima en 110 silabas/min, valores superiores a los utilizados en el

estado neutro.

“El final del siglo veinte”

Esta grabación tiene un modelo de entonación ascendente, al igual que ocurría

en la sorpresa. Esto se debe a que la actriz enfatiza la parte final del grupo fónico,

aumentando el tono y la intensidad del habla en esa zona, y alargando la duración

de las palabras. En la siguiente figura se puede ver como también existen zonas

de la grabación irregulares, en las que el programa de análisis Praat, no encuentra

la periodicidad de la señal para el cálculo de la curva de tono.

176

Page 197: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 54: GRABACIÓN FRASE “EL FINAL DEL SIGLO VEINTE” CON EMOCIÓN ENFADO

Al escuchar la grabación se aprecia que el volumen de la voz comienza muy

alto y la actriz lo va disminuyendo a medida que recita la frase. Según esto y lo

comentado anteriormente, en la zona inicial del grupo, la actriz utiliza un volumen

alto para expresar enfado, mientras que en la zona final, la actriz alarga la

duración de los fonemas, eleva el tono y aporta irregularidad a la voz.

El análisis del fichero de valores con la curva de entonación y las duraciones de

los fonemas ha arrojado los siguientes resultados:

ENTONACIÓN

La frase “El final del siglo veinte” tiene 3 tónicas contenidas en final, siglo,

veinte y queda caracterizada por los valores:

Tono en el 1er fonema 193Tono en el 1er pico 171Tono en el 1er valle 174Pendiente de picos -34Pendiente de valles -39Tono en el último valle 200Tono en el último pico 194Tono en el último fonema 151

TABLA 49: PARÁMETROS ENTONACIÓN "EL FINAL DEL SIGLO VEINTE" (EMOCIÓN ENFADO)

177

Page 198: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

El tono medio de la frase queda establecido en torno a 180 Hz , siendo mayor

en el final del grupo que en el principio del mismo, como ya se ha comentado. La

velocidad de elocución de la actriz para la pronunciación de esta frase es de

105 silabas /min.

“Tengo la llave en el bolsillo”

Si observamos la curva de tono que se muestra en la figura 55, se puede ver

que el tono utilizado por la actriz presenta un rango de valores menor al utilizado

en estado neutro (100 Hz−180 Hz). La curva de tono es descendente y no hay

una gran diferencia de frecuencia entre los picos y los valles del grupo.

FIGURA 55: GRABACIÓN FRASE “TENGO LA LLAVE EN EL BOLSILLO” CON EMOCIÓN ENFADO

Al escuchar la grabación se observa que la actriz alarga mucho las tónicas de

la frase, sobre todo la última (“bolsillo”), les da un tono de voz más grave que al

resto y también aumenta la intensidad, para lograr la expresión del enfado.

Los parámetros que caracterizan la entonación de la frase se muestran a

continuación y son obtenidos mediante el análisis del fichero generado por el

programa GeneraParPcm.exe:

ENTONACIÓN

En la frase “Tengo la llave en el bolsillo.” aparecen 3 tónicas contenidas en las

palabras tengo, llave, bolsillo. Teniendo esto en cuenta y después de estudiar el

178

Page 199: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

fichero asociado con la información de la frecuencia a lo largo de la frase, se han

determinado los siguientes valores para el modelo de la entonación:

Tono en el 1er fonema 170 HzTono en el 1er pico 164 HzTono en el 1er valle 160 HzPendiente de picos 3Pendiente de valles 3Tono en el último valle 158 HzTono en el último pico 161 HzTono en el último fonema 132 Hz

TABLA 50: PARÁMETROS ENTONACIÓN "TENGO LA LLAVE EN EL BOLSILLO" (EMOCIÓN ENFADO)

En la tabla se puede ver que el rango de variación de la frecuencia media de la

grabación es mínimo, obteniendo valores prácticamente constantes a lo largo de

todo el grupo.

El tono medio de la frase queda establecido en 158 Hz y la velocidad de

elocución es de 145 silabas /min.

“Vivirás una feliz experiencia”

En la figura se puede observar la señal de voz grabada para esta frase y la

curva de entonación de la misma generada por el programa Praat utilizado para la

visualización de la misma.

FIGURA 56: GRABACIÓN FRASE “VIVIRÁS UNA FELIZ EXPERIENCIA” CON ENFADO

179

Page 200: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Al escuchar la grabación, se observa como la actriz enfatiza las tónicas del

grupo alargando la duración de las mismas. En este caso, la zona media del grupo

compuesta por “una feliz” sufre mayor enfatización que las zonas inicial y final.

Al analizar los rasgos característicos de la entonación mediante el análisis del

archivo *.par se obtienen los siguientes resultados:

ENTONACIÓN

La frase comprende 4 tónicas contenidas en las palabras vivirás, una, feliz,

experiencia y los valores que mejor caracterizan la entonación de la frase son:

Tono en el 1er fonema 170 HzTono en el 1er pico 165 HzTono en el 1er valle 156 HzPendiente de picos 5Pendiente de valles 4Tono en el último valle 150 HzTono en el último pico 160 HzTono en el último fonema 115 Hz

TABLA 51: PARÁMETROS ENTONACIÓN "V IVIRÁS UNA FELIZ EXPERIENCIA" (EMOCIÓN ENFADO)

El tono medio de la frase tiene un valor de 165 Hz y la velocidad de elocución

de la misma puede establecerse en 170 silabas /min.

“Le gusta mucho el gregoriano”

En la siguiente figura se puede observar la frase grabada por la actriz junto con

la curva de tono generada por el programa Praat.

180

Page 201: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

FIGURA 57: GRABACIÓN FRASE “LE GUSTA MUCHO EL GREGORIANO” CON ENFADO

La emoción enfado queda caracterizada mediante la enfatización de las tónicas

del grupo, y sobre todo de la contenida en “mucho”. En la figura se puede

observar como el tono utilizado por la actriz va disminuyendo a lo largo de la frase

alcanzando el mínimo en la última palabra de la misma.

Analizando el fichero *.par generado a partir de la grabación se obtienen los

siguientes resultados:

ENTONACIÓN

La frase de estudio contiene 4 sílabas tónicas que se presentan en las

palabras gusta, mucho, gregoriano y los valores que mejor se ajustan al modelo

de la curva de entonación de la misma son:

Tono en el 1er fonema 175 HzTono en el 1er pico 214 HzTono en el 1er valle 179 HzPendiente de picos 69Pendiente de valles 58Tono en el último valle 150 HzTono en el último pico 145 HzTono en el último fonema 121 Hz

TABLA 52: PARÁMETROS ENTONACIÓN "LE GUSTA MUCHO EL GREGORIANO" (EMOCIÓN ENFADO)

181

Page 202: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

El tono medio de la frase se ha estimado en torno a los 170Hzy la velocidad de

elocución de la misma por parte de la actriz es de 110 silabas/min.

“Llegó la reina del puño cerrado”

En este caso, y como se puede ver en la siguiente figura, se produce un

aumento de la intensidad del habla en la zona media de la grabación junto con un

aumento del tono. Este efecto es producido por la enfatización de la sílaba tónica

contenida en la palabra “reina”. La curva de tono presenta irregularidades propias

de la expresión de la emoción enfado, de forma similar a los casos estudiados

anteriormente.

FIGURA 58: GRABACIÓN FRASE “LLEGÓ LA REINA DEL PUÑO CERRADO” CON ENFADO

Al escuchar la grabación se aprecia un alargamiento del fonema /r/ contenido

en la palabra “reina” y un alargamiento al fonema /ñ/ contenido en “puño”. Además

de esto, y de igual forma al resto de grabaciones, se produce una enfatización de

las tónicas del grupo. El resultado de analizar el fichero de información de la

prosodia es:

ENTONACIÓN

Teniendo en cuenta que en la frase “Llegó la reina del puño cerrado.” contiene

4 tónicas en las palabras llegó, reina, puño, cerrado, se han determinado los

siguientes valores para el modelo de la entonación:

182

Page 203: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Tono en el 1er fonema 162 HzTono en el 1er pico 148 HzTono en el 1er valle 150 HzPendiente de picos 23Pendiente de valles 20Tono en el último valle 140 HzTono en el último pico 125 HzTono en el último fonema 112 Hz

TABLA 53: PARÁMETROS ENTONACIÓN "LLEGÓ LA REINA DEL PUÑO CERRADO" (EMOCIÓN ENFADO)

El tono medio de la frase es de 165 Hz y la velocidad de elocución se establece

en 100 silabas /min.

Analizadas estas seis grabaciones se puede observar que el enfado no queda

caracterizado por un patrón único, sino que para cada una de las frases la actriz se

sirve de distintos matices para transmitir la emoción. Una vez obtenidos los modelos

que caracterizan las grabaciones estudiadas, se obtiene la media aritmética de

aquellos modelos que sean similares para obtener valores que se ajusten

estrechamente a todos los modelos de forma general.

Parámetros Frase 1 Frase 2 Frase 3 Frase 4 Frase 5 Frase 6Tono en el 1er fonema 188 Hz 193 Hz 170 Hz 170 Hz 175 Hz 162 HzTono en el 1er pico 172 Hz 171 Hz 164 Hz 165 Hz 214 Hz 148 HzTono en el 1er valle 167 Hz 174 Hz 160 Hz 156 Hz 179 Hz 150 HzPendiente de picos 21 -34 3 5 69 23Pendiente de valles 0 -39 3 4 58 20Tono en el último valle 167 Hz 200 Hz 158 Hz 150 Hz 150 Hz 140 HzTono en el último pico 151 Hz 194 Hz 161 Hz 160 Hz 145 Hz 125 HzTono en el último fonema 118 Hz 151 Hz 132 Hz 115 Hz 121 Hz 112 Hz

TABLA 54: RESUMEN PARÁMETROS ENTONACIÓN EMOCIÓN ENFADO

Como se puede observar en la tabla resumen de los modelos conseguidos, el

segundo modelo, asociado a la grabación “El final del siglo veinte.” tiene una

pendiente de picos y valles positiva, en contraste con el resto de modelos en los que

las pendientes son negativas. Esta grabación no se tendrá en cuenta a la hora del

cálculo de la curva de entonación general.

El modelo generado para la caracterización de la entonación en la emoción

sorpresa contiene los valores:

183

Page 204: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

Parámetros Frase 1 Frase 3 Frase 4 Frase 5 Frase 6 MediaTono en el 1er fonema 188 Hz 170 Hz 170 Hz 175 Hz 162 Hz 173 HzTono en el 1er pico 172 Hz 164 Hz 165 Hz 214 Hz 148 Hz 172 HzTono en el 1er valle 167 Hz 160 Hz 156 Hz 179 Hz 150 Hz 162 HzPendiente de picos 21 3 5 69 23 24Pendiente de valles 0 3 4 58 20 20Tono en el último valle 167 Hz 158 Hz 150 Hz 150 Hz 140 Hz 153 HzTono en el último pico 151 Hz 161 Hz 160 Hz 145 Hz 125 Hz 148 HzTono en el último fonema 118 Hz 132 Hz 115 Hz 121 Hz 112 Hz 119 Hz

TABLA 55: CARACTERIZACIÓN DE LA ENTONACIÓN DE LA EMOCIÓN SORPRESA

Como se ha observado al estudiar las grabaciones, la velocidad de habla cuando se

expresa emoción sorpresa es, en general, mayor que la utilizada en el estado neutro.

Por ese motivo el coeficiente relativo a velocidad “vel_elocu” toma el valor:

vel_elocu = 165

El tono medio de las grabaciones aumenta de forma general y se ha establecido

que su valor sea:

tono_medio = 120

Tras realizar un conjunto de pruebas con este modelo, se han realizado una serie

de modificaciones. Se ha observado que la velocidad del habla de las grabaciones es

mucho mayor a la de los archivos sintetizados por lo que se ha aumentado el valor del

parámetro del fichero de inicialización hasta:

vel_elocu = 195

Por otro lado, se ha observado en las grabaciones que en algunos casos la actriz al

expresar enfado hace un acortamiento del fonema final del grupo fónico, así como

también alarga ligeramente las sílabas tónicas del grupo. Tras realizar una serie de

pruebas se fijan los siguientes coeficientes:

sil_acentuada = 1,15

ult_palabra = 0,85

184

Page 205: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

8. CONCLUSIONES OBTENIDAS DURANTE EL PROCESO Y LÍNEAS FUTURAS DE INVESTIGACIÓN

8.1 Conclusiones

El sintetizador original de partida, disponía inicialmente de una base de datos de

difonemas de habla neutra masculina. Ha sido labor de este proyecto la generación e

introducción de nuevas bases de datos de difonemas de habla femenina con

emociones, así como la modificación del sintetizador para soportar el nuevo escenario,

síntesis de habla con emociones.

Analizando las actividades desarrolladas durante la realización del proyecto, se ha

llegado a las siguientes conclusiones:

Generación de bases de datos de difonemas con emociones

Se han generado cinco bases de datos de difonemas diferentes (estado neutro y

emociones alegría, sorpresa, tristeza y enfado), a partir de habla femenina pregrabada

por una actriz en estado neutro y simulando alegría, tristeza, sorpresa y enfado.

De forma previa a la generación de las nuevas bases de datos, se ha realizado una

revisión manual de la segmentación y marcación de F0 de los archivos de habla

pregrabada utilizados en el proceso. En total, a la finalización de este proyecto se

cuenta con 570 ficheros de habla, compuestos por series de 5 logatomos, revisados y

corregidos de forma manual.

Durante el proceso de revisión, ha sido necesaria la familiarización y posterior uso

de la herramienta Praat. Este programa ha sido muy utilizado posteriormente como

apoyo para las diversas actividades que se han llevado a cabo durante el desarrollo

del proyecto. Es por ello que se ha creado un manual de usuario para facilitar su

manejo a las futuras personas que la utilicen.

Para la obtención de las bases de datos de difonemas a partir de las grabaciones y

de los ficheros con la información resultante de la revisión manual de etiquetas y

marcas de F0, ha sido necesario adaptar la información a los programas de

generación existentes, SacadifVC.exe y Gendb.exe. Para llevar a cabo la adaptación

de la información inicial se han creado programas y scripts como:

GeneraParPcm.exe: Genera los archivos de muestras y de información de

frecuencia y duraciones de etiquetas, a partir de los ficheros de audio

pregrabados y los ficheros resultantes de la revisión manual.

185

Page 206: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

ObtenTxt.pl: Genera, en el formato adecuado, los ficheros de texto con las

series de logatomos asociadas a cada archivo de audio.

ObtenListaDif.exe: Selecciona las unidades de difonemas necesarias para la

generación de cada base de datos.

Además de los nuevos programas, ha sido necesario adaptar los programas

existentes a los nuevos formatos de información utilizados.

Por último, se han creado diferentes scripts para la automatización del proceso de

generación de base de datos en futuros desarrollos, entre los que destacan:

sacadif.bat, sacatodos.bat, obtenListaDif.bat, modificaFich.per, renombraFich.bat.

Primera versión del sintetizador por concatenación en habla con emociones

Se ha generado una primera versión de un sintetizador de habla con emociones,

por concatenación de difonemas, utilizando las bases de datos generadas y

combinando el módulo de generación prosódica existente en el sintetizador, que utiliza

redes neuronales, con el módulo de generación prosódica utilizado en el sintetizador

por formantes, que utiliza ficheros de inicialización con la información prosódica

asociada a cada emoción y modelos paramétricos para la generación o modificación

de la curva de F0 y de las duraciones.

Para lograr la combinación de ambos módulos se han realizado una serie de

modificaciones en la estructura del sintetizador original. Se ha heredado el módulo de

prosodia del sintetizador por formantes y se ha adaptado al sintetizador original de

forma que la prosodia obtenida de las redes neuronales sea modificada, mediante una

serie de reglas, por la información contenida en los ficheros de inicialización.

Además de la adaptación de código, ha sido necesario realizar un ajuste en la

información de los ficheros de inicialización utilizados, ya que el sintetizador por

formantes utiliza habla masculina con emociones y en nuestro proyecto se ha utilizado

habla femenina con emociones caracterizada por tanto, por un modelo prosódico

diferente.

Para determinar las características que definen cada una de las emociones

implementadas, se disponía de una base de datos, S.E.S, en la que se encuentran

almacenadas una serie de grabaciones correspondientes a un conjunto de frases

grabadas, simulando las emociones, por la misma actriz que grabó los archivos de

audio de logatomos, de los que se han obtenido las bases de datos. A partir de estas

grabaciones, y mediante el uso de la herramienta Praat y el programa

GeneraParPcm.exe, se ha obtenido un conjunto de datos relativos a la duración de los

fonemas y a la entonación empleada por la actriz para caracterizar el habla en las

distintas situaciones. La prosodia de las diferentes emociones ha quedado

186

Page 207: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

caracterizada de forma que los ficheros de inicialización contienen los valores medios

de los modelos prosódicos similares entre sí.

De forma general, lo valores de entonación contenidos en los ficheros de

inicialización se aplican directamente a la prosodia de las frases a sintetizar, mientras

que las duraciones contenidas en los mismos modifican las duraciones obtenidas por

la red neuronal mediante una serie de reglas.

Los resultados obtenidos mediante el nuevo modelo prosódico combinados son:

Estado neutro: Para el modelado del estado neutro, se han utilizado los

datos relativos a la entonación obtenidos a partir de las grabaciones de la

actriz. Las duraciones se han ajustado mediante la velocidad del habla.

Alegría: La entonación se caracteriza por el empleo de un valor medio de

frecuencia superior al del estado neutro con un mayor rango de valores de

F0. En cuanto a las duraciones, se ha optado por utilizar un modelo que

diferencie la emoción del estado neutro. Para ello se han utilizado una serie

de parámetros tales como la velocidad de media del habla, que en este caso

aumentará, y los coeficientes que modifican las duraciones de las sílabas

acentuadas y la última vocal del grupo fónico, que también aumenta

respecto al estado neutro.

Tristeza: Es la emoción que más problemas ha generado por el

ensordecimiento de la mayor parte de los difonemas de la base de datos. Es

por ello que se ha añadido al sintetizador un control que verifica la calidad

de los difonemas contenidos en la base de datos y ayuda en la detección de

difonemas problemáticos.

En cuanto a la caracterización prosódica, cabe destacar que el modelo de

entonación generado se caracteriza por un valor de frecuencia muy bajo, en

torno a 120 Hz, y existen pocas variaciones a lo largo de la curva de

entonación. El modelo de duraciones obtenido de la red neuronal se ha

ajustado modificando el parámetro de la velocidad media del habla, que en

este caso, es inferior a la del estado neutro.

Sorpresa: En el proyecto se ha implementado una emoción sorpresa con

tendencia hacia una emoción positiva como la alegría. Esta emoción se

caracteriza por emplear unos valores de frecuencia mayores que los de la

emoción alegría y con una curva de entonación con pendiente positiva,

determinada por una marcada subida de frecuencia en la última tónica del

grupo fónico. En cuanto a las duraciones, se ha utilizado el parámetro

asociado a la velocidad del habla para el ajuste de las duraciones obtenidas

187

Page 208: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

de la red neuronal y se han utilizado los coeficientes que modifican la

duración, aumentando la misma, de las sílabas tónicas, de la última vocal y

en general de la última palabra del grupo fónico.

Enfado: El enfado implementado en el proyecto es un enfado en frío o

amenazante. El modelo de entonación presenta grandes diferencias entre

los picos y los valles y presenta una subida en el tono en la parte final del

grupo fónico. Las duraciones se ajustan mediante la velocidad del habla,

similar al estado neutro, y mediante los coeficientes que modifican las

duraciones de las sílabas tónicas, alargándolas para lograr énfasis, y la

duración de los fonemas finales, reduciéndolos.

La caracterización del enfado está determinada fundamentalmente por las

irregularidades que presenta el habla y por el aumento del volumen del

habla.

Por último, se ha introducido un lenguaje de etiquetas para dotar al sintetizador por

concatenación de una mayor flexibilidad a la hora de la síntesis. Así pues, se han

introducido las siguientes etiquetas:

Introducción de pausas: Permite introducir pausas de distinta duración en

cualquier punto de la frase a sintetizar.

Modificación de la velocidad de elocución: Permiten modificar la

velocidad del habla de forma global o en un solo tramo de la frase a

sintetizar.

Modificación del tono medio: Permiten modificar, de forma global o local,

la frecuencia media de los fonemas que forman las frase a sintetizar.

Introducción de emociones con distintos grados emocionales: Cuando

se introduce la etiqueta de una emoción determinada, se puede modificar el

porcentaje o el grado de la misma mediante la etiqueta de nivel.

Cabe destacar, como conclusión final, que la introducción de diferentes bases de

datos para las distintas emociones implementadas, no siempre supera en cuanto a

calidad e inteligibilidad del habla, a simplemente utilizar una base de datos para el

estado neutro y a partir de ahí realizar las modificaciones prosódicas necesarias para

algunas emociones.

188

Page 209: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

8.2 Líneas futuras de investigación

Entre los campos o áreas en los que se puede seguir trabajando para la mejora del

sistema se tiene:

Generación de nuevas bases de datos con mayor número de difonemas,

basadas en las grabaciones revisadas manualmente.

Mejora en la implementación de la emoción enfado, con la introducción de

nuevo código que permita modificar la intensidad del habla de los difonemas

utilizados para la síntesis.

Mejora en la caracterización de la emoción tristeza, con la incorporación del

jitter en el interpolado de la entonación, extraído del sintetizador por formantes

ROBINT, disponible en el Grupo de Tecnología del Habla.

Introducción en el sistema de las emociones asco y miedo.

189

Page 210: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

9. BIBLIOGRAFÍA 1. [ABGC 05] Jordi Adell, Antonio Bonafonte, Jon Ander Gómez and María José

Castro. “Comparative study of Automatic Phone Segmentation methods for

TTS”. Proceedings of IEEE International Conference on Acoustics Speech and

Signal Processing ICASSP 2005, March, 2005.

2. [Alcázar 08] 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. 2008

3. [ARCL+ 08] R. Alcázar, R.Barra-Chicote, L.F.Dharo, R.Córdoba, F.Fernández-

Martínez, J.Ferreiros, J.M.Lucas, S.L. Lufti, J.Macias-Guarasa, J.M.Montero,

M.Pardo, and R.San-Segundo. Desarrollo de un robot-guía con integración de

un sistema de diálogo y expresión de emociones: Proyecto robint. In

Procesamiento del Lenguaje Natural, volume 40, pages 51–58, 2008.

4. [Audacity] Página web oficial programa Audacity:

http://audacity.sourceforge.net/about/

5. [Barajas 96] Barajas, Saulo: Curso de MS-DOS. Editorial Osiris, 1996

http://www.saulo.net/pub/msdos/cap10.htm

6. [BCMMG+ 07] R. Barra-Chicote, J.M. Montero, J. Macías-Guarasa, S. Lufti, J.

M. Lucas, F. Fernández, L. F. D’haro, R. San-Segundo, J. Ferreiros, R.

Córdoba, and J. M. Pardo. Spanish expressive voices: corpus for emotion

research in Spanish. In Proceedings of the 6th edition of the Language

Resources and Evaluation Conference (LREC), mayo 2007.

7. [BCYM+ 08] R. Barra-Chicote, J. Yamagishi, J. M. Montero, S. King, S. Lufti , J.

Macias-Guarasa: “Generación de una voz sintética en castellano basada en

HSMM para la Evaluación Albayzín 2008: Conversión Texto a Voz”. V

Jornadas en Tecnología del Habla, Bilbao. 2008.

8. [Bisquerra 2000] Rafael Bisquerra: “Educación emocional y bienestar”. Editorial

Praxis, 2000.

9. [Cefire 2005] Departamento de Sociología II, Psicología, Comunicación y

Didáctica. “Seminario Cefire: Las emociones”. Universidad de Alicante. 2005.

http://www.ua.es/dpto/dspee/estudios/otros/LAS%20EMOCIONES.pdf

10. [Chóliz 05] Mariano Chóliz Montañés: “Psicología de la emoción. El proceso

emocional”. Dpto. de Psicología Básica. Universidad de Valencia. 2005.

http://www.uv.es/=choliz/Proceso%20emocional.pdf

190

Page 211: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

11. [Córdoba 02] R. De Córdoba, J.M. Montero, J. Gutiérrez-Arriola, J.A. Vallejo, E.

Enríquez, J.M. Pardo: “Selection of the Most Significant Parameters for

Duration Modeling in a Spanish Text-To-Speech System Using Neural

Networks”. Computer Speech & Language, Vol. 16, nº 2, pp. 183-203, 2002.

12. [Cosi 07] Piero Cosi. 2007. “Emotional Speech Synthesis”.

http://www2.pd.istc.cnr.it/FESTIVAL/home/emotions.htm

13. [Darwin 1872] Darwin, Charles. 1872. “The Expression of the Emotions in Man

and Animals”.

14. [DFGM 00] Laura D. F. and Carmen G. M.: “Segmentación automática de

voz basada en modelos ocultos de Markov y características acústicas”.

Procesamiento del lenguaje natural, ISSN 1135-5948, Nº. 26, 2000, págs. 191-

196.

15. [D’Haro 03] J.M. Montero, L.F. D´Haro, R. de Córdoba, J.A. Vallejo, J.

Gutiérrez-Arriola, J.M. Pardo: “ANN F0 Modelling for Female-Voice Synthesis

in Spanish: restricted and non-restricted domains”. Proceedings of the XVth

International Congress of Phonetic Sciences, pp. 563-566, 2003.

16. [FJM 03] Enrique G. Fernández Abascal, María Pilar Jiménez Sánchez, María

Dolores Martín Díaz: “Emoción y Motivación. La adaptación humana”. Centro de

Estudios Ramón Areces, 2003.

17. [GABCM 07] A. Gallardo-Antolín, R. Barra-Chicote, S. Krstulovic, J.M.

Montero, and M. Schröder. “Automatic phonetic segmentation of Spanish

emotional speech”. Septiembre 2007.

18. [Gutierrez-Arriola 01] J. Gutiérrez-Arriola, J.M. Montero, D. Saiz, J.M. Pardo:

"New Rule-Based and Data-Driven Strategy to Incorporate Fujisaki’s F0 Model

to a Text-To-Speech System in Castillian Spanish". Proceedings of the

International Conference on Acoustics and Signal Processing, pp. 821-824,

2001.

19. [HCMT04] N. Henrich, C.Gendrot, A. Michaud, and V.Ñgoc Tuan. Tools for

electroglottographic analysis: Software, documentation and databases, 2004.

http://voiceresearch.free.fr/egg.

20. [Hofer 04] Gregor O. Hofer: “Emotional Speech Synthesis”. Master of Science.

School of Informatics. University of Edinburgh. 2004.

21. [HTK] Steve Young, Gunnar Evermann, Mark Gales, Thomas Hain, Dan

Kershaw, Xunjing Liu, Gareth Moore, Julian Odell, Dave Ollason, Dan Povey,

Valrcho Valtchev y Phil Woodland: “The HTK Book”. Cambridge University

Engineering Department. 2006.

191

Page 212: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

22. [HTS] Home HMM-based Speech Synthesis System (HTS)

http://hts.sp.nitech.ac.jp/

23. [Izard 89] Carold Ellis Izard: “Handbook of infant development”. Perspectives

on emotional development.

24. [Klatt 1987] Joaquim Llisterri, Universitat Autònoma de Barcelona

http://liceu.uab.es/~joaquim/speech_technology/tecnol_parla/synthesis/klatt/

Klsyn88.html

25. [KTHZ 09] Keiichi Tokuda, Heiga Zen: “Fundamentals and recent advances in

HMM-based speech synthesis”. 10th Annual Conference of the International

Speech Communication Association. 2009.

www.interspeech2009.org/tutorials/

26. [LMGC 01] Jeff T. Larsen, A. Peter McGraw, John T. Cacioppo: “Can People Feel

Happy and Sad at the Same Time?” Journal of Personality and Social Psychology,

nº 4, pp. 684-696, 2001.

27. [LMS 08] Lorena Martínez Simón: “Diseño, implementación y evaluación de

técnicas de conversión de prosodia”. Proyecto fin de carrera. ETSI

Telecomunicación. Madrid. UPM. 2008

28. [Martínez 98] 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.

29. [MGCM 00] Mario González del Campo Muñoz: “Síntesis de voz por selección

de unidades. Aplicación a síntesis de dominio restringido y síntesis de voz con

emociones”. Proyecto fin de carrera. ETSI Telecomunicación. Madrid. UPM.

2000.

30. [Perl 6] Manual lenguaje Perl: http://www.etsimo.uniovi.es/perl/tutor/.

31. [Praat] Página oficial programa Praat

http://www.praat.org

32. [Reeve 94] J.M. Reeve: “Emoción y Motivación”. McGraw-Hill, 1994.

33. [Russell 1980] Russell, J.A.: A circumplex model of affect. Journal of

Personality & Social Psychology 39, 1-sup-6 (Dic.), 1161-1178. 1980.

34. [RWM 89] Russell, J. A., Weiss, A., Mendelsohn, G. A. Affect grid: a single-item

scale of pleasure and arousal. Journal of Personality & Social Psychology 57, 3

(Sept.), 493-502. 1989.

35. [Toledano 01] D.T. Toledano, “Segmentación y etiquetado fonéticos

automáticos”. Tesis Doctoral, Febrero 2001, Universidad Politécnica de Madrid.

192

Page 213: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

10. PLIEGO DE CONDICIONES

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

193

Page 214: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

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

10.3 Condiciones generales de prueba

Los programas y subrutinas que se entreguen deberán funcionar sobre un

ordenador PC o compatible con microprocesador Pentium Core 2 Duo o superior y

con, al menos, 512 MBytes de RAM. Se ejecutarán bajo sistema operativo Windows

2000 XP Professional 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 condiciones expuestas anteriormente, la empresa

contratante se reservará el derecho de rescindir el contrato.

10.4 Recursos materiales

Ordenador PC compatible, Pentium Core 2 Duo, 512 MB de memoria RAM y 2

GB de disco duro.

Altavoces.

Tarjeta de red Ethernet.

10.5 Recursos lógicos

Sistema operativo Windows XP Professional.

Compilador Microsoft Visual C++ 6.0

Praat.

Office 2007.

194

Page 215: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

11. P RESUPUESTO 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.

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

11.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 diarioIngeniero Superior de Telecomunicación 1.334,59 44,49 6,07 50,56

Mecanógrafo 632,49 21,08 5,67 26,76

TABLA 56: SUELDOS DE LAS PERSONAS QUE HAN INTERVENIDO EN EL PROYECTO

195

Page 216: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

11.1.2 RELACIÓN DE OBLIGACIONES SOCIALES

CONCEPTOVacaciones 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%

TABLA 57: OBLIGACIONES SOCIALES

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

Mecanógrafo 26,76 14,35 41,1

TABLA 58: SALARIOS EFECTIVOS TOTALES

11.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,70

Mecanógrafo 40 41,1 1.644,13

TOTAL COSTE DE MANO DE OBRA     27.274,83

TABLA 59: COSTE DE LA MANO DE OBRA

11.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 Pentium Core 2 Duo y una impresora Láser HP

196

Page 217: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

LaserJet 2100 Series PCL 6-1, 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:

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 Láser HP LaserJet 2100 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

TABLA 60: COSTE DE MATERIALES

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

TABLA 61: PRESUPUESTO DE EJECUCIÓN MATERIAL

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

BENEFICIO INDUSTRIAL (6%) 1.674,77

TOTAL G.G. Y B.I. 7.815,6

Resultando:

197

Page 218: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

IMPORTE DE EJECUCIÓN POR CONTRATA 35.728,49

TABLA 62: IMPORTE DE EJECUCIÓN POR CONTRATA

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

TABLA 63: HONORARIOS FACULTATIVOS

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

TABLA 64: HONORARIOS TOTALES

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

16% de IVA.

EJECUCIÓN POR CONTRATA 35.728,49

HONORARIOS 4.925,4

IMPORTE 40.653,89

IVA (16%) 6.504,62

IMPORTE TOTAL 47.158,51

TABLA 65: IMPORTE TOTAL DEL PROYECTO

198

Page 219: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas Mª Dolores Segovia Torres

El importe total del presente proyecto asciende a la cantidad de CUARENTA Y

SIETE MIL CIENTO CINCUENTA Y OCHO euros CON CINCUENTA Y UN céntimos.

EL INGENIERO AUTOR DEL PROYECTO

Fdo.: Mª Dolores Segovia Torres

MADRID, JUNIO DE 2010.

199

Page 220: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

I. ANEXO I

1. Manual programa Praat

MENÚS Y MANEJO DEL PROGRAMA

Praat es un programa de análisis, síntesis y manipulación de habla que se ha

utilizado para realizar la revisión manual de la marcación de F0 y la segmentación

automática realizadas al corpus de logatomos inicial. Se explican a continuación las

diferentes ventanas y objetos con los que se ha tratado en la revisión manual.

Lo primero que se muestra al inicializar el programa Praat, son dos ventanas

principales, la ventana de objetos (Object window) y la ventana de gráficos (Picture window). La única ventana que normalmente se ha utilizado es la de objetos. La

ventana muestra una lista de objetos y un menú dinámico que varía según el objeto

seleccionado. En la parte superior se muestran los menús Praat (opciones de

configuración y creación de scripts), New (para crear objetos), Read (para cargar en

memoria objetos a partir de ficheros), Write (para escribir en un fichero un determinado

objeto, varía según el objeto seleccionado) y Help.

Praat contiene una serie de objetos y editores para cada uno de los objetos. Entre

todos los objetos, sólo se han utilizado para la revisión y la marcación los siguientes:

Objetos generales: Sound y PointProcess. Los objetos Sound contienen los

ficheros de audio (procesos de muestreo continuo). Los objetos PointProcess

contienen una secuencia de puntos en el tiempo (dan lugar a los ficheros de

marcas). Cada objeto tiene un editor asociado para cualquier modificación.

Objetos de etiquetado y segmentación: Se utiliza el objeto TextGrid, el

IntervalTier y el TextTier. El objeto TextGrid puede estar formado por dos

distintos tipos de niveles. El nivel IntervalTier contiene una cadena secuencial

de los límites de los intervalos etiquetados. El nivel TextTier contiene una

cadena de puntos etiquetados. En nuestro caso el IntervalTier de un TextGrid

contiene las etiquetas de los distintos fonemas en los que se dividen los

logatomos y el TextTier contiene las marcas de F0. Los objetos se pueden

modificar en el editor de TextGrid

Aunque no se han utilizado también existen objetos de pitch, de intensidad, de

formantes, de espectro, etc. con sus correspondientes editores. En la siguiente figura

se muestra la ventana de objetos con un objeto TextGrid y otro objeto Sound

cargados. En la parte derecha de la figura se puede ver el menú dinámico asociado al

objeto seleccionado.

203

Page 221: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 59: OBJECT WINDOW DEL PROGRAMA PRAAT CON OBJETOS CARGADOS

Análisis de etiquetas

Para comenzar con el análisis de etiquetas de un fichero de audio, se carga el

archivo de etiquetas *.TextGrid, objeto TextGrid, y el archivo de audio, objeto Sound,

con el menú Read de la ventana principal. Para la edición del objeto TextGrid nos

podemos apoyar en la señal de voz seleccionando ambos objetos y haciendo clic en la

opción del menú dinámico Edit. De esta forma, en el editor se puede escuchar la señal

de voz asociada al objeto de etiquetas y modificarlo si algún límite es incorrecto.

Se pueden destacar los menús File, Edit, Interval, Spectrum, Pitch, Intensity y

Formant en el editor de TextGrid. Cada uno de los menús ofrece al usuario distintas

opciones para mostrar o no al usuario el espectrograma, el pitch, la intensidad,…y

opciones para determinar la forma en que se realiza. En la figura 60 se muestra la

ventana del editor TextGrid con el objeto L_T_00100, resultante de la segmentación

automática, para su modificación e información adicional como la señal de audio

asociada, el espectrograma, los formantes (en rojo), el pitch (en azul) y la intensidad

del mismo (en amarillo).

204

Page 222: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 60: EDITOR DE TEXTGRID EN EL QUE APARECE EL OBJETO RESULTANTE DE LA SEGMENTACIÓN AUTOMÁTICA PARA SU MODIFICACIÓN E INFORMACIÓN ADICIONAL

Para la revisión manual de las marcas serán útiles las siguientes acciones:

Crear etiqueta: Para crear una nueva etiqueta no hay más que seleccionar el

punto donde se desea que se posicione la frontera y pulsar Enter. Para

terminar es necesario teclear el nombre de la nueva etiqueta. En nuestro

caso, el nombre de la etiqueta se corresponde con el nombre del fonema

asociado. Si por ejemplo, se tratara de segmentar una sentencia en las

distintas palabras que la componen, cada etiqueta se correspondería con

cada una de las palabras.

Desplazar frontera: Para modificar los intervalos sólo hay que seleccionar

con el ratón el límite de posición incorrecta (al seleccionarse cambia a color

rojo) y desplazarlos hasta la posición deseada.

Eliminar frontera: Para borrar un límite es necesario seleccionar el mismo y

teclear Alt+Backspace.

Eliminar etiqueta: Eliminar una etiqueta consiste en eliminar las fronteras

que la limitan y eliminar el nombre de la etiqueta.

Para poder seleccionar una etiqueta u otra de forma rápida se utiliza Alt+cursor,

que permite desplazarse a lo largo del objeto TextGrid hasta ubicarse en la etiqueta

deseada. Normalmente es necesario escuchar el sonido asociado a la etiqueta para

lograr la correcta ubicación de las fronteras fonéticas. Para ello será necesario

colocarse en la etiqueta de interés y pulsar la tecla TAB del teclado. En la figura 61 se

205

Page 223: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

muestra el logatomo perteneciente al objeto TextGrid L_T_00100 después de la

revisión de etiquetas.

FIGURA 61: EDITOR DE TEXTGRID EN EL QUE APARECE EL OBJETO MODIFICADO

Análisis de marcas de F0

Es importante tener en cuenta que las tareas de revisión de las marcas de

frecuencia y las fronteras fonéticas no son independientes entre sí, sino que la

información que produce una puede ser muy útil para la otra. Así, a partir de la curva

de frecuencia fundamental, se pueden identificar mejor los fonemas, si se conocen las

peculiaridades de cada uno. Es por ello que se ha realizado una revisión conjunta de

los resultados obtenidos de forma automática.

La revisión de las marcas F0 se realiza también en el editor de TextGrid puesto que

se encuadran dentro de un objeto TextTier. En los archivos conjuntos de los que se

dispone a la hora de la revisión automática se tiene un objeto de tipo TextGrid con los

dos tipos de niveles posibles IntervalTier y TextTier. Así pues, se trabaja con dos

niveles en el editor para realizar el proceso de revisión de una forma más rápida y

completa. El procedimiento para crear, modificar y eliminar marcas del nivel TextTier

es el mismo que para el nivel IntervalTier y que ya se ha comentado en el apartado

anterior. En la figura siguiente se pueden ver los niveles del objeto TextGrid

correspondiente al archivo L_N_00100.

206

Page 224: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 62: EDITOR DE OBJETO TEXTGRID CON NIVEL TEXTTIER (1) E INTERVALTIER (2)

Para que la revisión se realice de forma precisa existe una serie de botones en la

parte inferior izquierda de la ventana de editor de TextGrid, que ayudan a la edición del

objeto. Estos botones se pueden apreciar en la figura 62 y son:

all: Al pulsar el botón se realiza un alejamiento automático de forma que

todo el objeto se muestra en pantalla.

in: Es el botón de zoom, y sirve para mostrar el objeto forma precisa.

sel: Realiza un zoom del intervalo que se haya seleccionado. Se utiliza

cuando se quiere enfocar un determinado segmento.

out: Aleja el foco de forma que se obtiene una vista más general del objeto.

Las marcas de F0 del fichero se generan de forma automática mediante un script

realizado en praat. Los scripts de praat son archivos en formato texto que contienen

comandos y órdenes que se ejecutan de forma secuencial cuando se ejecuta el script.

Para abrir un script realizado en praat (*.praat) se debe seleccionar la opción Open

Praat script… del menú Praat de la ventana principal. Normalmente tienen un objeto

como argumento de entrada por lo que para ejecutarlos se debe seleccionar el objeto

sobre el que se quiere realizar el proceso automático y después seleccionar en el

editor de scripts la opción Run del menú Run. Este proceso se visualiza en la figura

siguiente.

207

Page 225: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 63: EDITOR DE SCRIPT DEL PROGRAMA PRAAT

2. Manual revisión manual de marcas y segmentación

REVISIÓN DE MARCAS F0Los fonemas, se pueden agrupar en función de su comportamiento, de modo que

cada grupo tiene unas peculiaridades muy útiles a la hora de marcar y segmentar. Se

presentan a continuación los diferentes grupos fonéticos.

Oclusivas sordas

Constituyen un grupo muy sencillo de marcar y segmentar pues tienen unas

propiedades que los distinguen claramente del resto. Pertenecen a este grupo los

fonemas: /p/, /t/ y /k/, fonemas muy comunes en todos los ficheros.

Las oclusivas sordas muestran un silencio, más o menos largo, seguido de una

explosión. A veces presentan un resto de sonoridad de la vocal anterior en el silencio,

pero este efecto se debe despreciar al marcar. Además la explosión suele afectar en

sus primeros periodos a la vocal posterior, que pueden presentar fuertes oscilaciones.

Al marcar este tipo de fonemas, en el silencio se suelen poner algunas marcas

equiespaciadas y distanciadas entre sí de forma que se consiga un tono medio

alrededor a 100Hz. En la explosión se intenta que la curva de tono fundamental no

presente un gran pico intentando mantener la continuidad con la frecuencia de la vocal

posterior.

En la figura 64 se muestra un fonema oclusivo correctamente marcado. En concreto

se trata de una /p/ entre dos vocales. Se puede observar como aparece un resto de

sonoridad de la vocal precedente y como en la explosión, en lugar de buscar

208

Page 226: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

periodicidad, se intenta que la transición al tono de la vocal siguiente se realice de

forma continua y sin saltos bruscos.

FIGURA 64: FONEMA OCLUSIVO

Fricativas

Este grupo de sonidos también presenta unas características muy definidas que los

hace fácilmente distinguibles del resto. En concreto, los sonidos fricativos presentan el

aspecto de un ruido aleatorio, sin ningún tipo de periodicidad o regularidad.

Pertenecen a este grupo fonético los fonemas /s/, /f/, /z/ y /x/.

Las fricativas suelen afectar un poco a los primeros periodos del fonema

consecutivo, de modo que aparecen algo ruidosos.

La forma de marcar este tipo de sonidos es análoga a la del silencio de los fonemas

oclusivos es decir, colocando marcas equiespaciadas y separadas entre sí. Este

proceso se realiza de forma automática en el programa SacadifVC.exe descrito en el

capitulo 5.3.2 de esta memoria. En general, en las transiciones entre un fonema

fricativo y una vocal, se suelen ignorar los primeros periodos de la vocal si son

excesivamente ruidosos y resulta imposible distinguir la periodicidad.

En la figura 65 se puede observar un ejemplo de un fonema fricativo entre dos

vocales. Se percibe cómo los últimos periodos de la /e/ se ven afectados por el ruido

que incluye la fricación, pero aun así es posible marcar el periodo.

209

Page 227: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 65: FONEMA FRICATIVO

VocalesSon fonemas sonoros, por lo que presentan periodicidad. Esa periodicidad es la

que pretende caracterizar mediante las marcas. Las vocales presentan diferentes

contextos, en función del entorno en que están incluidas. Así se habla de vocales

nasalizadas, vocales aproximantes, etc.

Al marcar una vocal, se suele buscar una referencia como puede ser un pico

determinado o un mínimo. En general se elige aquella en que parezca haberse basado

el marcado automático. Después se colocan las marcas siguiendo ese mismo criterio.

Normalmente no presentan grandes complicaciones excepto cuando la energía es

muy baja que resulta complicado encontrar la periodicidad. En estos casos suele ser

muy útil amplificar la señal (botón in) aunque a veces lo mejor es colocar las marcas

buscando que la curva de tono no presente irregularidades.

Si los logatomos acaban en vocal se suele mostrar una periodicidad residual en la

parte final que se va atenuando muy poco a poco. El criterio para marcar este tipo de

vocales es colocar las marcas hasta que la energía no sea demasiado baja y a partir

de ahí colocar marcas equiespaciadas de forma que la curva de frecuencia descienda

suavemente. En la figura 66 se muestra una /o/ correctamente marcada y al final de un

logatomo.

210

Page 228: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 66: FONEMA FINAL DE LOGATOMO

Hiatos o Diptongos

Los diptongos o hiatos no presentan grandes dificultades durante la tarea de

marcado, pues se comportan periódicamente como si fueran una sola vocal. La

principal dificultad de estas dos agrupaciones de fonemas se encuentra en la fase de

segmentación como se verá posteriormente. Para marcar estos grupos, basta con

poner las marcas buscando la periodicidad como si de una única vocal se tratara. La

figura 67 presenta el hiato /oa/ correctamente marcado. Se puede comprobar que su

aspecto es muy similar al de una vocal única.

211

Page 229: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 67: EJEMPLO DE MARCADO DEL HIATO /OA/

Aproximantes

Existen fonemas que en función del contexto en el que se encuentran se comportan

de un modo u otro. Este es el caso de los fonemas /g/, /d/ y / b/. Cuando estos

fonemas se encuentran entre vocales actúan como fonemas de transición entre una

vocal y otra. Es por esto por lo que se denominan fonemas aproximantes. El marcado

de estos fonemas se realiza buscando la periodicidad de la señal. Se pueden detectar

por la energía, ya que suelen tener menor nivel que las vocales.

Hay que tener en cuenta que en función de la emoción y del locutor, la transición

puede resultar poco periódica y existir mucha distorsión de forma que el marcado sea

difícil. En la figura 68 se muestra el fonema /g/ entre dos vocales. Se puede comprobar

que la energía es mucho menor en el fonema aproximante que en las dos vocales.

212

Page 230: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 68: FONEMA APROXIMANTE /G/ ENTRE DOS VOCALES EN ESTADO NEUTRO

En la figura 69 se muestra el fonema en un logatomo con emoción sorpresa. Se

puede ver como en este caso la señal se muestra más irregular que en la figura

anterior.

FIGURA 69: FONEMA APROXIMANTE /G/ ENTRE DOS VOCALES EN EMOCIÓN SORPRESA

213

Page 231: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

Oclusivas sonoras

En este caso la /b/, /d/ y /g/ presentan un comportamiento muy similar al de las

oclusivas. Así cuando uno de estos fonemas se encuentra en posición inicial, tras

nasal o tras /l/ están constituidos por un silencio inicial seguido de una explosión. La

principal diferencia con las oclusivas sordas, es que en este caso el silencio presenta

una cierta sonoridad, difícil de marcar en ocasiones, pero que es evidente que existe.

Estos fonemas se suelen marcar en función de la sonoridad que presenten en su

silencio inicial. Si es posible, se marcan los periodos. Cuando la periodicidad sea difícil

de detectar se pondrán marcas equiespaciadas manteniendo cierta regularidad. En la

figura 70 se presenta una /b/ inicial seguida de una /u/. En este caso, se puede ver

como la sonoridad es tal que permite el marcado de sus periodos.

FIGURA 70: EJEMPLO FONEMA OCLUSIVO INICIO DE LOGATOMO

Nasales

Entre los sonidos nasales se incluyen los fonemas /m/, /n/ y /ñ/. Se trata de sonidos

sonoros que muestran periodicidad por lo que la marcación no presenta gran dificultad.

En general no se pueden detectar por energía y tampoco varían la frecuencia

fundamental de su entorno. En función del contexto será más fácil o más difícil

segmentar este tipo de fonemas como se verá posteriormente. En la figura 71 se

presenta una /m/ entre dos vocales. En este caso el marcado no presenta mayores

problemas, y además la /m/ es bastante diferenciable de las vocales a simple vista.

214

Page 232: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 71: EJEMPLO FONEMA NASAL /M/ ENTRE DOS VOCALES

Laterales

Los fonemas laterales son: /l/ e /y/14. Son sonidos sonoros por lo que se marcan de

forma similar al resto de casos. Estos fonemas tienen una frecuencia media similar a

los fonemas que les rodean por lo que se tendrán tramos de valor constante en la

curva de tono. En la siguiente figura se muestra un ejemplo de un fonema lateral entre

dos vocales.

14 Conviene recordar que aunque los fonemas /ll/ e /y/ son distintos, hoy en día es raro que el locutor los pronuncie de forma distinta por lo que en general se han fundido en uno solo.

215

Page 233: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 72: FONEMA LATERAL /L/ ENTRE DOS VOCALES

Vibrantes

Los fonemas vibrantes son la /r/ y la /rr/. Ambos presentan una especie de vibración

periódica que permite marcarlos aunque no siempre resulta una tarea fácil de realizar

puesto que en ocasiones la vibración es muy irregular. El fonema /r/ es un fonema de

transición entre vocales y el fonema /rr/ muestra lóbulos de vibración entre breves

silencios. El último lóbulo está influenciado por el fonema siguiente mostrando la

misma frecuencia e incluso una forma de onda similar.

En la figura siguiente se muestra un ejemplo de un fonema /r/ entre dos vocales. En

el marcado se pretende buscar la periodicidad de la vibración.

216

Page 234: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 73: MARCADO FONEMA VIBRANTE /R/ ENTRE VOCALES

La figura presenta una /rr/ entre dos vocales. Se puede ver como aparecen tres

silencios separando los dos lóbulos de vibración de las vocales adyacentes.

FIGURA 74: MARCADO FONEMA VIBRANTE MÚLTIPLE /RR/ ENTRE VOCALES

217

Page 235: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

REVISIÓN DE LA SEGMENTACIÓN

El procedimiento habitual para segmentar un logatomo consiste en aplicar en primer

lugar un zoom sobre el logatomo de interés hasta situarnos en la zona fronteriza y

tener una precisión los más exacta posible. Existen determinados sonidos como los

oclusivos o fricativos que son muy fáciles de segmentar, puesto que se diferencian

mucho del resto. Si se quiere comprobar que se han escogido los puntos correctos, se

puede escuchar la sección seleccionada mediante la tecla TAB del teclado. Para

aquellos fonemas difíciles de distinguir, se suelen aplicar sucesivos Zoom y escuchar.

No obstante hay casos como los diptongos, la /ñ/ o la /y/ en los que resulta imposible

determinar el punto exacto de separación entre fonemas, por lo que se trata más bien

de encontrar una solución aceptable que no cometa un error apreciable.

Las características básicas de cada grupo fonético al segmentar son las siguientes:

OCLUSIVAS SORDAS Y OCLUSIVAS SONORAS

Se agrupan ambos tipos porque al ser segmentadas presentan un comportamiento

muy similar. En general son fonemas sencillos de segmentar y fácilmente

identificables.

Sólo remarcar que cuando van precedidos de fonemas sonoros, el silencio de las

oclusivas puede presentar una sonoridad residual que al segmentar complica la

determinación del comienzo del fonema. Se suele optar por incluir en la oclusiva

aquella sonoridad que esté tan atenuada que apenas se pueda apreciar al escuchar.

El segundo problema se encuentra en la explosión que normalmente precede a una

vocal. Suele ocurrir que los primeros periodos posteriores a la explosión, presenten

irregularidades. A pesar de ello, estas irregularidades no se incluyen en el fonema

oclusivo al marcarlo, limitándolo a la explosión. En la siguiente figura se presenta

una /k/ segmentada.

218

Page 236: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 75: EJEMPLO SEGMENTACIÓN FONEMA OCLUSIVO /K/

FRICATIVAS

Los sonidos fricativos también resultan muy fáciles de identificar, pues sus

características los hacen a simple vista muy diferentes del resto. Los fonemas

fricativos, afectan ligeramente a los sonidos adyacentes provocando una especie de

ruido en sus periodos adyacentes. En general, haciendo uso de la opción oír se trata

de delimitar la separación más correcta entre fonemas.

Se presenta en la siguiente figura una /z/ segmentada. Se comprueba que al

principio del fonema, existe cierta periodicidad residual que procede de la vocal

anterior. El punto de delimitación del final de la /z/ resulta más sencillo de identificar,

pues la transición desde la /s/ hasta la siguiente vocal es bastante brusca, pasándose

de un silencio ruidoso a un periodo sonoro de forma clara.

219

Page 237: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

FIGURA 76: EJEMPLO SEGMENTACIÓN FONEMA FRICATIVO /T/

SONIDOS SONOROS

La dificultad a la hora de segmentar un fonema sonoro se encuentra no tanto en el

propio fonema como en el contexto en que se encuentre dicho sonido. Así, separar

una vocal entre dos fricativas es muy sencillo. Por el contrario, cuando la vocal forma

parte de un diptongo, o aparece junto a los fonemas /y/ y /ñ/, resulta casi imposible

determinar los puntos exactos que delimitan el fonema vocálico.

Cuando se encadenan de forma consecutiva varios fonemas sonoros, en general será

muy importante utilizar repetidas veces la opción de oír, para determinar lo mejor

posible las zonas de separación entre unos sonidos y otros. Además podemos

ayudarnos fijándonos en la forma de onda que pueden presentar ciertos grupos de

sonidos.

De este modo conviene saber que los fonemas aproximantes y los laterales se

detectan muy bien por energía. En efecto, estos sonidos suelen presentar una energía

bastante menor que la del entorno que le rodea. Los sonidos vibrantes tienen una

forma muy característica, tanto la /r/ como la /rr/, que permite su segmentación de

forma sencilla.

El contexto más complejo es el de los diptongos o hiatos, y las nasales

(especialmente problemático es el caso de la /ñ/) seguidas o precedidas de vocales.

En estos últimos casos resulta imposible separar perfectamente unos fonemas de

220

Page 238: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

otros. Se intenta entonces proponer una solución que no cometa demasiado error. En

la figura 77 y en la figura 78 se muestran ejemplos de segmentación de un hiato y del

grupo /ñ/+vocal.

FIGURA 77: EJEMPLO SEGMENTACIÓN FONEMA /Ñ/

FIGURA 78: EJEMPLO SEGMENTACIÓN HIATO /AE/

221

Page 239: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

3. Lenguaje Perl

Perl se considera un lenguaje interpretado, es decir, no es necesaria una previa

compilación para poder ejecutarse, lo único que necesita el intérprete de perl es el

código a ejecutar. Es por ello que no se habla de programas en lenguaje perl sino de

scripts. A continuación se realiza una breve explicación de los elementos que

componen los scripts implementados y que se utilizan en este proyecto:

VARIABLES Y DATOS

En perl no hay que declarar los tipos de las variables y éstas siempre van

precedidas por unos caracteres especiales que indican el tipo de dato al que

hacen referencia. Existen 3 tipos posibles de variables [Perl 6]:

Variables escalares : Van precedidas del símbolo $ y contienen datos

de tipo escalar, es decir, valores alfanuméricos.

Variables listas: Van precedidas del símbolo @ y contienen una

colección ordenada de valores escalares. Al ser una lista de valores

para acceder a cada uno de ellos se utiliza un número que indica su

posición dentro de la lista (índice de la lista). La numeración empieza

en cero.

Variables matrices asociadas ó hashes: Comienzan con el símbolo %

y se trata de matrices que se referencian por el par clave/valor.

Hay que destacar que se distingue entre mayúsculas y minúsculas, y que se

puede usar el mismo nombre para variables de diferentes tipos, sin que tengan

conflictos. Los operadores aritméticos solo afectan a los valores numéricos. A

continuación se muestran ejemplos de asignaciones de variables y accesos a

los valores de estas.

CUADRO 2: ASIGNACIONES DE VARIABLES EN PERL

ENTRADA /SALIDA Los valores de las variables pueden ser mostrados en pantalla mediante la

instrucción print. Para asignar un valor desde el teclado a una variable se

asigna a la variable la representación del teclado <STDIN> [Perl 6].

222

Page 240: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

ESTRUCTURAS DE CONTROL

Las estructuras han sido heredadas del lenguaje C/C++, por lo que ha sido

fácil la adaptación a las mismas. A continuación se muestra un cuadro con

ellas. [Perl 6]

CUADRO 3: ESQUEMA DE ESTRUCTURAS DE CONTROL EN PERL

EXPRESIONES REGULARES Y PATRONES DE BÚSQUEDA

Una de las características más potente y usada en perl es la manipulación

de cadenas. Para ello existen una gran variedad de símbolos y caracteres

especiales que actúan como patrones de búsqueda, comparación o sustitución

en una cadena. Las expresiones a buscar se escriben entre barras “/”, y si se

quisiera buscar este carácter se escribiría “\/”. Los operadores que se han

empleado en la implementación de scripts son sobre todo [Perl 6]:

Patrones de búsqueda : Se utilizan los símbolos =~  (contiene) y !~ (no

contiene) para la comparación de expresiones. Un ejemplo de su uso es:

if($cadena =~ /hola/) Si la variable cadena contiene “hola”

Para realizar una comparación y búsqueda más exacta se usan los

metacaracteres, que son una serie de caracteres que se usan con un

significado especial y distinto del que representan. Entre los que se han

utilizado destacan:

223

Page 241: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

METACARACTER DESCRIPCIÓN/EJEMPLO

/^expresión/ Busca la expresión sólo al principio de la cadenaif ($cadena15 =~  /^expresión)

/$expresión/ Busca la expresión sólo al final de la cadenaif ($cadena =~  /$expresión/)

/^$/Es una combinación de los anteriores que significa que se busca una línea en blancoif ($cadena =~  /^$/)

/carácter*/ó /carácter+/ Indica que se busca una palabra en la cadena que empiece por el carácter indicado

? ó . Busca cualquier carácter en una cadenaif ($cadena =~  /m?no/) Busca mano,mbno, etc..

\b y \B

Busca una cadena o expresión sola o dentro de otra respectivamenteif ($cadena =~  /\bexpresión/) Busca dentro de cadena la expresión sola (no forma parte de una cadena). if ($cadena =~  /\Bexpresión/) Busca dentro de cadena algo que contenga la expresión (forma parte de una cadena).

/expresion1|expresion2/ Se realiza una búsqueda doble o alternativa, es decir, busca dentro de una cadena una expresión u otra

TABLA 66: PATRONES DE BÚSQUEDA EN PERL

Sustituciones: En las sustituciones se antepone la letra “s” de sustitución

a los delimitadores de la expresión. Usando la variable implícita $_ se

realizan sustituciones rápidas. Por ejemplo, la expresión

s/expresión1/expresión2/ busca en la variable $_ la expresión1 y la

sustituye por expresión2. También aquí se utilizan una serie de

metacaracteres que amplían las posibilidades de sustitución pero en este

proyecto se han utilizado:

METACARACTER DESCRIPCIÓNs/exp1/exp2/g Sustituye todas las exp1 que existan en la cadena

por exp2\s Sustituye cualquier espacio en blanco

s/\s/expresión/\D Sustituye cualquier no número de la cadena

s/\D/expresión/\d Sustituye cualquier dígito entre 0-9 de la cadena

s/\d/expresión/\S Sustituye todo lo que no sean espacioss/exp1/exp2/gi Sustituye exp1 por exp2 sin tener en cuenta

mayúsculas y minúsculas

TABLA 67: COMANDOS PARA SUSTITUCIONES EN PERL

15 Muchas veces es preferible usar la variable implícita $_ para realizar las búsquedas, de este modo no es necesario incluir la variable en la comparación. En este caso la instrucción quedaría if(/expresión/) realizándose la comparación con la cadena contenida en la variable $_.

224

Page 242: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

Funciones: El lenguaje incluye una serie de funciones especiales para el

tratamiento de cadenas. Entre ellas, se han utilizado split y join. La

función split trocea una cadena en distintos campos, usando como

delimitador un carácter dado y devuelve una matriz @ con los campos

obtenidos. La función join, en cambio, compone una cadena a partir de

distintos campos usando como delimitador de cada campo un carácter

dado y devolviendo la cadena generada.

MANEJO DE ARCHIVOS

Se puede dar el caso que después de realizar cierto proceso con datos, se

tengan que grabar estos para usarlos posteriormente. Se presenta la necesidad

por tanto de crear un archivo. Todo archivo tiene un nombre lógico y un nombre

físico. El nombre lógico es el que se utiliza en la implementación para referirnos

al fichero físico. Se utilizan los metacaracteres “>” y “>>” para escribir por

primera vez y para añadir información a un fichero respectivamente. Las

funciones que se utilizan son open (para abrir el fichero), print (para escribir) y

close (para liberarlo). En el cuadro adjunto se tienen diferentes ejemplos de

utilización de estas funciones para la creación y escritura en ficheros [Perl 6].

CUADRO 4: EJEMPLO MANEJO DE FICHEROS EN PERL

4. Creación fichero por lotes

Todos los ficheros por lotes deben llevar la extensión *.bat, y son ficheros de texto.

A la hora de la ejecución debemos teclear el nombre del archivo a continuación del

símbolo del sistema. Para detener el procesamiento del archivo es necesario teclear

Ctrl+Pausa. [Barajas 96] Como ya se ha comentado todos los comandos de MS-DOS

son admitidos en un archivo por lotes. Además existen una serie símbolos empleados

exclusivamente en los ficheros por lotes.

225

Page 243: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

Estos símbolos se muestran en la siguiente tabla:

SÍMBOLO SIGNIFICADO:etiqueta Nombre de la etiqueta%número Parámetro del fichero por lotes%variable% Variable de entorno%%variable Variable de la orden for

TABLA 68: SÍMBOLOS EMPLEADOS EN FICHEROS POR LOTES

Cuando se quiere acceder o utilizar un parámetro introducido por línea de

comandos al script *.bat se utiliza el signo % seguido del número de parámetro para

referirnos a él. Se pueden tener hasta nueve parámetros de entrada.

Existen una serie de órdenes diseñadas específicamente para estos ficheros:

Orden ECHO: Si el eco está activo, se imprime por pantalla todos los

comandos y resultados del proceso. Se puede utilizar de diferentes formas:

ECHO Indica si está activado o desactivado el ecoECHO ON Activa el ecoECHO OFF Desactiva el eco (si @ delante no imprime orden)ECHO mensaje Muestra un mensaje en pantallaECHO. Muestra una línea en blanco en pantalla

Orden REM: Se utiliza para escribir comentarios en el código del fichero por

lotes. Las líneas precedidas por rem serán ignoradas durante el procesado del

fichero. También se utiliza “::” para escribir comentarios que facilitan la lectura y

la detección de errores.

Orden PAUSE: Detiene temporalmente el procesamiento de un script. Si se

encuentra esta orden en un archivo por lotes, se visualiza un mensaje por

pantalla y se bloquea hasta que la pulsación de una tecla le haga seguir. Para

pausar un proceso también se puede pulsar Ctrl+Pausa y así, interrumpir el

desarrollo del fichero.

Orden GOTO: Realiza un salto en la ejecución del programa hasta una etiqueta

especificada como parámetro. Las etiquetas van precedidas por el símbolo “:”

desviar la ejecución del programa hasta una etiqueta especificada como

parámetro.

Orden IF: Realiza un salto condicional en el proceso de ejecución del fichero

por lotes. La sintaxis de esta orden es variada y admite diferentes

implementaciones:

IF EXIST fichero orden Si existe el fichero se ejecuta el comandoIF NOT EXIST fichero orden Si no existe el fichero se ejecuta el comando

226

Page 244: lorien.die.upm.eslorien.die.upm.es/.../DST/PFC_DST_ENTREGADO_FINAL.docx · Web viewercepción de algún cambio en las condiciones internas o externas de la persona. E. ... Se mide

Desarrollo de un conversor texto-voz multiemoción en castellano por concatenación de difonemas ANEXO I

IF cadena1==cadena2 orden Si se cumple la condición se ejecuta la ordenIF NOT cadena1==cadena2 orden Si no se cumple la condición se ejecuta la orden

IF ERRORLEVEL Nº orden Si el código de salida del último programa es igual o superior al número, se ejecuta la orden

IF NOT ERRORLEVEL Nº orden Si el código de salida del último programa es inferior al número, se ejecuta la orden

Orden FOR: Esta orden repite el comando espedificado para cada valor de un

conjunto (normalmente es una lista de nombres de ficheros). La sintaxis de

esta orden es FOR %%variable IN (conjunto) DO comando

Por ejemplo, en la instrucción “for %%i in (listaFicheros) do type %%i”, la

variable %%i toma cada uno de los valores del conjunto y se los pasa al

comando type que los imprimirá por pantalla.

Orden CALL: Se utiliza para llamar a un fichero por lotes desde otro. Su

sintaxis es CALL fichero [ParámetrosDelFichero]

227