Вы находитесь на странице: 1из 116
UNIVERSIDAD DE VALLADOLID ESCUELA UNIVERSITARIA POLITÉCNICA I.T.T. Telecomunicación Especialidad: Sistemas Electrónicos

UNIVERSIDAD DE VALLADOLID

UNIVERSIDAD DE VALLADOLID ESCUELA UNIVERSITARIA POLITÉCNICA I.T.T. Telecomunicación Especialidad: Sistemas Electrónicos

ESCUELA UNIVERSITARIA POLITÉCNICA

I.T.T. Telecomunicación Especialidad: Sistemas Electrónicos

PROYECTO FIN DE CARRERA:

Diseño y creación de un corpus oral para su aplicación en el modelo de síntesis de voz Mbrola

Autores:

Pérez Martínez, Alberto

Vicente Cabeza, Oliver

Departamento de informática (ATC, CCIA y LSI)

Tutores:

César González Ferreras David Escudero Mancebo

Septiembre 2002

Índice general

Índice general

Índice general

1. Introducción ……………………………………………………

7

2. Objetivos………………………………………………………….

11

3. Síntesis de voz, visión histórica ………

13

3.1. Introducción…………………………………………………

13

3.2. Estructura básica de un sintetizador ………………………….

14

3.2.1.

Módulo de procesamiento natural de la lengua NLP …

15

3.2.1.1.Analizador de texto ……………………………….

16

3.2.1.2.Fonetizador automático……………………………

17

3.2.1.3.Generación de prosodia …………………………

21

3.2.2.

El componente DSP …………………………………

23

3.2.2.1.Sintetizadores basados en reglas ………………….

24

3.2.2.2.Sintetizadores concatenativos …………………….

25

4. Síntesis Mbrola …………………………………………………

31

4.1. Técnicas de síntesis PSOLA ………………………………

31

4.1.1. Introducción ………………………………………….

31

4.1.2. Algoritmo TD-PSOLA ………………………………

31

4.2. Proyecto Mbrola …………………………………………….

34

4.3. Algoritmo MBR-PSOLA …………………………………

35

5. Creación de una voz Mbrola …………………………………….

37

5.1. Introducción …………………………………………………

37

5.2. Diseño del corpus ……………………………………………

37

5.2.1. Introducción ………………………………………….

37

5.2.2. Representación fonética ………………………………

38

5.2.3. Representación ortográfica …………………………

40

5.3. Grabación ……………………………………………………

41

5.3.1. Introducción ………………………………………

41

5.3.2. Material ……………………………………………….

42

5.3.3. Proceso …………………………………………… ….

42

5.4. Segmentación y etiquetado …………………………….…….

44

5.4.1. Dstudio ……………………………………………….

44

5.4.2. Praat ……………………………………………… ….

45

5.5. Formato Mbrola ……………………………………………

47

Índice general

6.

Parlante, estudio de funcionamiento ……………………………

51

6.1. Introducción …………………………………………………

51

6.2. Descripción de la estructura …………………………………

51

6.3. Herramienta de gestión de configuraciones “gconfig” ………

53

6.3.1. Introducción …………………………………………

53

6.3.2. Parámetros de la herramienta gconfig ………………

54

6.3.3. Formato de entrada de gconfig (fichero de configuración). 55

6.3.3.1.Sección de análisis………………………………

55

6.3.3.2.Sección de síntesis ………………………………

56

6.3.3.3.Sección de reproducción ………………………….

56

6.3.3.4.Sección de conexiones ……………………………

56

6.3.4.

Ficheros que componen la herramienta ………………

58

6.4. Descripción de los módulos …………………………………

58

6.4.1.

Módulo Textofon……………………………………

60

6.4.1.1.Descripción ……………………………………….

60

6.4.1.2.Sintaxis ……………………………………………

60

6.4.1.3.Entrada/salida ……………………………………

60

6.4.2.

Módulo Duración ………………………………… …

61

6.4.2.1.Descripción ……………………………………….

61

6.4.2.2.Sintaxis ……………………………………………

62

6.4.2.3.Entrada/salida ……………………………………

62

6.4.3.

Módulo Pitch ………………………………………….

63

6.4.3.1.Descripción ……………………………………….

63

6.4.3.2.Sintaxis ……………………………………………

64

6.4.3.3.Entrada/salida …………………………………….

64

6.4.4.

Módulo Param ………………………………………

64

6.4.4.1.Descripción ………………………………………

64

6.4.4.2.Sintaxis …………………………………………….

64

6.4.4.3.Entrada/salida ……………………………………

65

6.4.4.4.Formato unificado …………………………………

65

6.4.5.

Módulo Fildur …………………………………………

68

6.4.5.1.Descripción ………………………………………

68

6.4.5.2.Sintaxis …………………………………………….

68

6.4.5.3.Entrada/salida ………………………………………

69

6.4.6.

Módulo Filpitch ………………………………………

69

6.4.6.1.Descripción ………………………………………

69

6.4.6.2.Sintaxis …………………………………………….

69

6.4.6.3.Entrada/salida ………………………………………

69

6.4.7.

Módulo Mixer ………………………………………….

69

6.4.7.1.Descripción ………………………………………

69

6.4.7.2.Sintaxis …………………………………………….

69

6.4.7.3.Entrada/salida ……………………………………

70

6.4.8.

Módulo En2text ……………………………………….

70

6.4.8.1.Descripción ……………………………………….

70

6.4.8.2.Sintaxis ……………………………………………

70

6.4.8.3.Entrada/salida ……………………………………

70

6.4.9.

Módulo Text2en ………………………………………

70

6.4.9.1.Descripción ……………………………………….

70

6.4.9.2.Sintaxis ……………………………………………

71

Índice general

6.4.9.3.Entrada/salida ………………………………….

71

6.4.10.

Módulo Par2mbrola ……………………………….

71

6.4.10.1. Descripción …………………………………

71

6.4.10.2. Sintaxis ……………………………………

71

6.4.10.3. Entrada/salida ………………………………

72

6.4.11.

Módulo Mbrolawrap ………………………………

72

6.4.11.1. Descripción ………………………………

72

6.4.11.2. Sintaxis …………………………………….

72

6.4.11.3. Entrada/salida ………………………………

72

7. Página Web ……………………………………………………

73

8. Conclusiones ………………………………………………….

79

Bibliografía……………………………………………………….

81

Apéndice A: Código SAMPA ……………………………………

83

Apéndice B: Lista de difonemas que existen en palabras …………

85

Apéndice C: Lista de difonemas que solo existen en transiciones entre palabras

………………………………………………………………………

91

Apéndice D: Lista de difonemas formados por dos fonemas iguales

93

Apéndice E: Corpus…………………………………………………

95

Apéndice F: Trascripción fonética del corpus………………………

99

Apéndice G: Localización de los difonemas………………………

103

Apéndice H: Conjunto de enumerados que puede producir el módulo txt2alo

………………………………………………………………………

115

Índice general

CapítuloCapítuloCapítuloCapítulo 1111

IntroducciónIntroducciónIntroducciónIntroducción

CAPÍTULO I: INTRODUCCIÓN

Este informe refleja el trabajo de los autores dedicado a la asignatura proyecto de fin de carrera, para la obtención del titulo de Ingeniero técnico de telecomunicación especialidad en sistemas electrónicos. Ha sido desarrollado durante el curso 2001/2002 y su titulo es Síntesis de voz a partir de texto basada en el modelo de síntesis concatenativo Mbrola [9].

Este trabajo esta dedicado a la síntesis de voz a partir de texto, es decir a los sistemas capaces de generar un discurso hablado a partir de un archivo de texto. Actualmente se están desarrollando distintas alternativas sobre este campo, abarcando muchas perspectivas de mercado. Una de las más importantes consiste en la habilitación de sistemas de ayuda para discapacitados visuales, como por ejemplo el acceso a Internet. Otro campo de gran importancia es la aplicación de estos sistemas a servicios de telecomunicaciones como los de ayuda al cliente en la telefonía donde la iteración entre las dos partes es muy pequeña. Otras aplicaciones son la educación mediante sistemas de aprendizaje automáticos y el tratamiento de trastornos del habla.

En el campo de la síntesis de voz a partir de texto existen actualmente dos tendencias a la hora de generar el discurso. La primera se basa en la descripción formal mediante una serie de reglas de la influencia de unos fonemas en otros, estos sistemas fueron los pasos iniciales en el campo de la síntesis de voz, se basan en tratar de emular el sistema fonador humano. La segunda trabaja almacenando muestras de transiciones fonéticas y co-articulaciones en una base de datos de voz segmentada, y usándolas como unidades acústicas mínimas. Estas dos tendencias han dado lugar a la síntesis por regla y síntesis por concatenación. Siendo este ultimo modelo de síntesis el tratado en este trabajo.

Los dos principales modelos existentes de sistemas concatenativos son el modelo híbrido Harmónico-Estocástico (H/S) y el de Suma Solapada de Pitch Síncronos en el Dominio del Tiempo (TD-PSOLA). Ambos presentan unas interesantes características prácticas: una gran calidad de voz combinado con un bajo coste operacional. El modelo híbrido Harmónico-Estocástico es intrínsecamente más potente que el TD-PSOLA, pero es también más intensivo operacionalmente.

El reciente desarrollo del algoritmo Mbrola nos ofrece un algoritmo en el dominio del tiempo que muestra la gran eficiencia de su capacidad de suavizado como la

CAPÍTULO I: INTRODUCCIÓN

del modelo híbrido Harmónico-Estocástico así como sus altos ratios de compresión de datos mientras conserva la complejidad computacional del TD- PSOLA.

Los problemas de calidad en el discurso producidos por la discontinuidad de fase, salto en el pitch y la discontinuidad de la envolvente espectral utilizando el algoritmo TD-PSOLA se reducen con al algoritmo Mbrola mediante un tratamiento a dos niveles. En primer lugar se trabaja sobre la base de datos que previamente se ha almacenado siguiendo el algoritmo TD-PSOLA. El tratamiento que se realiza consiste en analizar y resintetizar todos los segmentos sonoros de la base de datos siguiendo el modelo Multi-Band Excited (MBE). El hecho de volver a sintetizar los segmentos sonoros permite fijar la misma frecuencia fundamental y hacer una corrección en la fase. En segundo lugar, se realiza una interpolación lineal de tramas en el dominio temporal durante la fase de síntesis. Las mejoras introducidas con esta variante consiguen suavizar un poco las transiciones.

En el informe se ha empezado realizando una breve introducción a la síntesis de voz a partir de texto, describiendo los distintos componentes de un sistema de conversión texto-voz y haciendo una breve clasificación de los distintos sistemas utilizados actualmente, esta clasificación está basada en los distintos modelos de generación del discurso.

Posteriormente nos hemos centrado en los sistemas de síntesis concatenativa tipo PSOLA, especialmente en el algoritmo MBR-PSOLA mas conocido como Mbrola [9] describiendo sus características técnicas superiores a los algoritmos de los que precede y el entorno en el que se ha desarrollado (proyecto Mbrola) en el laboratorio de TCTS del Faculté Polytechnique de Mons (Bélgica).

Relacionado con el apartado anterior llegamos al eje central del trabajo, la creación de una base de datos que sirva al algoritmo de síntesis para generar el discurso. Describiremos cómo diseñar un corpus oral, cómo segmentarlo y etiquetarlo posteriormente, así como una breve descripción de las herramientas de visualización y segmentación y de los formatos de datos utilizados. También se describe en este apartado el proceso y material utilizado en la grabación del corpus.

En el siguiente apartado describimos el funcionamiento y estructura de la herramienta de síntesis a partir de texto PARLANTE [3] desarrollado por Leopoldo N. Feal Pinto para la asignatura sistemas informáticos en el curso 1997/1998. Veremos su estructura de funcionamiento modular así como el funcionamiento individual de cada módulo utilizado en nuestra arquitectura. PARLANTE [3] está basado en una herramienta de configuración llamada “gconfig” que le permite un gran dinamismo a la hora de diseñar distintas arquitecturas de sistemas de síntesis.

Por ultimo describimos el resultado práctico de todo el estudio condensado en la creación de una página Web, que permitirá al usuario la utilización del sistema utilizado y de la base de datos generada a lo largo del trabajo. También permitirá la utilización de distintos módulos de entonación y bases de datos para poder establecer una comparativa entre ellos. Cada opción generará un archivo de

CAPÍTULO I: INTRODUCCIÓN

sonido Wav que podrá ser reproducido desde la misma página Web. Para la obtención de estos resultados se facilitará en la página un formulario que deberá ser rellenado por el usuario. Este formulario constará de una sección para introducir el texto deseado y de una serie de opciones referentes a los distintos modelos de entonación y bases de datos que podrá utilizar para la síntesis.

En la Web además podremos encontrar toda la información recopilada a lo largo del trabajo así como un manual para el diseño y generación de una base de datos para el sistema de síntesis Mbrola.

CAPÍTULO I: INTRODUCCIÓN

CapítuloCapítuloCapítuloCapítulo 2222

ObjetivosObjetivosObjetivosObjetivos

CAPÍTULO II: OBJETIVOS

El tiempo dedicado a este trabajo ha sido el segundo cuatrimestre del curso 2001/2002 y los meses de julio y agosto del 2002. Y los objetivos de dicho trabajo son los siguientes:

El primer paso será la comprensión del proceso de síntesis de voz a partir de texto. Haremos un estudio del estado del arte de los sistemas de síntesis de voz que existen en la actualidad y analizaremos la arquitectura de un sistema de síntesis de voz genérico. Nos centraremos en el funcionamiento de los sistemas basados en el modelo de síntesis PSOLA, especialmente los basados en el algoritmo MBR- PSOLA [9] mas conocido como Mbrola. Además, nos plantearemos realizar una relación de prestaciones de unos modelos frente a otros que nos permita conocer las ventajas e inconvenientes de todos ellos.

Una vez asimilados los conocimientos necesarios sobre el funcionamiento de la síntesis de voz basada en el modelo Mbrola, nuestros esfuerzos se centrarán en la creación de una base de datos que sirva de voz para la síntesis mediante el modelo Mbrola. Las tareas principales son el diseño y creación de un corpus para su posterior segmentación en difonemas y etiquetado de los mismos. Para esta tarea seguiremos las indicaciones proporcionadas por los creadores del algoritmo MBR-PSOLA [9], que se dan como parte del proyecto Mbrola. En este sentido también nos planteamos hacer un estudio de las distintas herramientas de visualización y segmentación disponibles en el laboratorio.

Tras la obtención de una base de datos para la síntesis Mbrola solo nos falta la herramienta capaz de generar los parámetros fonéticos y prosódicos necesarios para que el algoritmo funcione correctamente, como herramienta usaremos un sistema ya existente llamado PARLANTE [3] desarrollado por Leopoldo N. Feal Pinto para el Departamento de Informática de la Universidad de Valladolid, nuestra tarea consistirá en la comprensión de su funcionamiento y estructura, de manera que podamos utilizar la configuración más útil y eficiente para nuestros propósitos. El departamento dispone de distintas versiones de los módulos que intervienen el la síntesis, de los que seleccionaremos los que nos sean de mayor utilidad.

CAPÍTULO II: OBJETIVOS

Finalmente nuestro último objetivo es la creación de una página Web que sirva como interface sencillo para el usuario del sistema facilitándole la posibilidad de distintas opciones de síntesis sin necesidad de conocimientos de la herramienta PARLANTE [3]. Esto nos permitirá un contacto con los lenguajes y programas de edición Web. En la página además reflejaremos los resultados de nuestro estudio a lo largo de todo el trabajo y manual para el diseño y creación de un corpus oral.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

CapítuloCapítuloCapítuloCapítulo 3333

SíntesisSíntesisSíntesisSíntesis dededede voz,voz,voz,voz, VisiónVisiónVisiónVisión histórica.histórica.histórica.histórica.

3.1 Introducción

En este apartado trataremos de dar una introducción corta y comprensiva a la síntesis de texto a habla (TTS), destacando sus componentes del procesamiento natural de la lengua (NLP) y del proceso digital de la señal (DSP).

Un sintetizador TTS es un sistema computerizado que debe ser capaz de leer cualquier texto en voz alta, si este se le introdujera de la forma indicada (directamente, reconocedor óptico, etc.). Hay una diferencia fundamental entre los sistemas que tratamos aquí y cualquier otra maquina capaz de reproducir el habla (como el magnetófono), esta es que nosotros estamos interesados en la producción de nuevas oraciones y no en la reproducción. Sistemas que concatenan simplemente las palabras o partes aisladas de las oraciones, denotadas como sistemas de la respuesta a la voz, son solamente aplicables cuando se requiere un vocabulario limitado y cuando las oraciones a reproducir responden a una estructura muy estricta (aviso en las estaciones de la llegada de trenes). En el contexto de la TTS es imposible (e inútil) registrar y almacenar todas las palabras de una lengua. De manera que resulta conveniente definir TTS como la producción automática del discurso, a través de una trascripción del grafema a fonema de las oraciones a pronunciar.

Hasta hace unos años el parámetro fundamental que determinaba la utilidad de un sistema de conversión texto-voz era la inteligibilidad (es decir que el mensaje fuera entendido por el oyente), en la actualidad la mayor parte de los sistemas cumplen este objetivo con una inteligibilidad próxima al habla natural, lo que se busca es la naturalidad en el habla para que un usuario que este escuchando durante varios minutos no se sienta aburrido y cansado. Un lector humano introduce en el texto una información que denominamos prosodia. La prosodia relaciona los distintos sonidos del mensaje hablado, y permite reflejar tanto elementos lingüísticos (modalidad, énfasis,…) como no lingüísticos (carácter del locutor, estado de animo,…). La habilidad del locutor para reflejar acústicamente

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

el contenido o sentido del mensaje mide la calidad del proceso de lectura realizada.

Los usos potenciales de los sistemas de alta calidad TTS son numerosos:

- Servicios de telecomunicaciones. Los sistemas TTS permiten tener acceso a la información textual sobre el teléfono. Sabiendo que el 70% de las llamadas requieren una interacción muy pequeña puede llegar a ser muy útil.

- Educación de la lengua adjuntando al sistema TTS un sistema de aprendizaje automatizado.

- Ayuda a personas disminuidas (trastornos en la voz producidos por desordenes mentales y motores/sensitivos), con ayuda de un teclado y un programa de generación de oraciones rápido el discurso se puede producir en unos segundos para remediar estos impedimentos.

- Libros y juguetes.

- Supervisión vocal, en muchas ocasiones la información oral es mas eficiente que los mensajes escritos.

Como se puede ver los campos están muy abiertos. Trataremos de explicar ahora como es capaz de leer un sistema TTS:

Podríamos plantear el problema como el diseño de una maquina que funcione según lo hace el proceso natural de síntesis de discurso en los humanos, los sonidos vocales gobernados por ecuaciones diferenciales parciales de la mecánica de fluidos, aplicadas a un caso dinámico desde la presión de nuestros pulmones, tensión de la glotis y la configuración vocal y nasal, que se desarrollan con el tiempo. Estos son controlados por nuestra corteza que paralelamente extrae la esencia del texto leído. Aunque es científicamente concebible daría lugar a una maquina muy compleja, no siempre compatible con criterios económicos. Para hacer más sencillo el proceso de síntesis se han desarrollado otros modelos más simples que veremos en apartados posteriores.

3.2 Estructura básica de un sintetizador

La figura 1 muestra un esquema muy sencillo de un sintetizador muy general de TTS. Incluye un módulo de procesamiento natural de la lengua (NLP), capaz de producir una trascripción fonética del texto leído y la duración, junto con la entonación y el ritmo deseado (esto se conoce como prosodia) y una señal numérica que procesa el módulo de tratamiento digital de la señal (DSP), transformando la información simbólica que recibe en discurso.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

Módulo de procesamiento natural de la lengua

Fonemas

Módulo de procesamiento digital de la señal

Prosodia

Voz

de procesamiento digital de la señal Prosodia Voz Texto figura1: Diagrama funcional simple de un sistema

Texto

procesamiento digital de la señal Prosodia Voz Texto figura1: Diagrama funcional simple de un sistema TTS

figura1: Diagrama funcional simple de un sistema TTS

3.2.1 Módulo de procesamiento natural de la lengua NLP

El objetivo del módulo de procesamiento natural de la lengua es determinar a partir del texto dos tipos de información necesarios para que el módulo DSP genere la voz natural. Estos dos tipos de información se conocen como información segmental e información suprasegmental.

- Representación de la información segmental:

La información segmental es la asociada a la cadena de sonidos que componen el mensaje. Cada idioma ha seleccionado una serie limitada de sonidos ideales aceptados por todos para su uso en el habla. Tenemos así una serie de representaciones abstractas que denominamos fonemas y cuyo número depende del idioma. Abandonando el plano abstracto de la lengua y situándonos en el plano del habla, debido a distintas variaciones de las condiciones del habla dan lugar a los distintos alófonos de cada fonema (son excepciones en la pronunciación), esto complica aun mas el diseño de los sistemas de síntesis de alta calidad. Hay que establecer mecanismos que determinen la variación concreta para cada sonido en cada situación. Esta es una de las principales actividades de investigación relacionadas con la información segmental.

- Representación de la información suprasegmental:

La información suprasegmental es aquella relacionada a la prosodia. Esta información es clave para conseguir una alta naturalidad en los sistemas de síntesis de voz. Su representación se determina a partir de tres parámetros acústicos de la señal de voz:

- La evolución temporal de la frecuencia fundamental (pitch), es el parámetro físico más importante desde el punto de vista perceptivo.

- La duración de los segmentos o sonidos que componen la frase.

- La curva de energía de la señal acústica (lo menos importante desde el punto de vista perceptivo).

En la figura 2 tenemos el esqueleto de un módulo NLP general para procesos de TTS vemos que además de la trascripción a fonemas comprende un análisis

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

morfológico, un análisis del contexto y un análisis sintáctico. Esto se deba a dos razones:

- La trascripción fonética exacta del discurso solo puede realizarse si conocemos la categoría de las palabras dentro del discurso así como la dependencia entre palabras consecutivas conocida.

- La prosodia natural se basa en gran manera en la sintaxis. Tiene también mucho que ver con la semántica y la pragmática, pero actualmente se tienen pocos datos sobre esta segunda dependencia.

Analizaremos más detenidamente cada una de las partes del módulo (NLP).

3.2.1.1 Analizador de texto

El analizador de texto se encarga de normalizar el texto de entrada para que pueda ser reconocido por los siguientes módulos y de extraer información necesaria tanto para la trascripción fonética como para la generación de la prosodia, ya que como hemos anunciado esta depende en parte de la estructura de texto.

Este bloque a su vez se compone de otros módulos:

Módulo preproceso

Se encarga de organizar la entrada en una lista manejable de palabras. Fragmenta el texto de entrada en unidades más sencillas a las que denominaremos frases. Identifica números, abreviaciones, siglas y los transforma en un texto que contenga su significado. Un punto crítico en la ambigüedad de la puntuación (incluso en el caso de fin de frase), puede resolverse, en parte, con las gramáticas regulares elementales. La principal tarea de este módulo es reducir la complejidad (variabilidad del texto), reduciendo cualquier tipo de representación (numérica, horaria, abreviaturas,…) a palabras y signos ortográficos, de manera que puedan ser reconocidos por los siguientes, módulos.

También se encarga de la silabificar el texto, es decir de dividir las palabras en silabas. Esto es necesario para poder determinar la acentuación fonética e influye en la posterior decisión de los alófonos en el módulo fonetizador. Respecto de la acentuación fonética, en castellano a la mayoría de las palabras presentan un único acento fonético, pero esto no es siempre así. Hay palabras que presentan dos, estas son los adverbios precedentes de adjetivos, terminados en mente. Un acento recae sobre la primera –e- de mente y el otro sobre la raíz de la palabra que corresponde al adjetivo. También hay palabras inacentuadas, suelen ser palabras función sin contenido semántico, por si mismas. Sin embargo hay palabras con la misma grafía pero con contenido semántico que si deben ser acentuadas con lo que hay que esperar a un análisis de contexto posterior para poder acentuar correctamente.

Las operaciones que realiza son las siguientes:

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

1)

Conversión de números a texto:

i. Conversión de números cardinales.

ii. Convierte las abreviaturas que indican el tipo de unidad y establece concordancias con el número indicado por las unidades.

2)

3)

4)

5)

iii. Conversión de fechas y horas.

Expansión de las abreviaturas que tengan cierta normalización. La inserción del acento fonético en las palabras que deben llevarlo. Tratamiento de los signos de puntuación. Omisión de cualquier carácter no previsto en los anteriores casos, de modo que sea eliminado de la cadena de análisis.

Módulo de análisis morfológico o categorizador

Su misión es la de proponer categorías del discurso para cada palabra tomada individualmente en base a su ortografía. Se descomponen las palabras compuestas en sus unidades gramaticales elementales. Este módulo puede variar la acentuación fonética en aquellas formas homógrafas en las que la presencia de acento depende de la categoría a la que pertenezcan.

La tarea del categorizador se puede descomponer en dos tipos de rutinas:

1. Rutinas que buscan en tablas las palabras a categorizar.

2. Rutinas que comprueban la estructura de la palabra, para intentar descubrir su categoría.

Esta tarea se complementa en el siguiente módulo.

Módulo de análisis contextual

Este módulo complementa el análisis de la categoría de cada palabra que se iniciaba en el módulo anterior. Considera las palabras en su contexto lo que le permite reducir la posible lista de categorías en el discurso a un número muy restringido de hipótesis muy probables.

Módulo de análisis sintáctico

Este módulo se encarga de analizar la estructura del texto en busca de información que pueda ser útil para la obtención de la prosodia en los siguientes módulos. Como ya hemos indicado la prosodia depende en gran parte de la estructura sintáctica de las oraciones.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

3.2.1.2 Fonetizador automático

El fonetizador [8] o sistema de trascripción fonética automático es el responsable de la determinación automática de la trascripción fonética del texto entrante, transforma el texto de entrada representado en caracteres ortográficos en un texto de salida representado en caracteres fonéticos.

Al fonetizador hay que entregarle el texto de entrada normalizado paso que ya hemos estudiado anteriormente. Parece una tarea fácil (tan fácil como realizar el equivalente de un diccionario de pronunciación), pero esto no es así, fácilmente se observa que muchas palabras pueden aparecer en un discurso con distintas transcripciones, algunas incluso no aparecen en los diccionarios de pronunciación. Algunos problemas son:

- Los diccionarios de pronunciación solo se refieren a la pronunciación de raíces. No responden explícitamente a las variaciones morfológicas (femenino, plural, uniones, etc.). Que tiene que ser estudiado por un componente específico de la fonología, el llamado morfofonología.

- Algunas palabras corresponden a varias entradas al diccionario, o mas generalmente a varios análisis morfológicos, generalmente con pronunciaciones diferentes. Su pronunciación correcta dependerá de su posición y función en el discurso.

- Los diccionarios de la pronunciación proporcionan algo que es más cercano a una trascripción fonémica meramente que a una fonética (es decir se refieren más a los fonemas que a los difonemas).

- Palabras incluidas en las frases no son pronunciadas como si estuvieran aisladas. Las diferencias no solo se producen en las variaciones de palabras limites (como los enlaces fonéticos), sino también en variaciones basadas en la organización de la frase en unidades no léxicas de uso (muchos procesos fonológicos son sensibles, por ejemplo, a la estructura de la silaba).

- No todas las palabras pueden encontrarse en un diccionario fonético: la pronunciación de nuevas palabras y de muchos nombres de manera apropiada debe ser deducido de palabras ya conocidas.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

Texto

Módulo NLP Analizador de texto Preproceso Análisis Morfológico Análisis Contextual Análisis Sintáctico
Módulo NLP
Analizador de texto
Preproceso
Análisis
Morfológico
Análisis
Contextual
Análisis
Sintáctico
Fonetizador
Automático
Generador de
prosodia
Fonetizador Automático Generador de prosodia Salida al bloque DSP Figura2: Módulo NLP de un sistema TTS

Salida al bloque DSP

Figura2: Módulo NLP de un sistema TTS general.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

Es posible entonces organizar la tarea del fonetizador automático de muchas maneras, a menudo se clasifican en dos tipos de estrategias:

- Basadas en diccionario:

Consisten en recopilar un máximo de conocimientos fonológicos en un léxico. El número de palabras de un idioma es muy amplio lo que conllevaría un diccionario de gran tamaño. Para reducir su tamaño, se restringen generalmente las entradas a morfemas. En el proceso de trascripciones lleva a cabo un análisis morfológico que divide la palabra en sus componentes morfemáticos, indicándose el tipo de morfema, su forma ortográfica y su pronunciación. Posteriormente las normas de la morfofonética gobiernan como se modifican las trascripciones fonéticas cuando se combinan entre ellos. Morfemas que no pueden encontrarse en el léxico son trascritos por una regla. Después de que se ha obtenido una primera trascripción fonética de cada palabra hay un post-proceso fonético para responder a la coarticulación de los fonemas suavizadores.

- Basados en regla:

La mayoría de la competencia fonética se transmite al fonetizador automático mediante una serie de reglas. Solo las palabras que se pronuncian de una manera especial son las que se trasmiten a las reglas mediante una especie de diccionario de excepciones. Nótese que muchas de las excepciones se encuentran entre las palabras más corrientes de manera que un diccionario de excepciones puede abarcar un fragmento bastante grande del discurso. Es el método mas apropiado en aquellas lenguas que se alejan poco del principio fonético de la representación ortográfica por lo que cada fonema se representa con un solo grafema y cada grafema se representa con un solo fonema. Existen dos tipos de reglas: dependientes o independientes de contexto.

Las reglas dependientes de contexto pueden expresar distintos tipos de relaciones entre la entrada y la salida:

Correspondencia biunívoca: una letra se transcribe como un fonema. Correspondencia dos a uno: dos letras adyacentes se transcriben como un fonema. Correspondencia uno a dos: una letra se transcribe como una secuencia de fonemas. Correspondencia uno a cero: una letra no tiene trascripción fonética.

El formalismo habitual de las reglas de trascripción sigue el modelo de Chomsky y Halle (1986); son reglas de reescritura contextuales, con el siguiente formato:

Foco cambio/ contexto izquierdo

contexto derecho

Donde el foco, el cambio y el contexto pueden ser unidades o grupos de grafemas, fonemas, rasgos de fonemas o elementos vacíos. La regla asigna un cambio

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

estructural a un foco a condición de que este vaya precedido del contexto izquierdo y seguido del contexto derecho.

En la actualidad se han definido métodos basados en diccionario muy poderosos que eran capaces de lograr una exactitud más alta que los basados en regla dado la disponibilidad de diccionarios fonéticos muy grandes en las computadoras. Los esfuerzos actuales van dirigidos a la creación de reglas muy amplias, partiendo de diccionarios extensos y añadiendo reglas y excepciones hasta cubrir todas las palabras se cubren. Esta interrelación es ineludible. Además el compromiso es idioma-dependiente, dado que la fiabilidad del fonetizador depende del idioma. Con la evolución de la inteligencia artificial se han desarrollado, además, sistemas de fonetización basados en el aprendizaje inducido, capaces de calcular la trascripción fonética a partir de una serie de datos procesados previamente.

El desarrollo de los sistemas de fonetización automática ha planteado el problema de la codificación de los símbolos fonéticos. Existe un condicionante técnico que deriva de las limitaciones del medio informático: la configuración de los teclados no representan todos los símbolos y diacríticos del alfabeto fonético utilizado comúnmente en lingüística (el AFI), por lo que dichos símbolos no tienen representación ASCII. Existen programas que pueden diseñar los caracteres que sean necesarios para la descripción fonética y fuentes ya diseñadas con versiones del AFI, también se han desarrollado diversos sistemas que utilizan los signos codificados ASCII para representar los caracteres y diacríticos del AFI como son PHONASCII y SAMPA.

3.2.1.3 Generación de prosodia

El termino prosodia se refiere a ciertas propiedades del discurso que se relacionan con cambios audibles en el diapasón, intensidad, longitud de la silaba. Los rasgos prosódicos tienen funciones específicas en la comunicación del discurso. El efecto mas claro de la prosodia es el enfoque. Hay por ejemplo ciertos eventos del diapasón que hacen que una silaba destaque dentro de la pronunciación, e indirectamente la palabra o el grupo sintáctico al que pertenece dentro se resaltara como un componente importante o nuevo dentro de la pronunciación. La presencia de un enfoque marcado puede tener varios efectos, como el contraste, dependiendo del lugar donde ocurre, o el contexto semántico de la pronunciación. Aunque quizás menos obvias hay otras reglas generales. Los rasgos prosódicos crean una segmentación de la cadena del discurso en grupos de silabas o visto de otra manera ellos dan lugar a la agrupación de silabas y palabras en grupos cortas y más grandes posteriormente. Hay rasgos prosódicos que indican las relaciones entre cosas, indican o que se unen dos o más grupos de silabas de alguna manera. Este efecto es jerárquico, aunque no necesariamente idéntico a la estructura sintáctica de la pronunciación.

Aunque son tres los parámetros que afectan al a prosodia (pitch, duración y energía), solo tendremos en cuenta los dos primeros ya que la energía es el que menos afecta al aspecto perspectivo. Con lo que la tarea de generación de la prosodia se divide en dos, una por cada parámetro a obtener.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

o Calculo de duración

Para calcular la duración de cada alófono partimos de una duración base del alófono y la hacemos depender de varios factores, como son:

o

Los alófonos adyacentes.

o

La posición respecto del acento fónico.

o

La posición dentro del grupo fónico.

o

La longitud del grupo fónico al que pertenece.

o Calculo del pitch

El pitch es el parámetro que mas influye en la calidad y naturalidad de la voz producida. Los distintos valores de la frecuencia fundamental a lo largo del grupo fónico analizado (frase) es lo que llamaremos curva o patrón melódico.

Se puede distinguir dos grandes clases de curvas melódicas en función del grupo fónico al que pertenezcan. Los grupos fónicos son terminales o no terminales dependiendo de la posición que ocupen dentro de la oración:

Los grupos terminales son los que aparecen al final de la oración. Contienen básicamente información sobre el tipo de oración, lo que se denomina modalidad oracional. Los grupos no terminales son los que aparecen, en oraciones con mas de u grupo fónico, en posiciones no finales dentro de las mismas. La información que contiene se refiere al tipo de frase subordinada.

Se pueden distinguir tres partes e la curva melódica [6]:

La rama inicial de la curva, formada por las silabas átonas que llegan hasta el primer acento fuerte. El cuerpo, que esta formado por el conjunto de silabas que comprenden la silaba fuerte inicial hasta la silaba inmediatamente anterior al último acento fuerte. La rama final, que esta integrada por la última silaba fuerte y las siguientes débiles, en el caso de que las haya.

Hay distintos tipos de patrones melódicos, se pueden clasificar en cuatro grandes grupos [5]:

1. Patrones enunciativos, son los que aparecen en oraciones enunciativas, es decir aquellas que simplemente expresan la

2.

conformidad o disconformidad lógica del sujeto con el predicado. Patrones interrogativos, se pueden dividir en:

a. Patrones interrogativos absolutos, son las que han de tener un “si” o un “no” como respuesta.

b. Patrones interrogativos pronominales, son las que contienen una partícula interrogativa, y cuya respuesta a de ser diferente a “si” o “no”.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

c. Patrones interrogativos relativos son las que buscan

confirmar algo que no se sabe con certeza pero que se intuye. 3. Patrones exclamativos, aparecen en aquellas oraciones con un contenido expresivo o emocional. Se podrían señalar tantos subgrupos como tipos de emociones. 4. Patrones volitivos, aparecen en las oraciones que indican exhortación, mandato o prohibición. Se distinguen tres tipos:

a. Patrones de mandato: propios de oraciones imperativas.

b. Patrones de recomendación: en oraciones que contienen mandatos atenuados, sugerencias o recomendaciones.

c. Patrones de deseo, en oraciones que expresan deseos del emisor

Esta información es muy compleja de determinar, aceptando una restricción

importante en la naturalidad de la voz sintáctica, de manera que nos baste con que

la entonación sea creíble. Los algoritmos actuales tratan de dividir el discurso en

frases prosódicas y dar una entonación a estas frases, olvidándose del contexto general del discurso.

3.2.2 El componente DSP

Intuitivamente, las operaciones involucradas en el módulo DSP son las que realiza el ordenador, análogas al control dinámico de los músculos articulatorios y la

frecuencia vibratoria de las cuerdas vocales por lo que la señal de salida se adapta

a los requerimientos de entrada. Para hacerlo apropiadamente, el módulo DSP

debería obviamente, de alguna forma, tener en cuenta los constreñimientos articulatorios, es conocido desde hace tiempo que las transiciones fonéticas son más importantes que los estados estables para el entendimiento de la voz.

Esto, a su vez, puede ser logrado de dos formas:

Explícitamente, en la forma de una serie de reglas que describen formalmente la influencia de unos fonemas en otros.

Implícitamente, almacenando muestras de transiciones fonéticas y co- articulaciones a una base de datos de voz segmentada, y usándolas tal y como son, como unidades acústicas mínimas (por ejemplo reemplazando a los fonemas).

Las fundamentales clases de sistemas TTS han emergido de estas alternativas, las cuales rápidamente se ha convertido en las filosofías de síntesis dando las divergencias que presentan en sus metas y objetivos: síntesis por regla y síntesis por concatenación.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

3.2.2.1 Sintetizadores basados en reglas

Antes de hablar sobre estos sistemas veremos brevemente en que consiste el mecanismo de fonación en los humanos.

El habla es el resultado de la acción coordinada de los aparatos respiratorio y masticador, participan los siguientes órganos y cavidades:

1. Pulmones.

2. Traquea.

3. Laringe con cuerdas vocales y glotis.

4. Faringe.

5. Cavidad oral o boca con lengua y labios.

6. Cavidad nasal.

Al conjunto de cavidades comprendidas entre pulmones y labios se le conoce como tracto vocal. La distinta longitud, sección y rigidez del tracto vocal de cada persona permite distinguir las voces entre si, el timbre, mientras que la particularidad de cada tracto vocal en la realización de un sonido permite distinguirlo de los demás.

Para producir los sonidos es necesario un flujo de aire que se consigue con la tensión simultánea de los músculos respiratorios que cierran la caja torácica y la contracción lenta del diafragma. El flujo de aire ataca a un conjunto de cavidades, pudiendo producir la excitación acústica de las mismas por uno de los tres caminos siguientes:

1. Vibración de las membranas de las cuerdas vocales con el paso del aire. La excitación será periódica, y se le llama excitación glotal de frecuencia fundamental, es lo que llamamos pitch. Da lugar a los sonidos sonoros.

2. Un estrechamiento en algún punto del tracto vocal que genera turbulencias más o menos aleatorias en la zona de constricción. La excitación es análoga a un ruido blanco. Genera los sonidos sordos.

3. Si el estrechamiento se convierte en un estrangulamiento o cierre total seguido de una posterior relajación obtenemos los sonidos explosivos.

Los sintetizadores basados en reglas están mayormente respaldados por fonéticos y fonólogos, ya que constituyen un conocimiento, de aproximación generativa del mecanismo de fonación. La amplia divulgación del sintetizador Klatt, por ejemplo, es principalmente debido a su incalculable servicio en el estudio de las características del habla natural, por escucha analítica de voces sintetizadas por reglas. Y lo que es mas, la existencia de relaciones entre los parámetros articulatorios y las entradas al modelo Klatt, lo hacen una herramienta práctica para investigar los constreñimientos fisiológicos.

Por razones prácticas e históricas (principalmente la necesidad de una interpretabilidad física de el modelo) ya que las cavidades que se encuentran posteriores a la glotis se pueden aproximar como un filtro acústico que producen

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

amplificaciones a ciertas frecuencias, los sintetizadores de reglas siempre aparecen en la forma de sintetizadores de formantes. Estos describen el habla como una evolución dinámica de hasta 60 parámetros, la mayoría relacionados con las frecuencias formantes y las antiformantes y anchos de banda, unido con las formas de onda glotales. Claramente, el gran número de parámetros (acoplados) complica la etapa de análisis y tiende a producir errores de análisis. Y lo que es mas, las frecuencias formantes y los anchos de banda son inherentemente difíciles para la estimación de datos del habla. La necesidad de ensayos intensivos y errores para cubrir con errores de análisis, les hace sistemas de tiempo-consumo para desarrollarlos (varios años son un plazo normal). Todavía, la calidad de voz alcanzada hasta ahora revela problemas típicos del habla, los cuales se originan de las propias reglas: introducir un alto grado de naturalidad es teóricamente posible, pero las reglas para hacerlo están todavía por descubrir.

También existen los sintetizadores articulatorios cuyo objetivo es controlar el modelo del aparato fonador, de manera semejante a como lo hace el cerebro, constituyendo los parámetros de control de dicho modelo, la posición de los distintos órganos y las leyes que rigen el movimiento. Este método presenta la dificultad de la obtención y control de estos parámetros para su manejo lo que ha motivado que actualmente sean los menos desarrollados.

Los sintetizadores basados en reglas permanecen, sin embargo, como una aproximación potencialmente potente a la síntesis de voz. Permite, por ejemplo, estudiar las características de la voz dependiendo del locutor por lo que cambiar de una voz sintética a otra se puede alcanzar con la ayuda de reglas especializadas en la base de datos de las reglas. Siguiendo la misma idea, la síntesis por reglas parece ser un camino natural de manipulación de los aspectos articulatorios de cambios en el estilo del habla (como oposición a su complemento prosódico, que puede ser considerado también por los sintetizadores basados en concatenación). No sorprende entonces que haya sido ampliamente integrado en sistemas TTS (El sintetizador MITTALK y JSRU para Inglés, el sistema multilingüe INFOVOX y el sistema INRS para Francés).

3.2.2.2 Sintetizadores concatenativos

Como oposición a los basados en reglas, los sintetizadores concatenativos poseen un limitado conocimiento de los datos que manipulan: la mayoría esta incluido en los segmentos para ser encadenado, todas las operaciones que podrían ser usadas indiferentemente en el contexto de un sintetizador de música (por ejemplo sin ninguna referencia explícita a una naturaleza propia de los sonidos para ser procesada) han sido agrupadas en un bloque de procesamiento de sonido, en oposición al superior bloque de procesamiento de habla cuyo diseño requiere al menos algunos conocimientos de fonética.

Preparación de la base de datos

Una serie de etapas preliminares deben ser completadas antes de que el sintetizador pueda producir su primera articulación de sonido. Primeramente, los

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

segmentos son escogidos para minimizar los futuros problemas de concatenación. Una combinación de difonemas (por ejemplo unidades que comienzan en el medio de un estado estable de un fonema y terminan en el medio del siguiente), semi-sílabas, y trifonemas (que difieren de los difonemas en que ellos incluyen un fonema central completo) son a menudo elegidos como unidades del habla, ya que afectan a la mayoría de las transiciones y co-articulaciones mientras requieran una cantidad de memoria económica. Cuando ya ha surgido una lista completa de segmentos, se completa cuidadosamente su correspondiente lista de palabras, de tal manera que en cada segmento aparezca al menos una (dos mejor, por seguridad). Un cuerpo es entonces digitalmente grabado y almacenado, y los segmentos elegidos son marcados, o manualmente con la ayuda de herramientas de visualización de señal, o automáticamente gracias a algoritmos de segmentación, las decisiones de qué es chequeado y qué corregido interactivamente. Los algoritmos de segmentación automática se usan con bases de datos de gran tamaño y consisten en generar una serie de marcas que delimiten todas las unidades de la base de datos a partir de los ficheros de voz y de su trascripción fonética. Una base de datos de segmentos finalmente centraliza los resultados, en forma de nombres de segmentos, formas de onda, duraciones, y subdividiendo intervalos. En el caso de los difonemas, por ejemplo, la posición del límite entre fonemas debería ser almacenado, para ser posible modificar la duración de una mitad del fonema sin que afecte a la longitud del otro.

Los segmentos son a menudo dados de una forma paramétrica, en forma de una secuencia temporal de vectores de parámetros recogidos a la salida de un analizador de voz y almacenados en una base de datos de segmentos paramétricos. La ventaja de usar un modelo de voz origina que:

Unos modelos de voz bien elegidos permiten la reducción del tamaño de los datos, una ventaja que es apenas insignificante en el contexto de la síntesis basada en concatenación dada la cantidad de datos que se almacenan. Consecuentemente, el analizador es a menudo seguido de un codificador paramétrico.

Un número de modelos explícitamente separa las contribuciones de cada recurso y el tracto vocal, una operación que permanece útil para las operaciones de pre-síntesis: adaptar la prosodia y los segmentos de concatenación. De hecho, la actual tarea del sintetizador es producir, en tiempo real, una secuencia adecuada de segmentos concatenados, extraídos de su base de datos de segmentos paramétricos y la prosodia de que halla sido ajustada de sus valores almacenados, por ejemplo la entonación y la duración que aparecen con el cuerpo de la voz original, a una impuesta por el módulo de procesamiento de lenguaje. Consecuentemente, las respectivas partes reproducidas por los módulos de adaptación de prosodia y concatenación de segmentos, son aliviadas considerablemente cuando los segmentos de entrada son presentados de forma que permitan una fácil modificación de su pitch, duración, y envolvente espectral, como apenas es en el caso de muestras de forma de onda sin tratar.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

Ya que los segmentos deben unirse son generalmente extraídos de diferentes palabras, esto es en diferente contexto fonético, a menudo presentan amplitud y timbre desigual. Incluso en el caso de sonidos vocálicos estacionarios, por ejemplo, un tosco secuenciamiento de parámetros típicamente viene seguido de discontinuidades audibles. Estos pueden ser cubiertos durante la constitución de la base de datos de los segmentos de síntesis, gracias a una ecualización en la que los comentados finales de los segmentos son impuestos un espectro de amplitud similar, siendo repartida la diferencia con sus vecinos. En la práctica, sin embargo, esta operación, es limitada a parámetros de amplitud: La etapa de ecualización modifica suavemente los niveles de energía al comienzo y al final de los segmentos, de tal forma que elimine las amplitudes irregulares (colocando la energía de todos los alófonos de un fonema dado a su valor medio). En contraste con esto, los conflictos de timbre son mejor abordados en el tiempo de ejecución, suavizando las parejas individuales de los segmentos cuando sea necesario en lugar de ecualizarlos a todos de una vez, por lo que algunas variabilidades fonéticas introducidas naturalmente por co-articulación se conservan todavía. En la práctica, la ecualización de amplitud puede ser desarrollada o antes o después del análisis de voz (por ejemplo en las muestras sin tratar o en los parámetros de voz). Una vez la base de datos de segmentos paramétricos se haya completado, se puede comenzar la síntesis.

Síntesis de voz

Una secuencia de segmentos es lo primeramente deducido de la entrada fonética del sintetizador. Una vez hayan sido correctamente asignados los sucesos prosódicos a segmentos individuales, el módulo de casado prosódico consulta en la base de datos de segmentos de síntesis por los parámetros actuales, adecuadamente decodificados, de los sonidos elementales para ser usados, y los adapta uno a uno para la prosodia requerida. El bloque de concatenación de segmentos tiene entonces la misión de unir los segmentos dinámicamente a otros, suavizando discontinuidades. De nuevo, una modelización adecuada de voz es muy beneficiosa, con tal de que los esquemas de interpolación simple desarrollados sus parámetros aproximadamente correspondan a suavizar las transiciones acústicas entre sonidos. El flujo de parámetros resultante es finalmente presentado a la entrada de un bloque de síntesis, el complemento exacto del análisis. Su tarea es generar la voz.

Calidad segmental

La eficiencia de los sintetizadores para producir voz de alta calidad esta principalmente subordinado a:

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

Tipo de segmentos

Los segmentos deberían estar obviamente expuestos a unas propiedades básicas:

Deberían permitir tener en cuenta la mayoría de los efectos co- articulatorios que sea posible.

Dadas las restringidas capacidades de suavizado del bloque de concatenación, debería ser fácilmente concatenable.

Su número y longitud deberían mantenerse lo más pequeño que se pueda.

Por otra parte, las unidades más largas decrementan la densidad de los puntos de concatenación, por lo que provee una mejor calidad de voz. Similarmente, un camino obvio de considerar para los fonemas articulatorios es proveer muchas variantes de cada fonema. Esto es claramente una contradicción con la limitada contención de memoria. Es necesario buscar un punto medio. Los difonemas son elegidos a menudo. No son muy numerosos (sobre 1200 para Francés, incluyendo las secuencias de fonemas que son solo encontrados en los límites de las palabras, para 3 minutos de voz, por ejemplo aproximadamente 5 Mbytes de muestras de 16 bit a 16 kHz) y no incorporan la mayoría de las transiciones fonéticas. No nos sorprende entonces que hayan sido usados extensivamente. Implica, sin embargo, una alta densidad de puntos de concatenación (uno por fonema), que refuerza la importancia de un algoritmo de concatenación eficiente. Por otro lado, pueden solo considerarse particularmente para muchos efectos co-articulatorios del lenguaje hablado, ya que estos afectan a menudo al fonema completo en lugar de solo su mitad derecha o izquierda independientemente. Tales efectos están especialmente patentes en algunos fonemas de transición, tales como los líquidos y las semi-vocales (los peores de todos), que deben ser conectados a otros. De ahí el uso también de algunas unidades mas grandes, tales como los trifonemas.

Modelo de señal de voz

Los modelos usados en el contexto de la síntesis concatenativa puede ser clasificada en dos grupos, dependiendo de su relación con el actual proceso de fonación, modelos reproducción y modelos fenomenológicos.

Modelos de producción

Proveen sustitutos matemáticos para cada respectiva parte reproducida por las cuerdas vocales, nasales y tractos vocales, y por la radiación de los labios. Sus miembros más representativos son los sintetizadores de codificación de predicción lineal (LPC), y los sintetizadores de formantes mencionados en la sección 2.2.1. Los sintetizadores derivados de las técnicas de predicción lineal modelan el tracto vocal como una serie de cilindros huecos de diámetro variable. Las propiedades de la onda sonora después de haber pasado por todos ellos, puede predecirse teniendo en cuenta que cada uno de los cilindros condiciona la forma de onda de entrada del siguiente. Este cálculo complejo se simplifica mediante la utilización de la predicción lineal, aprovechando la periodicidad de la onda sonora.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

Como ya hemos indicado en un apartado anterior los sintetizadores de formantes modelan el tracto vocal como una serie de filtros sencillos. Su principal ventaja es que trabajan con parámetros que mantienen una relación directa con el mecanismo de producción del habla y son fácilmente manipulables de cara al control del sintetizador.

Modelos fenomenológicos

Descartan intencionadamente cualquier referencia al mecanismo de producción humano. En medio de estas herramientas de procesado de la señal digital pura, el espectro y en el dominio del tiempo se aproxima en aumento al encontrado en los sistemas TTS. Los dos principales modelos existentes: el modelo híbrido Harmónico-Estocástico (H/S) y el de Suma Solapada de Pitch Síncronos en el Dominio del Tiempo (TD-PSOLA). Muestra unas interesantes características prácticas: una gran calidad de voz (la mayoría normalmente disponible) combinado con un bajo coste operacional (7 operaciones por muestra de media). El modelo híbrido Harmónico-Estocástico es intrínsecamente más potente que el TD-PSOLA, pero es también sobre diez veces más intensivo operacionalmente. Descompone la señal de voz en una componente armónica mas una componente ruidosa o aleatoria, esta descomposición permite modificaciones en la señal consiguiendo una mayor naturalidad en el habla sintética. Las dos componentes se separan en el dominio frecuencial mediante un parámetro que varia en le tiempo, la frecuencia sonora máxima. Por debajo de esta frecuencia máxima se asume que se representara la componente armónica y por encima la componente ruidosa. La componente armónica se modela como una serie de sinusoidales con amplitud y fase variables y frecuencia múltiplo de la fundamental. La componente ruidosa se describe frecuencialmente mediante un modelo autorregresivo variante en el tiempo Los sintetizadores PSOLA son ampliamente usados actualmente en las comunidades de síntesis de voz. El reciente desarrollo del algoritmo MBR- PSOLA nos ofrece un algoritmo en el dominio del tiempo que muestra la gran eficiencia de su capacidad de suavizado como la del modelo H/S (para la envolvente espectral las desigualdades no pueden ser evitadas en los puntos de concatenación) así como sus altos ratios de compresión de datos (hasta 10 sin casi coste operativo adicional) mientras conserva la complejidad computacional del PSOLA. Hablaremos mas detenidamente de estos algoritmos en el apartado siguiente.

CAPÍTULO III: SÍNTESIS DE VOZ, VISIÓN HISTÓRICA

CapítuloCapítuloCapítuloCapítulo 4444

CAPÍTULO IV: SÍNTESIS MBROLA

SíntesisSíntesisSíntesisSíntesis Mbrola.Mbrola.Mbrola.Mbrola.

En este apartado, tras una pequeña introducción a la síntesis PSOLA (lo analizaremos a través del algoritmo TD-PSOLA, veremos en que marco se desarrolla el algoritmo MBROLA e indicaremos que ventajas presenta frente al algoritmo TD-PSOLA, analizado anteriormente.

4.1 Técnicas de síntesis PSOLA

4.1.1 Introducción

Las técnicas de síntesis PSOLA (Pitch-Synchronous Overlap-Add) tratan de conseguir una mejora en la calidad de la síntesis a través de la concatenación de unidades digitalmente pregrabadas, minimizándose así el ruido de cuantificación. Adicionalmente al proceso de adquisición y grabado de dichas muestras, será necesario un procesado previo de las mismas con el fin de obtener la información prosódica de las mismas que necesita el algoritmo.

Dado que la concatenación directa de unidades no es posible (al tener estas habitualmente una prosodia distinta a la buscada), el principal problema que se va a plantear reside en las modificaciones que son necesarias para adaptar la prosodia de las unidades pregrabadas, a la prosodia del texto (procedente del bloque de procesado lingüístico del conversor texto-voz) en donde se desea utilizar, sin que se produzcan perdida grabes o apreciables en la calidad.

4.1.2 Algoritmo TD-PSOLA

El algoritmo TD-PSOLA (Time Domain Pitch-Synchronous Overlap-Add), al igual que el resto de técnicas PSOLA trata de hacer dicha adaptación a través de modificaciones en las transformadas de Fourier, afectando dichas modificaciones de forma conjunta a la frecuencia fundamental y a la duración de las unidades. Hay que destacar la posibilidad de realizar modificaciones en la energía de las unidades, aunque este aspecto se puede considerar como un toque final de calidad en los sistemas, debiéndonos centrar fundamentalmente en los dos primeros y dejando este último para las fases finales de desarrollo. En relación a este aspecto,

CAPÍTULO IV: SÍNTESIS MBROLA

el tratamiento más frecuente que se llevará a cabo será el de hacer una normalización de las energías de las unidades de la base de datos con respecto de un valor determinado, dado que en principio las unidades vendrán de contextos diferentes, y tendrán energías muy distintas. El fin perseguido con dicha normalización es el de conseguir que a la hora de concatenar las unidades, todas ellas posean aproximadamente la misma energía, traduciéndose este aspecto en enunciados con una intensidad sonora aproximadamente uniforme, y por lo tanto con una mayor calidad.

El algoritmo TD-PSOLA presenta la ventaja frente al resto de métodos PSOLA de que, 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.

Como ya se dijo anteriormente, el punto de partida de la síntesis es una secuencia de unidades digitalizadas pregrabadas a concatenar, cuyas características prosódicas tendremos que modificar para adaptarnos a las de una determinada secuencia objetivo que habrá sido generada previamente a partir de un texto por un módulo anterior del Conversor Texto-Voz. Este módulo es el encargado de generar la prosodia de dicho texto de una forma automática, es decir, a partir de un texto de entrada que es lo que se desea sintetizar se encargará de generar otro fichero de texto que constituirá la entrada del sintetizador. En este fichero, además de aparecer las unidades procedentes de la base de datos que serán necesarias para sintetizar el texto, lo hará la prosodia de dichas unidades en la frase en concreto, esto es, sus características de duración y tono medio, ya que como se reseñó anteriormente una simple representación textual de los mensajes no nos sirve para poder modelar el fenómeno del habla. Las unidades a considerar pueden ser fonemas, difonemas o trifonemas, estando en todos los casos éstas constituidas por una serie de periodos básicos de señal que vienen delimitados por las marcas de pitch (marcas colocadas sobre la señal que tratan de reflejar los momentos de cierre de la glotis). Estas marcas reciben el nombre de marcas de análisis, y son provenientes del procesado previo.

La forma que tiene el algoritmo TD-PSOLA de conseguir las modificaciones de las características prosódicas de las unidades almacenadas en la base de datos es mediante la repetición en el tiempo de los periodos básicos constituyentes de las mismas con una determinada cadencia, lo que consigue modificar la estructura de armónicos de las unidades originales sin llegar a perturbar el espectro "fino" de la señal. Estos periodos básicos se enventanan de una forma síncrona con las marcas de pitch, de tal forma que la longitud de las ventanas sea siempre mayor que un periodo fundamental, existiendo un solape entre periodos consecutivos. Habitualmente el enventanado realizado es de Tukey, con una longitud de ventana que es el doble del periodo fundamental y centrado en las marcas de pitch, hecho que contribuye a minimizar el efecto de la reverberación producido por la copia de señales a corto plazo y a suavizar las transiciones espectrales. El primer paso a seguir, una vez realizado el enventanado de la señal de análisis, será el cálculo del número de marcas de pitch que tendrá la señal sintetizada:

CAPÍTULO IV: SÍNTESIS MBROLA

n

º _

marcas

_ sin

tesis =

duracion

T medio

0

+

1

Donde

En cuanto a la posición de dichas marcas, hay que tener en cuenta que el tono no va a ser constante a lo largo de la unidad a generar, no encontrándose por lo tanto las marcas de pitch equiespaciadas a lo largo de la misma. Partiremos de un valor

inicial, debiendo terminar en un

inicial para el primer periodo del difonema,

valor

conseguir una evolución continua de la entonación, es la de suponer que la curva de tono se comporta de forma lineal a lo largo de la unidad. De esta forma se puede determinar la posición de las marcas de síntesis sin más que calcular el escalón de la curva de síntesis. Así:

final para el último periodo. Una posibilidad que presenta la ventaja de

T

0

medio es el periodo medio del difonema a generar.

T

0

T

0

escalon

T inicial

0

T final

0

= n

º _

marcas

_ sin

tesis 2

[]

marca i = T inicial

0

*

i + escalon

*(

i

1)

El siguiente paso a realizar, consiste en establecer una correlación entre los periodos de la señal de análisis y los periodos de la señal 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, en principio, tendrá 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

- Si por el contrario la duración es mayor, completaremos con ceros las muestras del periodo original.

eliminaremos muestras del mismo.

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. Con este proceso conseguimos una señal simétrica a partir de un espectro modificado de forma arbitraria.

Los principales inconvenientes que presenta el algoritmo TD-PSOLA se pueden clasificar en tres grupos:

a) Variaciones prosódicas:

La modificación de pitch comporta una modificación en la duración del segmento, que se tiene que compensar. La variación de duración sólo se puede realizar de

CAPÍTULO IV: SÍNTESIS MBROLA

forma cuantificada (resolución de un período de pitch). El alargamiento de sonidos sordos mediante repetición de tramas, da lugar a ciertos clics metálicos.

b) Base de datos:

Como consecuencia de no utilizar un modelo de producción de habla, las unidades

de

la

base de datos no están parametrizadas, sino que se almacenan las muestras

de

la forma de onda. El tamaño de la base de datos es muy grande en comparación

con otros sistemas de síntesis.

c) Concatenación:

Se pueden producir discontinuidades a diferentes niveles entre las tramas final e inicial de las unidades a concatenar:

- Discontinuidad en la fase.

- Discontinuidad en el pitch.

- Discontinuidad espectral.

A pesar de estas limitaciones, la síntesis TD-PSOLA tiene la gran ventaja de

proporcionar un habla sintética de una cierta calidad con un coste computacional

muy bajo.

4.2 Proyecto Mbrola

El proyecto Mbrola [9] es uno de los diversos proyectos que el laboratorio de

TCTS del Faculté Polytechnique de Mons (Bélgica) ha desarrollado en el campo

de las tecnologías del habla, algunos de estos proyectos son:

o

Proyecto Euler, tiene como objetivo el producir de un ambiente unificado, extensible, y público disponible de la investigación, del desarrollo y de la producción para la síntesis multilingüe de TTS.

o

Proyecto Mbrolign, la última meta de este proyecto es crear un etiquetado fonético y prosódico lo mas grande posible para tantos idiomas como sea posible.

o

Proyecto Mbrdico, es el DSP MBROLA que usa diccionario como sintetizador de discurso. Se realiza el proceso de texto usando un paquete completo de GNU GLP para el entrenamiento automático del fonetización y generación de duración y entonación.

También se han desarrollado diversas aplicaciones que se basan en el algoritmo Mbrola, como sintetizador de voz, entre ellos un fax que da un pequeño resumen

de

lo recibido en forma de voz.

El

objetivo del proyecto de Mbrola [9] es obtener un sistema de los sintetizadores

de discurso para tantos idiomas como sea posible, y las proporciona libremente para usos no comerciales. La última meta es alzar la investigación académica sobre síntesis de discurso, y particularmente sobre la generación de prosodia,

conocida como uno de los desafíos más grandes en el campo de los sintetizadores

de voz a partir de texto.

CAPÍTULO IV: SÍNTESIS MBROLA

El centro al proyecto de Mbrola [9] es el algoritmo MBR-PSOLA, un sintetizador de discurso basado en el encadenamiento de difonemas. Toma una lista de fonemas como entrada, junto con la información prosódica (duración de fonemas y de una descripción por trozos linear de la echada), y produce muestras de discurso. Por lo tanto no es un TTS puesto que no acepta el texto crudo como entrada. Mbrola es lo que hemos llamado módulo DSP del sistema. Este motor se proporciona en libre distribución para los usos no comerciales y no militares, exclusivamente.

Una de las ofertas que proporciona el proyecto Mbrola [9], y que lo ha hecho muy popular entre los sistemas de síntesis de voz, es la posibilidad que da a los usuarios de participar en el proyecto generando sus propias bases de datos de voz. Actualmente se dispone de treinta bases de datos para veinte idiomas distintos. Uno de los objetivos de nuestro proyecto será participar con el proyecto Mbrola construyendo nuestra propia base de datos para la lengua Española.

4.3 Algoritmo MBR-PSOLA

Debido a las limitaciones detalladas en el primer apartado, surge la necesidad de mejorar el método de síntesis. El algoritmo MBR-PSOLA (Multi-Band Resynthesis Pitch Synchronous OverLap and Add), mas conocido como Mbrola, tiene como objetivo principal solucionar los problemas que presenta el algoritmo TD-PSOLA en cuanto a concatenación de unidades. Los problemas de discontinuidad de fase, salto en el pitch y la discontinuidad de la envolvente espectral se reducen con un tratamiento a dos niveles. En primer lugar se trabaja con la base de datos que previamente se ha almacenado siguiendo el algoritmo TD-PSOLA. El tratamiento que se realiza consiste en analizar y resintetizar todos los segmentos sonoros de la base de datos siguiendo el modelo Multi-Band Excited (MBE) [2]. El hecho de volver a sintetizar los segmentos sonoros permite fijar la misma frecuencia fundamental y hacer una corrección en la fase. En segundo lugar, se realiza una interpolación lineal de tramas en el dominio temporal durante la fase de síntesis. La resíntesis MBE sólo se tiene que efectuar una vez y únicamente sobre los segmentos sonoros, por lo tanto no se incrementa el coste computacional de la síntesis TTS. Las mejoras introducidas con esta variante consiguen suavizar un poco las transiciones pero no son suficientes debido a que hay demasiada dependencia con el TD-PSOLA.

CAPÍTULO IV: SÍNTESIS MBROLA

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

CapítuloCapítuloCapítuloCapítulo 5555

CreaciónCreaciónCreaciónCreación dededede unaunaunauna vozvozvozvoz Mbrola.Mbrola.Mbrola.Mbrola.

5.1 Introducción

Como ya hemos indicado Mbrola es un sistema de síntesis de voz por concatenación de unidades, las unidades que utiliza este sistema son lo que hemos llamado difonemas, la información de cómo crear una voz Mbrola se puede encontrar en la pagina Web del proyecto Mbrola [9].

Un difonema es una unidad que comienza en el centro de la zona estable de un

fonema y termina en la mitad de la zona estable del siguiente. Su utilidad consiste

en que reduce al mínimo los problemas de encadenamiento, ya que implica todas

las posibles transiciones y co-articulaciones entre los fonemas, ocupando una capacidad relativamente pequeña de memoria, ya que su número es mucho más

reducido que otras unidades como los trifonemas (unidad formada por tres fonemas).

A la hora de elaborar una lista de difonemas será muy importante el estudiar las

posibles combinaciones de fonemas en el idioma así como la estructura de los archivos Pho que servirán como entradas al motor Mbrola [9].

Para la creación de una base de datos que sirva como voz para el motor Mbrola [9] es necesario seguir una serie de pasos que son:

- Diseño del corpus.

- Grabación del corpus.

- Segmentación del corpus y etiquetado de los difonemas.

5.2 Diseño del corpus

5.2.1 Introducción

Un corpus es una recopilación de texto, de manera que esta contenga todos los difonemas que buscamos, será útil intentar que contenga estos difonemas en más de una ocasión por si hay algún tipo de error en la grabación, contar con más de una muestra.

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

A la hora de diseñar el corpus partiremos de los fonemas, para obtener

posteriormente los difonemas, las palabras que los contienen, y una serie de frases que le den cierto contexto a la hora de pronunciarlas para la grabación. Otra

manera de obtener el corpus es partiendo de la lista de difonemas crear lo que se conoce como logotomas. Los logotomas son palabras carentes de significado,

compuestas por tres sílabas, que permiten que el segmento a tratar esté aislado sin coarticular con los sonidos anterior y posterior. De las tres sílabas que componen

el logotoma nos interesa la sílaba central, que es donde se encuentra el segmento a

extraer. Su estructura general es la siguiente:

PRIMERA

SONIDO

SONIDO QUE

SONIDO

ÚLTIMA

SÍLABA

EXPLOSIVO

BUSCAMOS

EXPLOSIVO

SÍLABA

Más información sobre este sistema se puede encontrar en [7], nosotros seguimos

la primera opción porque consideramos que la calidad de lo grabado mejora con la

sencillez de las palabras utilizadas

5.2.2 Representación fonética

Respecto a la representación fonética nos hemos basado en el código fonético SAMPA (SAM Phonetic Alphabet) [11].

SAMPA tiene su origen en el proyecto ESPRIT 1541 SAM (Speech Assessment Methods) (Fourcin et al., 1989; Fourcin y Dolmazon, 1991) llevado a cabo entre 1987 y 1989. Al final del proyecto existían versiones de SAMPA en danés,

neerlandés, inglés, francés, alemán e italiano, incorporándose en 1992 el noruego

y el sueco, y el español, el griego y el portugués en 1993. Durante 1996 se ha

extendido a una serie de lenguas de los países de la Europa del Este en el marco

del proyecto BABEL, y, en principio, no hay ningún obstáculo para su adaptación

a otros idiomas. En cuanto a su utilización práctica, puede señalarse que es el

sistema desarrollado para la trascripción del corpus multilingüe EUROM (Chan et

al., 1995) y también el adoptado en el proyecto ONOMASTICA, centrado en la trascripción de nombres propios en diversas lenguas europeas.

SAMPA se basa en un conjunto de equivalencias entre símbolos del AFI y códigos ASCII, restringiéndose al uso de caracteres de 7 bits (códigos 32 a 127). El principio que rige las transcripciones en SAMPA, al igual que en el caso del AFI, es esencialmente fonológico, empleándose únicamente símbolos distintos en

el caso de segmentos con valor diferencial. Esta filosofía viene motivada por tres razones: simplicidad de la trascripción sin incorporar ambigüedades, ya que las realizaciones alofónicas son predecibles a partir del contexto; facilidad de utilización por parte personas con poca formación en fonética; y falta de códigos ASCII para la trascripción alofónica de todas las lenguas. Sin embargo, en algunos casos, se introducen símbolos para la representación de alófonos cuando

los investigadores que han desarrollado las adaptaciones para cada lengua lo han

considerado necesario.

Para la trascripción de texto a código fonético SAMPA hemos utilizado el comando SED perteneciente al sistema operativo Linux. El cual nos permite mediante la definición de unas normas la sustitución de unos caracteres

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

correspondientes a la representación ortográfica por otros correspondientes a la representación fonética.

La lista de fonemas incluidos en este código, para el idioma Español la encontramos en el Apéndice A.

La lista que nosotros hemos utilizado es algo mas reducida, ya que no consideramos las fricativas B, D ni G, ya que su sonido es igual que el de las explosivas, tampoco consideraremos las semivocales ya que con difonemas no necesitamos tratar de manera especial esta co-articulación. De esta forma nos quedamos con una lista de veinticuatro fonemas.

De la combinación de estos fonemas (cada uno de estos mas la posibilidad de silencio con el resto), podríamos obtener una lista de 625 difonemas, este numero se puede reducir en parte estudiando la posible estructura de las palabras del idioma y la estructura de los archivos Pho que recibe como entrada el motor Mbrola

Así a la hora de confeccionar nuestra lista de difonemas partimos de la lista completa y fuimos buscando cuales de los posibles difonemas no se daban en nuestra lengua, esto redujo la lista a unos 400 difonemas. La lista de difonemas existentes en palabras de nuestro idioma con una serie de palabras que los contienen está en el Apéndice B.

A esta altura es importante enunciar el hecho de que muchos difonemas pueden

aparecer en transiciones entre palabras. Con lo que a la lista que habíamos conseguido reducir tenemos que añadir de nuevo todas las posibles combinaciones entre fonemas en los que puede acabar una palabra y fonemas en los que puede comenzar otra esto nos da otra lista de 23 (posibles inicios)*14(posibles finales),

esto es una lista de 322 posibles difonemas de los cuales muchos están ya reflejados y otros no se pueden dar. Finalmente esta lista se reduce a 64 difonemas más. La lista de difonemas que solo existen en transiciones entre palabras con una serie de palabras en cuya transición se contienen están en el Apéndice C. Encontrar algunas de estas combinaciones en un discurso normal es bastante complicado pero será necesario incluirlas para evitar posibles errores.

Además distinguiremos los difonemas formados por dos fonemas iguales. La lista

de estos difonemas esta en el Apéndice D.

Estos difonemas excepto el /aa/ no se pueden dar en un discurso normal, debido a la estructura del archivo Pho de entrada al motor Mbrola ya que este si una palabra termina por el mismo fonema por el que empieza la siguiente los junta en uno solo y modifica su duración. Por ejemplo el archivo Pho correspondiente a “El lucha” sería:

e

duración pitch1 pitch2 pitch3 pitch4 pitch5

l

duración pitch1 pitch2 pitch3 pitch4 pitch5

u

duración pitch1 pitch2 pitch3 pitch4 pitch5

ts

duración pitch1 pitch2 pitch3 pitch4 pitch5

a

duración pitch1 pitch2 pitch3 pitch4 pitch5

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

Como vemos no será posible la existencia de difonemas formados por dos

fonemas iguales. La segmentación de este tipo de difonemas la abordaremos de

manera distinta al resto como ya veremos en el apartado de segmentación.

El caso de /aa/ es especial ya que se puede dar que existan tres fonemas /a/ consecutivos. Por ejemplo la expresión “Ana ama a Alicia”, su archivo Pho sería:

a

duración pitch1 pitch2 pitch3 pitch4 pitch5

n

duración pitch1 pitch2 pitch3 pitch4 pitch5

a

duración pitch1 pitch2 pitch3 pitch4 pitch5

m

duración pitch1 pitch2 pitch3 pitch4 pitch5

a

duración pitch1 pitch2 pitch3 pitch4 pitch5

a

duración pitch1 pitch2 pitch3 pitch4 pitch5

l

duración pitch1 pitch2 pitch3 pitch4 pitch5

i

duración pitch1 pitch2 pitch3 pitch4 pitch5

T

duración pitch1 pitch2 pitch3 pitch4 pitch5

i

duración pitch1 pitch2 pitch3 pitch4 pitch5

a

duración pitch1 pitch2 pitch3 pitch4 pitch5

En este ejemplo vemos como en la transición entre Ana y ama los dos fonemas se fusionan pero en ama a Alicia hay dos transiciones /aa/, con lo que en este caso

será necesario este difonema, no así en el resto de los formados por dos fonemas iguales pero los incluimos por si algún otro sistema que quiera utilizar esta base

trabaja de manera distinta este tipo de situaciones.

Tras tratar todos los difonemas posibles en el idioma español, anteriormente

mostrados, obtenemos una lista de 462 difonemas a desarrollar e incorporar a

nuestra base.

Una vez que ya tenemos la lista de difonemas y una serie de palabras dentro de las

cuales o en cuya transición existen, la creación del corpus se reduce a ir

incluyendo estas palabras en frases. Trataremos que estas frases tengan un cierto contexto y una duración media (cinco o seis palabras), para facilitar en lo posible

su lectura. Los resultados de esta operación pueden ser más o menos satisfactorios en cuanto al número de frases, duración y sentido contextual dependiendo de la imaginación de cada uno. Tras la realización de nuestro corpus y algún intento de grabación creemos conveniente aconsejar que es preferible que los textos que componen el corpus sean de fácil lectura y pronunciación aunque esto conlleve un

mayor numero de frases. La facilidad de lectura conlleva una mejora en la calidad

de lo grabado.

5.2.3 Representación ortográfica

En cuanto a la representación ortográfica del corpus nos basamos en la propuesta del Grupo de Trabajo de Lengua Oral de EAGLES. [4] Los documentos del Grupo de Trabajo sobre Lengua Oral de EAGLES (EAGLES, 1995) ofrecen las siguientes recomendaciones para trascripción ortográfica de

corpus orales:

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

Las formas reducidas de las palabras se transcriben tal como aparecen en los diccionarios normativos.

Si es necesario, y si se documentan adecuadamente, pueden utilizarse formas que no aparezcan en los diccionarios.

Se recomienda el uso de formas reducidas si aparecen frecuentemente y si implican elisiones de sílabas.

Las formas dialectales se marcan en la transcripción.

Los números se transliteran como palabras.

En la transcripción ortográfica se utilizan las formas completas de las abreviaturas.

Las abreviaturas que los hablantes pronuncian como palabras se transcriben de este mismo modo.

En las transcripciones se indica la aparición de palabras deletreadas.

Las interjecciones se transcriben con la representación ortográfica que aparece en los diccionarios.

Como puede deducirse fácilmente, la filosofía general de esta propuesta consiste en utilizar siempre las formas que aparecen en los diccionarios normativos y documentar adecuadamente las formas no estándares que se encuentren durante el proceso de trascripción.

El corpus desarrollado se encuentra en el Apéndice E y la trascripción fonética de corpus se encuentra en el Apéndice F.

Una vez que ya tenemos el corpus el siguiente paso es la grabación.

5.3Grabación

5.3.1 Introducción

Para la grabación es importante seguir los consejos que se nos dan en [9], estos nos dan una pauta de cómo realizar correctamente la grabación y de cómo deben de ser las condiciones para que esta sea optima.

Los principales puntos a seguir son:

- Formato de almacenamiento digital recomendado: Fs=16kH, 16 bits, mono.

- Es recomendable usar dispositivos de audio de alta calidad.

- Es importante evitar en lo posible los ruidos (ruidos de baja frecuencia que no percibimos) y la reverberación del ambiente.

- Un dato importante para que la síntesis Mbrola funcione de manera mas optima la recopilación se debe leer con la entonación más monótona posible (como al leer una enumeración larga y aburrida). Incluso el final de palabras debe mantener su constante de la frecuencia fundamental. Puesto que ésta es una manera totalmente artificial de leer un texto, el locutor debe entrenar antes de comenzar la sesión de la grabación.

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

5.3.2 Material

Para nuestra grabación utilizamos un micrófono AKG ® modelo HSC150 PC, este modelo es auricular, lo que nos permite mantener siempre la misma distancia entre la boca y el micrófono. Para reducir en lo posible el ruido de fondo hemos utilizado una mesa de mezclas BERINGER ® modelo EURORACK ® MX802A. La salida de esta mesa estará conectada con la entrada de línea de la tarjeta de sonido del PC. Como software para la grabación hemos utilizado un programa llamado Praat [10]. Aquí solo veremos como utilizarlo para la grabación según las indicaciones de Mbrola Project [9] en el apartado de segmentación veremos algunas de las posibilidades que ofrece esta herramienta.

5.3.3Proceso

Para la grabación utilizamos la opción del menú NEW: record sound lo que despliega la siguiente ventana:

NEW: record sound lo que despliega la siguiente ventana: Realizaremos la grabación con la opción Sample

Realizaremos la grabación con la opción Sample rate a 16000 Hz, como se nos indicaba en las instrucciones. A la hora de la grabación tenemos que cuidar el volumen, la ventana tiene dos columnas que indican el nivel de la señal de forma grafica, hay que conseguir que la indicación de estas barras este en la zona verde, de otra manera implicaría que hay saturación. Al necesitar el motor de síntesis Mbrola una señal mono para la base y al grabar obtenemos dos canales, recogeremos siempre nuestra grabación de un único canal en nuestro caso el izquierdo.

Respecto de la indicación de mantener el pitch constante además de grabar manteniendo una entonación monótona. Praat tiene opciones que nos permiten manipular el pitch de la grabación. El proceso que hemos seguido para dotar a todas las grabaciones de un pitch constante es el siguiente:

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA - - Con las herramientas de Synthetize , utilizamos

-

-

Con las herramientas de Synthetize, utilizamos la opción Filter para realizar un preenfasis (Pre-emphasize), esta opción necesita un argumento llamado From frequency que evalúa en Hz, esta es la frecuencia a partir de la cual se incrementara la señal en 6dB/octava. Nosotros hemos usado el valor que tiene por defecto.

Nosotros hemos usado el valor que tiene por defecto. - Con las herramientas de Manipulate necesita

- Con las herramientas de Manipulate necesita tres argumentos Time step, evaluado en segundos, que se usa para el análisis del pitch y los valores de pitch máximo (Maximum pitch) y mínimo (Minimum pitch) deseados, estos evaluados en hercios. Esto genera una copia de la muestra que será la que manipulemos. Hemos usado los valores que utiliza por defecto.

Hemos usado los valores que utiliza por defecto . - Con la opción Edit podemos visualizar

- Con la opción Edit podemos visualizar la señal y la curva de entonación definida por los puntos de pitch. Al precisar un pitch constante para la base siguiendo las recomendaciones, lo que haremos será eliminar todos los puntos de pitch con las opciones del menú Pitch: Remove Pitch Points e introducir uno, Pitch: Add Pitch Point at cursor, es decir una curva de pitch constante que sea la media aproximada de la anterior. La curva de entonación ya estaría bastante centrada a una frecuencia ya que el locutor debe procurar un pitch constante a lo largo de la lectura, como ya habíamos indicado.

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA - Por ultimo con la opción Get resynthesis (PSOLA)

- Por ultimo con la opción Get resynthesis (PSOLA), obtenemos una nueva muestra con un pitch constante, que guardaremos como archivo Wav. Esta será la muestra que utilizaremos para la segmentación. Una vez recogido el corpus con las características deseadas el siguiente paso es etiquetar los difonemas que formarán parte de la base de datos.

5.4 Segmentación y etiquetado

La segmentación y etiquetado se puede hacer manualmente con ayuda de herramientas de visualización de señal, o automáticamente gracias a la existencia de algoritmos de segmentación. Nosotros nos hemos inclinado por la primera.

Como herramientas de visualización de señal estudiamos la utilidad de dos que teníamos a nuestra disposición. Estas dos herramientas son Praat del que ya hemos hablado en el apartado anterior y Dstudio que es programa que proporciona el proyecto Mbrola.

5.4.1 Dstudio

Esta es una utilidad muy sencilla para su manejo, pero con muy pocas opciones a la hora de la manipulación de las muestras. Solo nos permite la visualización del nivel de la señal. Con lo que la segmentación la tendremos que hacer con la única indicación del dominio temporal sin podernos apoyar en espectro de la señal.

la tendremos que hacer con la única indicación del dominio temporal sin podernos apoyar en espectro

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

La principal característica de este programa es que esta diseñado específicamente para trabajar con Mbrola, y sus formatos de archivos son los que utilizan en el proyecto Mbrola.

Con lo que la utilización de Dstudio será necesaria para trabajar con el formato de Mbrola, pero para la segmentación nos hemos declinado por trabajar con Praat.

5.4.2 Praat

Praat es un programa diseñado para el estudio de la fonética. Las principales ventajas que ofrece frente a Dstudio para la segmentación y etiquetado son dos:

- Su manejabilidad es mucho mejor, tanto en la selección de tramos de señal como en su marcado.

- Permite visualizar el espectrograma junto con el nivel de intensidad. Esto permite distinguir los límites de los fonemas con mayor claridad. El espectrograma es la herramienta más fiable para realizar una buena segmentación ya que como se puede ver en la imagen se pueden distinguir perfectamente los fonemas y las coarticulaciones que aparecen entre ellos. Las franjas de puntos (rojos) representan los formantes mientras que la línea recta (azul) representa el pitch que es constante a lo largo de toda la frase al haber sido tratado previamente.

largo de toda la frase al haber sido tratado previamente. Para la segmentación utilizamos la opción

Para la segmentación utilizamos la opción de Praat Lebel & Segment: to text grid lo que abre la siguiente ventana:

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA Praat permite utilizar varios niveles para la segmentación que

Praat permite utilizar varios niveles para la segmentación que se definirán en la parte superior, estrictamente solo se necesitarían dos uno para el nivel fonema y otro para el de difonema de esta forma se pude recoger tanto el principio y el final del difonema como el punto de transición entre los fonemas que lo forman. Nosotros sin embargo hemos utilizado tres niveles lo que nos permite segmentar dos difonemas formados por tres fonemas consecutivos en el mismo archivo, es decir de /kas/ se podría obtener los difonemas /ka/ y /as/ sin necesidad de crear dos archivos distintos.

/ka/ y /as/ sin necesidad de crear dos archivos distintos. Como podemos observar en la figura

Como podemos observar en la figura la segmentación disponiendo del espectrograma se torna bastante más sencilla que disponiendo solo del nivel de intensidad de la señal. Más información a cerca de Praat y su funcionamiento se puede encontrar en [10].

La posición de los difonemas segmentados dentro del corpus se encuentra en el Apéndice G.

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

Una vez segmentada la muestra obtenemos un fichero Textgrid con una estructura muy complicada que no podemos utilizar con Dstudio, este inconveniente lo tratamos en el siguiente apartado.

5.5 Formato Mbrola

Para estudiar la diferencia entre los formatos de Praat y de Dstudio, este último es el utilizado por los usuarios del proyecto Mbrola, las analizaremos a través de un pequeño ejemplo.

Una vez segmentada la frase con los difonemas que nos interesan, nos queda en la pantalla un resultado como el del siguiente ejemplo:

en la pantalla un resultado como el del siguiente ejemplo: Donde en este caso particular, tenemos

Donde en este caso particular, tenemos los difonemas /ug/, /ga/ y /rp/. La franja 1 debajo del espectrograma es en la que realizamos la segmentación, mientras que la franja 2 y 3 sirven para verificar que los difonemas se han tomado correctamente. El archivo TextGrid resultante será un archivo con la siguiente estructura:

File type = "ooTextFile" Object class = "TextGrid"

xmin = 0 xmax = 6.3705625000000001 tiers? <exists> size = 3

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

item []:

item [1]:

class = "IntervalTier" name = "1" xmin = 0 xmax = 6.3705625000000001 intervals: size = 8 intervals [1]:

xmin = 0 xmax = 3.8345032560642442 text = "" intervals [2]:

xmin = 3.8345032560642442 xmax = 3.9559488010941988 text = "u" intervals [3]:

xmin = 3.9559488010941988 xmax = 4.0335172459842994 text = "g" intervals [4]:

xmin = 4.0335172459842994 xmax = 4.1526122320781909 text = "a" intervals [5]:

xmin = 4.1526122320781909 xmax = 4.8740374755294162 text = "" intervals [6]:

xmin = 4.8740374755294162 xmax = 4.9647090361907651 text = "r" intervals [7]:

xmin = 4.9647090361907651 xmax = 5.0988659371692906 text = "p" intervals [8]:

xmin = 5.0988659371692906 xmax = 6.3705625000000001 text = "" item [2]:

Y con el programa realizado hacemos que los datos queden con el formato de archivo dat que admite el programa Dstudio. Quedando como resultado en nuestro ejemplo el siguiente archivo:

!16000

u

g

FRASE8.WAV El lugar de la carpa 61352 63294 64536

g

a

FRASE8.WAV El lugar de la carpa 63294 64536 66442

r

p

FRASE8.WAV El lugar de la carpa 77984 79435 81581

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

El archivo TextGrid está estructurado de la siguiente forma:

Las dos primeras líneas indican el tipo de archivo que en este caso es de texto y la clase de objeto que se corresponde a un TextGrid.

Las dos líneas siguientes indican el inicio y el final del archivo de sonido tratado en segundos.

La línea size=3 indica que disponemos de tres franjas para segmentar de las cuales como se ha indicado antes solo se ha usado la primera.

Item define la franja etiquetada con el nombre que se encuentre en la línea name y dentro de este se encuentra tabulada toda la información de los segmentos realizados.

Intervals son cada uno de los intervalos de tiempo en los que hemos dividido la franja. En este ejemplo los intervalos tomados son ocho. Cada uno de los ocho intervalos van etiquetados con el nombre del fonema en código SAMPA que hallamos deseado segmentar junto con la posición de inicio y final que ocupa en segundos dentro del archivo de audio que contiene la frase a segmentar. Los segmentos generados por defecto es decir los que existen entre dos letras, no poseen valor en la etiqueta de texto del intervalo.

El archivo dat utilizado por Dstudio está dispuesto de la siguiente manera:

La primera línea indica la frecuencia de muestreo de la señal de audio que en este caso es de 16 kHz.

Las siguientes líneas contienen cada uno de los difonemas tomados de la frase con una serie de datos ordenados de la siguiente forma:

- Primero se especifican los fonemas de inicio y final que posee el difonema en código SAMPA.

- El siguiente dato es el nombre del archivo de audio del que se ha extraído el difonema.

- A continuación se indica la frase que contiene el archivo de audio.

- Finalmente se indican en muestras la posición de inicio, medio y fin del difonema.

Una vez descrita la disposición y forma de cada uno de estos archivos, el programa realiza las siguientes operaciones:

Recoge los valores de la posición de inicio, medio y final del difonema en cuestión en segundos junto con el código SAMPA del par de fonemas que intervienen en el difonema.

Una vez adquiridos estos datos se disponen con el formato que poseen los archivos dat de diphone. Los campos de nombre de fichero de audio y frase del fichero se solicitan por teclado.

Para pasar las posiciones de los difonemas cuyos valores se dan en segundos a muestras tal y como lo solicita el formato de diphone, deberemos conocer las muestras por segundo a las que ha sido muestreada la señal de audio. Al ser la recomendación de Mbrola muestrear a 16 kHz, lo único que habrá que hacer es multiplicar cada valor por 16.000 para obtener los valores en muestras.

CAPÍTULO V: CREACIÓN DE UNA VOZ MBROLA

El programa también posee la opción de agregar al archivo dat, difonemas de distintas frases, ya que todo el corpus debe estar integrado en un archivo dat para generar el EXPORT a enviar.

Una vez obtenido el archivo dat completo con la descripción de dónde se localizan los 462 difonemas en las frases grabadas, el último paso es abrir el archivo con el Dstudio y dentro del menú File pulsar la opción EXPORT y esto nos generará la serie de ficheros que deberemos enviar a la Facultad Politécnica de Mons (Bélgica) para que compilen la voz creada.

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

CapítuloCapítuloCapítuloCapítulo 6666

Parlante,Parlante,Parlante,Parlante, EEstudioEEstudiostudiostudio deldeldeldel funcionamientofuncionamientofuncionamientofuncionamiento

6.1 Introducción

En este capítulo trataremos de describir el sistema de síntesis de voz a partir de texto PARLANTE [3], para ello nos centraremos primero en su estructura funcional analizando posteriormente los distintos módulos que lo componen así como las distintas alternativas desarrolladas para cada módulo, también describiremos la herramienta GCONFIG desarrollada como gestor de módulos para hacer mas fluido el manejo de la estructura. Toda la documentación acerca de esta versión de PARLANTE se encuentra en [3].

6.2 Descripción de la estructura

A lo largo de los años, se han usado varias estructuras para la construcción de

sistemas de conversión texto voz. Una de estas estructuras es la monolítica, que consiste en un solo programa que implementa todas las funciones. Este sistema funciona bien pero es poco versátil y difícil de mantener, la inclusión de nuevas funcionalidades resulta muy costosa.

Paralelamente al uso de estructuras monolíticas se empezó a trabajar con

estructuras en las que primaba por encima de todo la flexibilidad, sin comprometer en exceso otros factores como la velocidad, surge así la estructura pipeline. Esta estructura tiene distintas ventajas además de la versatilidad, entre ellas la facilidad de sustituir unos módulos por otros y la posibilidad de desarrollarlos independientemente para integrarlos posteriormente y la ejecución

de los componentes puede ser concurrente aumentando así el rendimiento global,

por otro lado también conlleva algunos inconvenientes como que la posibilidad de

configuración de los módulos es muy limitada, solo permite conectar módulos unos a continuación de otros y la detección y recuperación de errores es muy complicada.

En los últimos tiempos se ha desarrollado otro tipo de estructura conocida como modelo pizarra (blackboard), consiste en una estructura de datos a la que tienen acceso todos los módulos que componen el sistema. Cada uno de los módulos se ejecuta cuando dispone de los datos que necesita. El principal problema de esta

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

estructura es la coexistencia en la estructura de datos de parámetros de distinta naturaleza, que los módulos pueden no necesitar pero que tienen que entender.

De entre estas opciones para la construcción de la versión de PARLANTE [3] que vamos a estudiar, se inclinaron por una estructura que resulta de la no imposición de la arquitectura pipeline de que los distintos módulos estén conectados uno a continuación del otro. De este modo, se adquieren las ventajas que tenia la estructura pipeline, proporcionando además mayor versatilidad en la configuración de los módulos, en algunos casos dependiendo de la disposición de estos será posible ejecutar paralelamente (incluso en maquinas distintas) distintos módulos, aumentando así la velocidad del sistema. Un esquema de esta estructura se refleja en la figura 1.

Entrada Bloque de síntesis Bloque de análisis Análisis texto 1 M. síntesis 1 B.D Análisis
Entrada
Bloque de síntesis
Bloque de análisis
Análisis texto 1
M.
síntesis 1
B.D
Análisis texto 2
M síntesis 2
Alófonos
Análisis texto n
M.
síntesis n
Bloque de reproducción

Información

Configuración

n Bloque de reproducción Información Configuración Gestor sistema Módulo reproducción 1 Módulo

Gestor sistema

Módulo reproducción 1 Módulo reproducción 2 Módulo reproducción n

Módulo reproducción 1

Módulo reproducción 2

Módulo reproducción n

Gestor sistema Módulo reproducción 1 Módulo reproducción 2 Módulo reproducción n Muestras Figura 1 52
Gestor sistema Módulo reproducción 1 Módulo reproducción 2 Módulo reproducción n Muestras Figura 1 52

Muestras

Muestras
Muestras
Muestras

Figura 1

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

Según el esquema de la figura 1 podemos observar que los módulos pertenecen a tres clases distintas: análisis, síntesis y reproducción. Esto no es más que una manera de dividir lógicamente la funcionalidad del sistema. Esta arquitectura esta perfectamente definida en [1] y presenta las siguientes características:

- Permite al diseñador entender el comportamiento del sistema como la composición de módulos individuales.

- Soporta reutilización.

- Es fácil de mantener y mejorar. Pueden añadirse fácilmente nuevos módulos o reemplazar los ya existentes por versiones mejoradas.

- Permite análisis especializados.

- Soporta de forma natural la ejecución concurrente.

También soporta algunos inconvenientes este tipo de arquitectura:

- El manejo de aplicaciones interactivas no resulta del todo natural, si bien puede solucionarse usando las aplicaciones interactivas como un módulo más, o utilizando la información generada por éstas como entrada a módulos del sistema.

- Cada módulo debe interpretar los datos que le llega y formatear a su vez la salida, lo que conduce a una pérdida de eficiencia y un aumento de complejidad de los módulos.

6.3 Herramienta de gestión de configuraciones “gconfig”

6.3.1 Introducción

La herramienta de gestión de configuraciones “gconfig”se desarrollo en el departamento de informática de la universidad de Valladolid, como parte de un entorno de desarrollo de sistemas de síntesis de voz a partir de texto. El hecho de disponer de una herramienta que permita configurar a voluntad la disposición de los componentes de un sistema texto-voz, resulta muy interesante de cara a obtener una configuración ideal, o al estudio de ciertas características del habla, para su aplicación posterior en otras áreas como el reconocimiento de voz.

La herramienta gconfig permite satisfacer las siguientes cualidades:

- Permite la ejecución de módulos independientes, con un número de requisitos mínimo para poder ser incluidos en el sistema. Los requisitos se refieren al interfaz de entrada/salida de los módulos.

- Es capaz de generar código fuente en lenguaje C que, una vez compilado y ejecutado, permitirá la ejecución de dichos módulos sin la necesidad de estar ejecutándose el “gestor de configuraciones”.

- Permite la comunicación “multicast” entre módulos (uno a muchos), sin necesidad de cambiar los requisitos de entrada/salida de los módulos implicados, mediante la generación automática de módulos de comunicación.

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

- Permite la ejecución secuencial de los módulos ejecutables (se entiende que el modo normal de ejecución de los módulos es concurrente). Esta característica permitirá la migración del sistema construido a partir de la herramienta a otras plataformas de un modo inmediato.

- El modo de comunicación entre los módulos ejecutables, no será único, para aumentar la flexibilidad en la construcción de dichos módulos.

- Asegura que el esquema estructural adoptado por los módulos ejecutables en cada configuración se atiende a las especificaciones de la arquitectura diseñada para la construcción de sistemas texto-voz propuesta en el apartado anterior.

6.3.2 Parámetros de la herramienta gconfig

El gestor de configuraciones es un programa que acepta parámetros en su línea de comandos, presentando la siguiente sintaxis:

Gconfig –i ficheroconfig [-c fichero C] [-b ficherolotes] [-p] [-h]

El único parámetro que necesariamente ha de proporcionarse al sistema es el fichero de configuración, donde se detallan los módulos que desean ejecutarse y las conexiones entre ellos.

El resto de parámetros son opcionales y se detallan a continuación:

Opción -c ficheroC: Esta opción causa que gconfig no ejecute los módulos especificados en el fichero de configuración, sino que produzca un fichero e lenguaje C (ficheroC), cuya posterior compilación y ejecución resulte en la conexión y lanzamiento de los módulos, como si lo hiciera el propio gconfig. Una vez que se ha obtenido el programa en C, ya no es necesario el fichero de configuración ni el gestor, de modo que esta operación resulta especialmente atractiva para realizar distribuciones de configuraciones plenamente consolidadas. Opción –b ficheroLotes: Esta opción provoca que gconfig no ejecute los módulos especificados en el fichero configuración, sino que produzca un fichero por lotes (ficheroLotes) a partir de la información de la declaración de módulos en el fichero de configuración. La parte de conexiones del fichero de configuración es ignorada. La utilidad de esta opción se justifica cuando se desea que los módulos se ejecuten secuencialmente. Opción –p: Esta opción provoca que todos los procesos de comunicación creados automáticamente por gconfig tengan su origen conectado mediante pipe, ya que mecanismo de comunicación por defecto es la cola (FIFO). Esta opción entenderá por completo cuando comentemos posteriormente el formato del fichero de configuración. Opción –h: esta opción presenta por pantalla un mensaje con la sintaxis se gconfig y un breve comentario de sus opciones.

Hay que aclarar que la opción

mutuamente excluyentes, es decir por cada ejecución de gconfig se generará un

-h excluye a todas las demás, y que –b y –c son

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

fichero C, un fichero por lotes, o el propio gestor lanzará los módulos, pero nunca se obtendrá mas de una salida.

Para una correcta ejecución, gconfig hace uso de dos variables de entorno:

GMÓDULODIR y GCOMDIR. GMÓDULODIR es la ruta absoluta al directorio donde se encuentran los módulos ejecutables especificados en el fichero de configuración, mientras que GCOMDIR es la ruta absoluta al directorio donde se encuentra el ejecutable correspondiente a los procesos de comunicación que gconfig crea automáticamente; típicamente, este programa e encontrara en el mismo directorio que gconfig, puesto que se distribuye con el, aunque el usuario pueda crear su propio proceso de comunicación de forma sencilla.

6.3.3 Formato de entrada de gconfig (fichero de configuración)

Si bien los programas que se ejecuten pueden ser de cualquier naturaleza, la sintaxis del fichero de entrada a gconfig tiene una estructura específica. En esta sección describiremos el fichero de configuración que sirve de entrada a gconfig para generar posteriormente la salida pedida. Primero describiremos la estructura y posteriormente incluiremos un ejemplo para que quede mas claro.

El fichero comienza con una línea <!DOCTYPE………>, opcional, que puede incluirse para su compatibilidad con el estándar SGML.

El fichero esta delimitado por las etiquetas <MMML> y </MMML>, colocadas al principio y al final del mismo, y pueden distinguirse en el cuatro secciones, tres de ellas correspondientes a la declaración de módulos y otra para conexiones. El orden de las secciones no puede variarse y es el siguiente: sección de análisis, sección de síntesis, sección de reproducción y sección de conexiones. Comentaremos ahora cada una de ellas.

6.3.3.1 Sección de análisis

Esta delimitada por las etiquetas <ANALISIS> y </ANALISIS>, y contiene una o más declaraciones de módulos dedicados al análisis del texto de entrada con la siguiente sintaxis:

<MÓDULO ETIQ=etiqueta E=nEntradas S= nSalidas PROG=ejecutable param1 paramn

- etiqueta es el nombre que le damos al módulo para su identificación; ha de ir entrecomillado y debe constar de entre 1 y 8 caracteres alfabéticos.

- nEntradas es el número entero que representa el número de entradas que tiene el módulo. Cada una de estas entradas deberá estar representada en la sección de conexiones, o de lo contrario se producirá error.

- nSalidas es el número entero que representa el número de salidas que tiene el módulo. Como las entradas, todas ellas deberán estar representadas en la sección de conexiones. Se produce la particularidad de que un módulo puede tener declarada una salida, pero esta estar conectada a varios módulos, aquí gconfig incluye módulos de comunicación

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

automáticamente, encargados de recoger la salida del módulo y distribuir los datos a las entradas de aquellos a los que está conectado.

es el nombre del programa ejecutable junto

con los parámetros que se le desee proporcionar. Al igual que el nombre de la etiqueta, esta cadena también ha de ir entrecomillada.

- ejecutable param1

paramn

6.3.3.2 Sección de síntesis

Esta delimitado por las etiquetas <SINTESIS> y </SINTESIS>, y esta compuesta por la declaración de uno o mas módulos encargados de la obtención de muestras de habla y reproducción de sonido. Se especifica en la misma forma que en la sección de análisis.

6.3.3.3 Sección de reproducción

Esta delimitado por las etiquetas <REPROD> y </REPROD>, y esta compuesta por la declaración de uno o mas módulos encargados de la obtención de muestras de habla y reproducción de sonido. Se especifica en la misma forma que en las secciones de análisis y síntesis.

6.3.3.4 Sección de conexiones

Esta delimitada por las etiquetas <COM> y </COM>, y esta compuesta por declaraciones de una o más conexiones entre módulos, en líneas con la siguiente sintaxis:

<CONEX TIPO=tipoConex ORIG=etiqOrig PO=nOrig DEST=etiqDest PD=nDEST>

- tipoConex es el tipo de conexión que desea realizarse entre dos módulos determinados; esta puede ser mediante pipes (palabra clave PIPE) o mediante colas (FIFOS, palabra clave fichero). La diferencia es que el sistema pasará a los módulos descriptores de fichero (números enteros) o nombres de ficheros respectivamente, como parámetros de entrada salida. Los módulos de los extremos de la conexión deberán estar preparados para recibir tales parámetros en la línea de comandos, como se verá mas adelante.

- etiqOrig es el nombre entrecomillado de la etiqueta del módulo origen de la conexión, que debe corresponder con alguna etiqueta declarada en cualquiera de las anteriores secciones.

- nOrig es un número entre 1 y el número de salidas del módulo de origen, e identifica la salida a que nos referimos en la declaración de cada conexión.

- etiqDest es el nombre entrecomillado de la etiqueta del módulo destino de la conexión, que debe corresponder con alguna etiqueta declarada en cualquiera de las secciones anteriores.

- nDest es un número entre 1 y el número de entradas del módulo destino, e identifica la entrada a que nos referimos en la declaración de cada conexión.

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

Veremos ahora un ejemplo como proporcionar gconfig una entrada correcta. Nos basaremos en la configuración de la figura 2.

B E A C F D
B
E
A
C
F
D

G

G
G
G
H I
H
I

Figura 2

El fichero de configuración correspondiente es el siguiente:

<!DOCTYPE MMML SYSTEM “mmml.dtd” []> <MMML> <ANALISIS> <MÓDULO ETIQ=”A” E=0 S=1 PROG=”A param1….paramn”> </ANALISIS> <SINTESIS> <MODULO ETIQ=”B” E=1 S=1 PROG=”B param1….paramn”> <MODULO ETIQ=”C” E=2 S=1 PROG=”C param1….paramn”> <MÓDULO ETIQ=”D” E=2 S=1 PROG=”D param1….paramn”> <MODULO ETIQ=”E” E=1 S=1 PROG=”E param1….paramn”> <MODULO ETIQ=”F” E=1 S=1 PROG=”F param1….paramn”> <MODULO ETIQ=”G” E=3 S=1 PROG=”G param1….paramn”> </SINTESIS> <REPROD> <MODULO ETIQ=”H” E=1 S=1 PROG=”H param1….paramn”> <MODULO ETIQ=”I” E=1 S=0 PROG=”I param1….paramn”> </REPROD> <COM> <CONEX TIPO=FICHERO ORIG=”A” PO=1 DEST=”B” PD=1> <CONEX TIPO=FICHERO ORIG=”A” PO=1 DEST=”C” PD=1> <CONEX TIPO=FICHERO ORIG=”A” PO=1 DEST=”D” PD=1> <CONEX TIPO=FICHERO ORIG=”B” PO=1 DEST=”C” PD=2> <CONEX TIPO=FICHERO ORIG=”B” PO=1 DEST=”D” PD=2> <CONEX TIPO=FICHERO ORIG=”B” PO=1 DEST=”E” PD=1> <CONEX TIPO=FICHERO ORIG=”C” PO=1 DEST=”F” PD=1> <CONEX TIPO=FICHERO ORIG=”E” PO=1 DEST=”G” PD=1> <CONEX TIPO=FICHERO ORIG=”F” PO=1 DEST=”G” PD=2> <CONEX TIPO=FICHERO ORIG=”D” PO=1 DEST=”G” PD=3> <CONEX TIPO=FICHERO ORIG=”G” PO=1 DEST=”H” PD=1> <CONEX TIPO=FICHERO ORIG=”H” PO=1 DEST=”I” PD=1> </COM>

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

</MMML>

Vemos como en la sección de conexiones están especificadas todas las comunicaciones. Podemos observar la situación en la que un módulo tiene una sola salida pero esta destinada a varios módulos de destino.

6.3.4 Ficheros que componen la herramienta

Mmml.l: Analizador léxico en LEX que alimenta con tokens al analizador sintáctico. Mmml.y: Analizador sintáctico en YACC que implementa la gramática del formato de entrada. Gconfig.c: fichero principal donde se incluyen las funciones correspondientes al resto de módulos del diseño. Gconfig.h: fichero de cabecera con declaraciones de constantes y estructuras de datos. Errores.h: fichero con textos de error que pueden producirse durante el análisis sintáctico del fichero de configuración.

6.4 Descripción de los módulos

La configuración que usaremos del sistema PARLANTE [3] para trabajar con el sistema Mbrola es la representada en la figura 3, esta configuración es descriptiva, para algunos módulos hay distintas versiones que indicaremos mas adelante siendo todas ellas aptas para la implementación de la arquitectura.

En2text Text2en Pitch Filpitch (J) (K) (C) (F) Dura Fildur Mixer (B) (E) (G) Par2
En2text
Text2en
Pitch
Filpitch
(J)
(K)
(C)
(F)
Dura
Fildur
Mixer
(B)
(E)
(G)
Par2
Param
Mbrola
(D)
(M)

Figura 3

Textofon (A)
Textofon
(A)

Mbrolawrap

(H)

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

El fichero de configuración para la estructura representada en la figura 3 es el siguiente:

<!DOCTYPE MMML SYSTEM "mmml.dtd" []> <MMML>

<ANALISIS> <MÓDULO ETIQ="A" E=0 S=1 PROG="textofon -i texto"> </ANALISIS>

<SINTESIS> <MÓDULO ETIQ="B" E=1 S=1 PROG="duracion"> <MÓDULO ETIQ="C" E=2 S=1 PROG="pitch"> <MÓDULO ETIQ="D" E=2 S=1 PROG="param"> <MÓDULO ETIQ="E" E=1 S=1 PROG="fildur"> <MÓDULO ETIQ="F" E=1 S=1 PROG="filpitch"> <MÓDULO ETIQ="G" E=3 S=1 PROG="mixer"> <MÓDULO ETIQ="J" E=1 S=1 PROG="en2text"> <MÓDULO ETIQ="K" E=1 S=1 PROG="text2en"> <MÓDULO ETIQ="M" E=1 S=1 PROG="par2mbrola"> </SINTESIS>

<REPROD> <MÓDULO ETIQ="H" E=1 S=0 PROG="mbrolawrap -b es4 -o

text1.wav">

</REPROD>

<COM> <CONEX TIPO=FICHERO ORIG="A" PO=1 DEST="B" PD=1> <CONEX TIPO=FICHERO ORIG="A" PO=1 DEST="J" PD=1> <CONEX TIPO=FICHERO ORIG="J" PO=1 DEST="K" PD=1> <CONEX TIPO=FICHERO ORIG="K" PO=1 DEST="C" PD=1> <CONEX TIPO=FICHERO ORIG="A" PO=1 DEST="D" PD=1> <CONEX TIPO=FICHERO ORIG="B" PO=1 DEST="C" PD=2> <CONEX TIPO=FICHERO ORIG="B" PO=1 DEST="D" PD=2> <CONEX TIPO=FICHERO ORIG="B" PO=1 DEST="E" PD=1> <CONEX TIPO=FICHERO ORIG="C" PO=1 DEST="F" PD=1> <CONEX TIPO=FICHERO ORIG="E" PO=1 DEST="G" PD=1> <CONEX TIPO=FICHERO ORIG="F" PO=1 DEST="G" PD=2> <CONEX TIPO=FICHERO ORIG="D" PO=1 DEST="G" PD=3> <CONEX TIPO=FICHERO ORIG="G" PO=1 DEST="M" PD=1> <CONEX TIPO=FICHERO ORIG="M" PO=1 DEST="H" PD=1> </COM> </MMML>

Pasaremos ahora a analizar los distintos módulos que implementan esta arquitectura, describiendo su funcionamiento, sintaxis, sus formatos de entrada/salida e indicando las distintas versiones, si es que estas existen.

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

6.4.1 Módulo Textofon

6.4.1.1Descripción

Este módulo realiza una trascripción del texto de entrada a alófonos. Realiza también tareas de procesamiento (expansión de siglas, normalización de números y abreviaturas, etc.), acentuación (coloca el golpe de voz en todas las palabras), juntura y silabicación. Este sistema distingue distintos tipos de vocales, situación que nosotros no reflejamos.

Existe una nueva versión mas avanzada, pero que realiza básicamente la misma función con la misma sintaxis y ficheros de entrada y salida. La diferencia es que genera automáticamente las listas de enumerados en lugar de tenerlas definidas. Este módulo recibe el nombre de tex2alo que será el que finalmente utilicemos.

6.4.1.2 Sintaxis

La sintaxis del módulo transcriptor es la siguiente:

Tex2alo –i1 ficheroTexto -o1 ficheroAlofonos

Donde ficheroTexto es el fichero que contiene el texto que queremos transcribir, y ficheroAlofonos es el resultado de la trascripción, en un formato que se comentará en el siguiente apartado. Si el programa se ejecuta con éxito, devuelve un código de salida 0, de otro modo, el código será distinto de cero.

6.4.1.3Entrada/salida

La entrada al módulo es un fichero de texto, que puede contener números, palabras abreviadas, siglas, etc. Si el transcriptor es capaz de reconocer estas palabras especiales las pronunciara y si no es posible las deletreara.

La salida de este módulo es un flujo de datos binario, correspondiente al tipo enumerado del lenguaje C, cuyo tamaño depende del tamaño de palabra de la maquina (típicamente 4 bytes). El conjunto de enumerados que este módulo es capaz de producir se muestra en el Apéndice H.

El fichero de salida tiene en cuenta las siguientes consideraciones:

- La salida termina cuando aparece el enumerando FIN_FICH.

- El texto esta dividido en frases, al final de cada una de ellas se coloca el enumerando FIN_FRA.

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

- El primer enumerando de cada frase indica su tipo, ENUN (enunciativa), INT_ABS (interrogativas absolutas), INT_PRO (interrogativas pronominales) o EXCL (exclamativas).

- El segundo enumerando de cada frase indica el numero de sílabas acentuadas que tiene la frase (CERO, UNA, MAS). Se requiere para conseguir inflexiones en la entonación.

- A continuación aparecen los alófonos que forman la frase, divididos en palabras y las palabras en silabas. El final de cada palabra se marca con el enumerando BLANCO y el final de la sílaba se marca con el enumerando SEL_SIL. Al final de la palabra aparece en primer lugar SEL_SIL y después BLANCO.

- Después de cada palabra y antes de finalizar la frase, pueden aparecer pausas (PUNTO, COMA,…), seguidos siempre del enumerando BLANCO.

- Acompañando a los alófonos vocálicos puede aparecer el enumerando DOS_PUN indicando que la vocal es larga.

- Tras la vocal acentuada de la primera sílaba de cada frase, aparece el enumerando PRI_AC indicándolo.

- Tras la vocal acentuada de la ultima sílaba acentuada de cada frase aparece el enumerando ULT_AC indicándolo.

6.4.2 Módulo Duración

6.4.2.1 Descripción

Este módulo se encarga de calcular la duración, en milisegundos, de los alófonos correspondientes al texto de entrada, un valor por alófono. Además sustituye las pausas existentes por el carácter “|”, y le asocia la duración correspondiente.

Existen tres versiones de este módulo, la diferencia entre duracion2 y las restantes es que considera el alófono silencio (representado por “_ “), la consideración de este alófono es necesaria en la síntesis Mbrola. La diferencia entre duracion1 y duracion3, es que tratan de distinta manera los fonemas vibrantes sonoros.

En nuestro sistema final nos inclinamos por usar la segunda versión del módulo duración, llamado duracion2.

El módulo se basa en las siguientes reglas, que son:

La duración tiene una proporción inversa con relación a la duración de la frase. Existe además un alargamiento de los fonemas que se encuentran cerca del final de la frase, que se puede estimar en un 20%. Los segmentos silábicos se acortan un 15% si no son silaba final de palabra. La influencia que una consonante provocaría sobre la duración de la vocal, dependiendo de su tipo, es la siguiente:

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

o

En final de Palabra en sílaba abierta, aumenta su duración en un

20%.

o

Antes de una fricativa sonora, aumenta su duración en un 60%.

o

Antes de una explosiva sonora, aumenta su duración en un 20%.

o

Antes de una nasal, disminuye su duración en un 15%.

o

Antes de una explosiva sorda, disminuye su duración en un 30%.

Una vocal o una consonante incrementara o disminuirá su duración

dependiendo de si va precedida o seguida de otra vocal o consonante de la forma siguiente:

o

Vocal seguida de vocal, aumenta la duración en un 60%.

o

Vocal precedida de vocal, decrementa la duración en un 30%

o

Consonante rodeada de consonantes, decrementa la duración en un

50%

o

consonante seguida de consonante, decrementa la duración en un

30%

o

consonante procedida de consonante, decrementa la duración en un

30%.

6.4.2.2 Sintaxis

La sintaxis de este módulo es la siguiente:

duracion –i1ficheroAlofonos -o1ficheroDuración

Donde ficheroAlofonos es un fichero de enumerados en el formato de salida del módulo tex2alo descrito anteriormente. FicheroDuracion es un fichero que contiene alófonos y sus duraciones.

6.4.2.3Entrada/salida

El formato de entrada de este módulo corresponde con el de salida del módulo textofon ya comentado, mientras que la salida consta de tres columnas, siendo la primera una representación ASCII del enumerado de la salida de textofon (salvo las pausas que se representan con “|”), la segunda tiene el instante de inicio y la tercera el de final en la lectura del texto.

El módulo duración toma algunos parámetros del fichero duración.cfg, que tiene la siguiente estructura:

VELOCIDAD=<número en punto flotante> PPALABRAS=<número entero> PPUNTO=< número entero > PCOMA=< número entero > PPUNTOCOMA=< número entero > PPUNTOSSUSP=< número entero > PINTERR=< número entero > PADMIRA=< número entero >

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

PDOSPUNTOS=< número entero >

Es muy importante no dejar líneas en blanco entre los parámetros, y mantener el orden establecido aquí, pues se interpretan las líneas según el mismo.

VELOCIDAD: rapidez de lectura. Valores entre 0.8 y 2.5. Un parámetro más alto produce una lectura más lenta. Es un parámetro adimensional. PPALABRAS : pausa entre palabras en milisegundos. PPUNTO: pausa después de punto en milisegundos. PCOMA: pausa después de coma en milisegundos. PPUNTOCOMA: pausa después de punto y coma en milisegundos. PPUNTOSSUSP: pausa después de puntos suspensivos en milisegundos. PINTERR: pausa después de interrogación en milisegundos PADMIRA: pausa después de admiración en milisegundos PDOSPUNTOS: pausa después de dos puntos en milisegundos

El módulo usa una variable de entorno denominada DURCFGDIR, indicando el directorio en que se encuentra el fichero de configuración.

6.4.3 Módulo Pitch

6.4.3.1Descripción

El módulo pitch calcula los valores de frecuencia fundamental para cada alófono correspondiente al texto de entrada, se obtienen cinco valores por alófono (en Hz). Este dato depende de versiones del módulo, nosotros optamos por utilizar la versión pitch2, esta versión calcula cinco valores de pitch frente a los tres que calculan las versiones anteriores pitch y pitch1. El módulo detecta cuatro patrones de entonación diferentes, generando curvas distintas para cada uno (enunciativos, interrogativos absolutos, interrogativos pronominales y exclamativas).

Patrones enunciativos: La entonación enunciativa va unida esencialmente a un descenso del tono final. Una curva típicamente enunciativa presenta una subida inicial hasta la primera sílaba tónica, a partir de la cual se inicia un descenso que se prolonga hasta el final del grupo, y que puede acentuarse a partir de la última sílaba tónica. Patrones interrogativos absolutos: Su patrón enunciativo va unido típicamente a un final ascendente. El grupo comienza con un ascenso de la frecuencia fundamental hasta la primera sílaba acentuada, sigue con un descenso pronunciado, hasta la ultima silaba fuerte, o hasta la que la precede inmediatamente, y finaliza con un fonema ascendente. Patrones interrogativos pronominales: sus patrones entonativos suelen terminar con un segmento descendente. Tras una subida inicial hasta la primera sílaba acentuada, comienza un descenso que alcanza hasta el final del grupo.

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

Patrones exclamativos: presentan un patrón melódico en el que la frecuencia fundamental va descendiendo progresivamente desde el principio hasta el final de la frase.

6.4.3.2 Sintaxis

La sintaxis de este módulo es la siguiente:

Pith2 –i1ficheroAlofonos -i2 ficheroDuracion -o1 ficheroPith

Donde ficheroAlofonos esta en el formato de salida del módulo tex2alo, ficheroDuracion esta en el formato de salida del módulo duracion, y fichero pitch contiene información sobre la frecuencia fundamental de los alófonos según se explica en el siguiente apartado.

6.4.3.3 Entrada/salida

La entrada es la salida del módulo tex2alo y duración que ya hemos descrito y la salida contiene seis columnas la primera es una representación ASCII de cada alófono y las otras cinco son las frecuencias de pitch en Hz y representado en punto flotante.

Toma algunos parámetros de un fichero llamado pitch.cfg, cuya estructura se muestra a continuación:

PITCH=<número entero>

Corresponde al pitch base para las curvas de entonación (en Hz).

El módulo usa una variable de entorno llamada TONCFGDIR, indicando el directorio en que se encuentra el fichero de configuración.

6.4.4 Módulo Param

6.4.4.1 Descripción

Param es un módulo que se encarga de calcular los parámetros de entrada para el sintetizador Klatt, este simula el aparato fonador humano mediante filtros resonantes y antirresonantes. No nos paramos a explicar el funcionamiento de este módulo ya que los valores de parámetros que se calculan en el no son necesarios para la síntesis de voz con el algoritmo Mbrola.

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

De las versiones existentes de este módulo usaremos Param3, esta es la última versión aunque dado que estos parámetros no nos son de utilidad sería invariante para el resultado final utilizar cualquiera de las otras versiones disponibles.

6.4.4.2 Sintaxis

La sintaxis de este módulo es la siguiente:

Param3 –i1ficheroAlofonos -i2ficheroDuracion -o1 ficheroParam.

Donde ficheroAlofonos esta en el formato de salida del módulo tex2alo, ficheroDuracion esta en el formato de salida del módulo duración y ficheroParam esta en el formato unificado propuesto, que desarrollaremos en el siguiente apartado.

6.4.4.3 Entrada/salida

El formato de la entrada uno es el de la salida del módulo textofon y el de la entrada dos es la salida del módulo duración cuyos formatos ya hemos descrito. El formato de salida es el unificado y consiste en lo siguiente.

6.4.4.4Formato unificado

Abordamos en esta sección el diseño de un formato de datos para la salida de los módulos del bloque de síntesis, estos son, aquellos cuya salida vaya a parar directamente al bloque de reproducción. El formato presenta una parte capaz de ser interpretada por cualquier sistema y otra, dependiente del sistema que se use. Entra en la fase de conversión en la que los sistemas se dividen, en virtud de la técnica usada para la síntesis, es decir, en el momento en el que se conoce qué sonidos hay que producir, y con que características de duración, frecuencia fundamental y energía. Otros parámetros distintos pueden ser relevantes para la síntesis, dependiendo del sistema que se este usando, por eso nuestro formato permite definir nuevos parámetros que cada sintetizador en concreto necesita para producir sonidos.

No se contemplan en el formato símbolos o estructuras de las que se puedan deducir los parámetros anteriores, algunos sistemas intercalan símbolos, normalmente de carácter gramatical, que ayudan a obtener determinadas características de los sonidos (fundamentalmente rasgos prosódicos). A la hora del diseño no se consideró buena idea mezclar los signos de distinta naturaleza. En definitiva se ha pretendido diseñar un formato lo mas sencillo y funcional posible, que se adapte de forma natural a la mayoría de los sistemas de voz.

El formato consta de una cabecera, una parte de declaraciones, y una parte final, donde se representa la secuencia de alófonos que deben ser producidos por el sintetizador. Los espacios en blanco, tabuladores y retornos de carro se consideran

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

separadores, y los comentarios se colocan entre las marcas <!-- y -- >, pudiendo abarcar varias líneas si es necesario.

Los ficheros que sigan este formato están delimitados por las marcas <SIML> y </SIML>, antes de <SIML> puede colocarse adicionalmente la línea:

<!DOCTYPE sima SYSTEM “sima.dtd” []>.

Por compatibilidad con el estándar SGML.

Cabecera

La cabecera va entre las marcas <CABECERA> y </CABECERA> y consta de tres líneas de uso obligatorio. La primera tiene la sintaxis:

<SISTEMAS NOMBRE= nombreSistema>

Donde nombreSistema es el nombre del sistema texto-voz (entrecomillado) para el que se destina en principio el fichero. El sistema que reciba un fichero capaz de reconocer este identificador, en teoría, interpretar los parámetros adicionales de los alófonos, que se describirán mas adelante. Detrás debe ir una línea con la siguiente sintaxis:

<IDIOMA NOMBRE= nombreIdioma>

Donde nombreIdioma es un identificador entrecomillado de un idioma, que orienta sobre ciertos matices de pronunciación de los alófonos. Nosotros no utilizaremos este parámetro. La última línea de la cabecera tiene la siguiente sintaxis:

<ALOFONOS CONJUNTO=conjuntoAlofonos>

Donde conjuntoAlofonos define el conjunto de los alófonos que podrían usarse para construir la lectura del texto de entrada. Este conjunto viene dado por un nombre entrecomillado, y el sistema que lo reconozca podrá construir correctamente los alófonos del texto.

Bloque de declaraciones

El bloque de declaraciones está delimitado por las etiquetas <PARAMSTD> y </PARAMSTD>, y consta de tres líneas opcionales, cada una de ellas dedicada a uno de los parámetros estándar considerados en la construcción de los alófonos (duración, frecuencia fundamental y energía). Su sintaxis es:

<XXXXX BASE=valor [MIN=valor MAX=valor]>

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

Donde XXXXX puede ser DURACION, TONO o ENERGIA, depende del parámetro o parámetros que queramos declarar, siempre en este orden. BASE indica un valor fijo sobre el que se sumaran los valores dados posteriormente a los alófonos. Para conseguir valores absolutos basta con fijar el valor BASE cero. Por defecto se entiende que los valores de duración vienen expresados en milisegundos los de frecuencia fundamental en hercios y los de energía en dB. El uso de MIN y MAX es opcional y declara que los valores son adimensionales. En caso de que el sistema reciba parámetros de esta forma, tendrá que ajustar el valor a su medida interna, puesto que conoce los límites superior e inferior.

Cuando se declara cualquiera de estos parámetros debe proporcionarse un valor del parámetro por cada alófono que componga la secuencia fonética o de lo contrario se producirá un mensaje de error. Inversamente si alguno de los parámetros no esta declarado, pero se proporciona un valor de él en algún alófono, el sistema también producirá error.

Secuencia de alófonos

Los alófonos que se desea fonetizar se agrupan en un bloque delimitado por las marcas <SEC> y </SEC> y esta compuesto por líneas con la siguiente sintaxis:

<FON

NOMBRE=alófono

[DUR=duracion]

[TON1=tono1]

[TON2=tono2]

[TON3=tono3]

[TON4=tono4]

[TON5=tono5]

[ENE=energia]>

Donde alófono se refiere al alófono que se quiere sintetizar y que esta contenido en el conjunto declarado anteriormente. Los valores de duración, tono y energía están sujetos a su declaración en el bloque anterior.

Cabe destacar que la frecuencia fundamental lleva asociados cinco valores, y que el intérprete del formato será el encargado de interpolar para obtener valores a lo largo de toda la duración del alófono.

Adicionalmente cada alófono puede tener asociado uno o varios parámetros que ayuden a su construcción y que podrán ser interpretados por aquellos sistemas capaces de reconocer el identificador de la cabecera. La sintaxis de los parámetros es la siguiente:

<PARAM NOMBRE=nombreParam TIPO=tipoparam FILAS=valor COLS=valor BASE valor>

Donde nombreParam es un identificador de parámetro, tipo podrá ser INT, FLOAT o STRING, dependiendo de los datos que acompañen al parámetro, FILAS y COLS definen el número de datos que irán tras la declaración de del parámetro, separaos por blancos, tabuladores o retornos de carro, y BASE tiene el mismo significado que el que tenía en la sección de declaraciones antes comentada.

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

El módulo necesita para su correcto funcionamiento la ejecución de un fichero que contiene las tablas de transiciones entre alófonos llamado default.tab, que contiene una cabecera (0x5446), seguido de un bloque de datos por alófono (en total 55 bloques). Cada bloque estará dividido en dos partes: la primera, contiene las transiciones del alófono en cuestión, con cada alófono vocálico, cuando el alófono esta situado detrás de la vocal, la segunda contiene las transiciones con las vocales cuando el alófono esta situado delante da la vocal, cada parte contiene dos números por parámetro por cada uno de los catorce parámetros Klatt, el primero de los números indica el incremento del valor del parámetro desde el principio hasta el final de la transición, mientras que el segundo indica cuanto tiempo dura la transición en milisegundos.

Además el módulo usa un fichero de configuración llamado param.cfg con la siguiente sintaxis:

ATURB=< número entero> KOPEN=< número entero> TLTDB=< número entero> KSKEW=< número entero>

Es muy importante no dejar líneas en blanco entre los parámetros y respetar el orden de los mismos.

ATURB: es la medida de turbulencia que acompaña la generación de sonidos, valores entre 0 y 80. KOPEN: coeficiente de apertura de la glotis frente a un periodo glotal completo (apretura y cierre), valores entre 10 y 65.

TLTDB: desplazamiento espectral al que puede someterse el espectro de la fuente de sonoridad, valores en dB entre 0 y 24.

KSKEW: si es mayor que cero, simula la pulsación doble diplofónica, fenómeno que suele aparecer al final de una pronunciación, y que consiste en la atenuación de pulsos alternos, llegando incluso a desaparecer, valores entre 0 y 40.

6.4.5 Módulo Fildur

6.4.5.1 Descripción

Este módulo se encarga de filtrar los datos obtenidos en el módulo duración y los pasa al formato unificado. Su objetivo junto a filpitch es facilitar la inclusión de módulos que interpreten gráficamente los datos, puesto que el formato de datos que reciben es más simple que el formato unificado.

6.4.5.2 Sintaxis

La sintaxis de este módulo es la siguiente:

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

fildur –i1 ficheroDuracion -o1 ficheroUnifi.

Donde ficheroDuracion esta en el formato de salida del módulo duracion, y ficheroUnifi esta en el formato unificado ya descrito.

6.4.5.3 Entrada/salida

Se ha descrito en el apartado sintaxis.

6.4.6 Módulo Filpitch

6.4.6.1 Descripción

Este módulo se encarga de filtrar los datos obtenidos en el módulo pitch y los pasa al formato unificado. Su objetivo junto a fildur es facilitar la inclusión de módulos que interpreten gráficamente los datos, puesto que el formato de datos que reciben es más simple que el formato unificado.

6.4.6.2 Sintaxis

La sintaxis de este módulo es la siguiente:

filpitch –i1ficheroPitch -o1 FicheroUnifi.

Donde ficheroDuracion esta en el formato de salida del módulo pitch, y ficheroUnifi esta en el formato unificado ya descrito.

6.4.6.3 Entrada/salida

Se ha descrito en el apartado sintaxis.

6.4.7 Módulo Mixer

6.4.7.1 Descripción

Su misión es la de mezclar los flujos de datos que le llegan de los módulos fildur, filpitch y param, para crear una sola salida de datos unificada.

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

6.4.7.2 Sintaxis

La sintaxis de este módulo es la siguiente:

mixer

o1ficheroUnifi

i1ficheroDurUnifi

-i2ficheroPitchUnifi

-i3ficheroParamUnifi

-

Donde ficheroDurUnifi son las duraciones en formato unificado, fichPitchUnifi los datos de frecuencia fundamental en formato unificado y ficheroParamlos parámetros Klatt también en formato unificado. FicheroUnifi es un fichero en formato unificado que contiene todos los parámetros de los tres ficheros de entrada.

6.4.7.3 Entrada/salida

Se ha descrito en el apartado sintaxis.

El módulo usa una variable de entorno denominada MIXEDIR que indica la ruta donde se encuentran los ejecutables que lanza (mixdur, mixton y mixpar).

6.4.8 Módulo En2text

6.4.8.1 Descripción

Este módulo convierte la salida binaria del módulo tex2alo en un archivo legible para el usuario, con la sintaxis descrita en las tablas de enumerados del Apéndice 8, lo que nos permite modificarlo a nuestro antojo.

6.4.8.2 Sintaxis

La sintaxis de este módulo es la siguiente:

En2text -i1ficheroAlofonos -o1ficherolegible

Donde ficheroAlofonos tiene la estructura del fichero de salida del módulo tex2alo ya descrito y ficherolegible es un archivo es un archivo de texto con la información binaria de la entrada transcrita a un sistema legible para el usuario.

6.4.8.3 Entrada/salida

Se ha descrito en el apartado de sintaxis.

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

6.4.9 Módulo Text2en

6.4.9.1 Descripción

Recupera el formato de salida del módulo tex2alo a partir del fichero de texto que produce el módulo anterior. Su misión es recuperar la estructura del fichero de salida de tex2alo para poder usarlo como entrada al módulo pitch. Tanto el módulo en2text como el módulo text2en son complementarios entre si y no tienen una función activa en la síntesis solo nos permiten acceder a datos intermedios de forma sencilla. Por lo que no son necesarios en la estructura.

6.4.9.2 Sintaxis

La sintaxis de este módulo es la siguiente:

Text2en –i1ficherolegible -o1ficheroAlofonos

Donde ficherolegible tiene la estructura del fichero de salida del módulo en2text descrito anteriormente, y ficheroAlófonos tiene la estructura del fichero de salida del módulo tex2alo también descrito.

6.4.9.3 Entrada/salida

Es la descrita en el apartado de sintaxis.

6.4.10 Módulo Par2mbrola

6.4.10.1 Descripción

Transforma el formato unificado que obtenemos a la salida del módulo Mixer, al formato que utiliza Mbrola, que es un archivo pho, que contiene la lista de fonemas su duración y valores de pitch.

La estructura que define para cada fonema es:

struct fon{ char *nombre; /* nombre del fonema */ float *dur; /* duración del fonema */ float *ton1; /*valores de pitch*/ float *ton2; float *ton3; float *ton4; float *ton5; float *ene; /* energia en el punto medio de duración del fonema */

CAPÍTULO VI: PARLANTE, ESTUDIO DE FUNCIONAMIENTO

6.4.10.2 Sintaxis

La sintaxis de este módulo es la siguiente:

Par2mbrola –i1ficherounif –o1ficheropho

Donde ficherounif tiene el formato de fichero unificado ya descrito y ficheropho esta formado por siete columnas. La primera es una representación ASCII de los fonemas que componen el grupo fónico, la siguiente columna esta formada por números que indican la duración del fonema en milisegundos y el resto son valores de frecuencia fundamental en hercios.

6.4.10.3 Entrada/salida

La entrada y salida se ha descrito en el apartado de sintaxis.

6.4.11 Módulo Mbrolawrap

6.4.11.1 Descripción

Este módulo se encarga de lanzar el sistema de síntesis Mbrola pasándole los archivos necesarios. Es equivalente al módulo Klatt para la síntesis con el método de Klatt.

6.4.11.2 Sintaxis

La sintaxis de este módulo es la siguiente:

Mbrolawrap –i1ficheropho –i2ficherobase -01ficherowab

Donde ficheropho tiene el formato de salida del módulo par2mbrola ya descrito, fichero base es el fichero que contiene la base de datos con los fragmentos de sonido que el motor de síntesis utilizara para generar el discurso y ficherowab es un fichero de sonido que contiene el resultado de la síntesis del texto.

6.4.11.3 Entrada/salida

Los fichero de entrada y salida son los descritos en el apartado de sintaxis.

CapítuloCapítuloCapítuloCapítulo 7777

PáginaPáginaPáginaPágina WebWebWebWeb

CAPÍTULO VII: PÁGINA WEB

Uno de los objetivos del proyecto, es la exposición de los resultados obtenidos por medio de una página Web. La finalidad de todo ello es proporcionar a cualquier usuario de Internet un acceso a un sintetizador en línea que contenga la base de voz creada por nosotros. Además se ha pretendido resumir los conocimientos adquiridos e información interesante y relativa al proyecto, para la gente que desee realizar su propia base de voz.

El software destinado para tal fin que hemos elegido es el programa de edición de Web DreamWeaver que sin duda es la herramienta de más fácil manejo del mercado y que permite el desarrollo de Web sin previos conocimientos de HTML. Para el desarrollo de la parte dinámica de la página destinada al sintetizador en línea se ha creado una página que dispone de un formulario el cual es enviado al servidor a través de un interfaz CGI el cual devuelve la correspondiente respuesta por medio de una página que habilita al usuario a la descarga del discurso sintetizado.

de una página que habilita al usuario a la descarga del discurso sintetizado. Figura 7.1: Página

Figura 7.1: Página principal de la Web