Desarrollo de un prototipo de convertidor de texto a voz por medio de síntesis concatenativa para
realizar análisis comparativo entre los métodos MBR-PSOLA y FD-PSOLA
Vanessa Mususué Castro, [email protected]
Julián Andrés Rodríguez Vásquez, [email protected]
Trabajo de Grado presentado para optar al título de Ingeniero de Sonido
Asesor: Santiago Ruiz Sánchez
Universidad de San Buenaventura Colombia
Facultad de Ingenierías
Ingeniería de Sonido
Medellín, Colombia
2017
Citar/How to cite [1]
Referencia/Reference
Estilo/Style:
IEEE (2014)
[1] E. González Mejía, M. C. Home Collazos, y H. A. Lozano Valderrama,
“Desarrollo de un prototipo de convertidor de texto a voz por medio de síntesis
concatenativa para realizar análisis comparativo entre los métodos MBR-PSOLA
y FD-PSOLA.”, Trabajo de grado Ingeniería de Sonido, Universidad de San
Buenaventura Medellín, Facultad de Ingenierías, Seleccione año.
Bibliotecas Universidad de San Buenaventura
Biblioteca Fray Alberto Montealegre OFM - Bogotá.
Biblioteca Fray Arturo Calle Restrepo OFM - Medellín, Bello, Armenia, Ibagué.
Departamento de Biblioteca - Cali.
Biblioteca Central Fray Antonio de Marchena – Cartagena.
Universidad de San Buenaventura Colombia
Universidad de San Buenaventura Colombia - http://www.usb.edu.co/
Bogotá - http://www.usbbog.edu.co
Medellín - http://www.usbmed.edu.co
Cali - http://www.usbcali.edu.co
Cartagena - http://www.usbctg.edu.co
Editorial Bonaventuriana - http://www.editorialbonaventuriana.usb.edu.co/
Revistas - http://revistas.usb.edu.co/
Biblioteca Digital (Repositorio)
http://bibliotecadigital.usb.edu.co
TABLA DE CONTENIDO
RESUMEN ....................................................................................................................................... 9
ABSTRACT……………………………………………………………………………………...10
I. INTRODUCCIÓN ...................................................................................................................... 11
II. PLANTEAMIENTO DEL PROBLEMA .................................................................................. 13
A. Preguntas de investigación .................................................................................................... 13
B. Antecedentes .......................................................................................................................... 13
III. JUSTIFICACIÓN ..................................................................................................................... 16
IV. OBJETIVOS ............................................................................................................................ 17
A. Objetivo general .................................................................................................................... 17
B. Objetivos específicos ............................................................................................................. 17
V. PROBLEMA DE INVESTIGACIÓN ....................................................................................... 18
VI. MARCO TEÓRICO ................................................................................................................. 20
A. Convertidor de texto a voz .................................................................................................... 20
1) Análisis lingüístico ............................................................................................................. 21
a) Analizador morfosintáctico ............................................................................................ 21
b) Transcriptor fonético ...................................................................................................... 22
2) Generador prosódico ........................................................................................................... 22
3) Bloque de síntesis ............................................................................................................... 23
a) Síntesis por formantes .................................................................................................... 23
b) Síntesis articulatoria ....................................................................................................... 23
c) Síntesis derivada de las técnicas de predicción lineal (LPC) ......................................... 24
d) Síntesis basada en los modelos ocultos de Markov (HMM).......................................... 24
e) Síntesis por concatenación ............................................................................................. 24
4) Algoritmos de la familia PSOLA ....................................................................................... 27
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 4
a) TD-PSOLA (Time Domain Pitch Synchronous Overlap-Add)27b) FD-PSOLA
(Frequency Domain Pitch Synchronous Overlap-Add) ..................................................... 28
c) MBR-PSOLA (Multi-Band Re-synthesis Pitch Synchronous Overlap-Add) ................ 30
B. Matlab .................................................................................................................................... 31
C. Evaluación de un convertidor de texto a voz ......................................................................... 32
VII. METODOLOGÍA ................................................................................................................... 33
A. Creación del corpus de voz ................................................................................................... 33
B. Desarrollo del módulo de procesamiento de lenguaje ........................................................... 34
1) Tokenizador ........................................................................................................................ 34
2) Normalizador ...................................................................................................................... 35
3) Divisor de sílabas ................................................................................................................ 35
4) Pausador .............................................................................................................................. 36
5) Convertidor de fonemas ...................................................................................................... 36
6) Agrupador de fonemas ........................................................................................................ 37
C. Desarrollo del módulo de síntesis .......................................................................................... 38
1) TD-PSOLA ......................................................................................................................... 38
2) FD-PSOLA ......................................................................................................................... 39
3) MBR-PSOLA ..................................................................................................................... 40
4) Concatenación de difonemas .............................................................................................. 40
D. Diseño e implementación de la prueba subjetiva .................................................................. 41
1) Preparación del espacio de la prueba .................................................................................. 42
2) Inicio de la prueba .............................................................................................................. 43
3) Desarrollo de la prueba ....................................................................................................... 43
4) Fin de la prueba .................................................................................................................. 43
VIII. RESULTADOS ..................................................................................................................... 45
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 5
A. Implementación de los algoritmos TD-PSOLA y FD-PSOLA.45B. Prueba subjetiva
.................................................................................................................................................... 56
IX. ANÁLISIS DE RESULTADOS .............................................................................................. 61
A. Implementación de los algoritmos TD-PSOLA y FD-PSOLA. ............................................ 61
B. Tiempo de ejecución .............................................................................................................. 63
C. Prueba subjetiva ..................................................................................................................... 63
1) Dificultades de comprensión .............................................................................................. 63
2) Esfuerzo de escucha ............................................................................................................ 63
3) Nitidez ................................................................................................................................ 64
4) Aceptación .......................................................................................................................... 64
4) Sección escrita .................................................................................................................... 65
X. CONCLUSIONES ..................................................................................................................... 66
REFERENCIAS ............................................................................................................................. 68
ANEXOS ........................................................................................................................................ 71
LISTA DE TABLAS
Tabla I. Difonemas de la palabra “baile” ....................................................................................... 49
Tabla II. Difonemas de la palabra "espectro" ................................................................................. 50
Tabla III. Difonemas de la palabra "diccionario"........................................................................... 50
Tabla IV. Tiempo de ejecución de cada algoritmo ........................................................................ 56
LISTA DE FIGURAS
Fig. 1. Mapa del conocimiento ....................................................................................................... 19
Fig. 2. Estructura convertidor texto a voz ...................................................................................... 21
Fig. 3. Análisis PSOLA. ................................................................................................................. 26
Fig. 4. Diagrama de Bloques del método PSOLA y sus dos variantes TD-PSOLA y FD-PSOLA.
........................................................................................................................................................ 27
Fig. 5. Funcionamiento del pitch shift con el TD-PSOLA ............................................................ 28
Fig. 6. Diagrama de flujo Filter Bank Approach ............................................................................ 30
Fig. 7. Diagrama de modelo MBE ................................................................................................. 31
Fig. 8. Funcionamiento del Tokenizador. ...................................................................................... 34
Fig. 9. Funcionamiento del normalizador. ..................................................................................... 35
Fig. 10. Funcionamiento del divisor de sílabas. ............................................................................. 36
Fig. 11. Funcionamiento convertidor de fonemas. ......................................................................... 37
Fig. 12. Funcionamiento del agrupador de fonemas. ..................................................................... 37
Fig. 13. Funcionamiento del módulo de síntesis. ........................................................................... 38
Fig. 14. Comparación de espectros de la palabra “baile”. a) Señal original. b) Método TD-PSOLA.
c) Método FD-PSOLA ................................................................................................................... 46
Fig. 15. Comparación de espectros de la palabra “espectro”. a) Método TD-PSOLA. b) Método
FD-PSOLA ..................................................................................................................................... 47
Fig. 16. Comparación de espectros de la palabra “diccionario”. a) Método TD-PSOLA. b) Método
FD-PSOLA ..................................................................................................................................... 48
Fig. 17. Espectrograma de la señal sintetizada con el TD-PSOLA. ............................................... 52
Fig. 18. Espectrograma de la señal sintetizada con el FD-PSOLA ................................................ 53
Fig. 19. Comparación formas de onda. a) Señal original. b) Método TD-PSOLA. c) Método FD-
PSOLA ........................................................................................................................................... 54
Fig. 20. a) Difonema original b) Difonema extraído del corpus .................................................... 55
Fig. 21. Resultados prueba escrita para ambos métodos ................................................................ 57
Fig. 22. Resultados pregunta 1. Dificultades de comprensión ....................................................... 57
Fig. 23. Resultados pregunta 2. Esfuerzo de escucha .................................................................... 58
Fig. 24. Resultados respuesta 3. Nitidez ........................................................................................ 59
Fig. 25. Respuestas pregunta 4. Aceptación................................................................................... 59
Fig. 26. Diagramas de cajas y bigotes. a) Dificultades de comprensión. b) Esfuerzo de escucha. c)
Nitidez. ........................................................................................................................................... 60
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 9
RESUMEN
En este trabajo se desarrolla un prototipo de convertidor texto a voz por medio del lenguaje de
programación MATLAB utilizando la síntesis por concatenación, para esto se realizan 4 etapas
importantes, las cuales son: definición de la unidad acústica, creación del corpus de voz para el
idioma español, creación del módulo de procesamiento de lenguaje natural, el cual se encargará de
todo el análisis del texto de entrada y por último la creación del módulo de procesamiento de señal,
donde se lleva a cabo todo el proceso de síntesis para obtener el audio final. En la etapa de
procesamiento de señal se agregará un módulo de síntesis que implemente los métodos FD-PSOLA
y MBR-PSOLA para mejorar la etapa de coarticulación. Teniendo ya hecho el convertidor texto a
voz se procede a realizar pruebas comparativas tanto subjetivas como subjetivas para evaluar la
calidad vocal de este sintetizador dependiendo del método utilizado.
Palabras clave: convertidor texto a voz, síntesis del habla, coarticulación, difonemas, naturalidad,
PSOLA, FD-PSOLA.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 10
ABSTRACT
In this work, a prototype of text to speech converter is developed through the MATLAB
programming language, which uses synthesis for concatenation. For this, four important stages are
performed: first, the definition of the acoustic, which depends on the type of concatenated synthesis
that is to be performed, second, the creation of the voice corpus for the Spanish language, third, the
creation of the natural language processing module, which performs the analysis of all input text
and finally the creation of the signal processing module, where the whole process of synthesis is
carried out to obtain the final audio. In the signal processing step, a module of synthesis is added,
which implement the FD-PSOLA and MBR-PSOLA methods, to improve the co-articulation step.
Having already done the converter from text to speech we proceed to perform comparative tests,
both subjective and objective, which will allow to evaluate the vocal quality of this synthesizer
depending on the method used.
Keywords: Text-to-speech converter, speech synthesis, co-articulation, diphoneme, naturalness,
PSOLA, FD-PSOLA.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 11
I. INTRODUCCIÓN
Al explicarse de manera general la síntesis del habla consiste en un “proceso de creación de habla
de manera artificial” [1, p. 7]. La síntesis del habla ha surgido por la necesidad de mejorar la
comunicación hombre-máquina, sin embargo, aunque actualmente se han desarrollado varios
métodos, como lo son la síntesis articulatoria, por formantes o por concatenación, para poder llevar
a cabo este proceso, todavía es necesario mejorar varios parámetros que contribuyen a proporcionar
la naturalidad de una voz sintetizada, como la coarticulación y el módulo de prosodia que
contribuyen directamente a esta naturalidad. Al desarrollar un convertidor texto-voz es de vital
importancia tratar de mejorar las áreas de análisis lingüístico, generación de prosodia y el modelo
de sintetizador de voz que se va a utilizar, el avance en estas tres áreas permitirá generar una voz
sintetizada de mayor calidad [2].
Actualmente existen varios modelos de síntesis de voz, pero esta investigación se centrará en la
síntesis por concatenación que consiste “en el almacenamiento de segmentos de voz que
posteriormente son concatenados para producir frases de cualquier longitud” [3, p. 217]. Este
modelo ha sido desarrollado para reducir la complejidad que presentan los otros modelos, sin
embargo, sigue presentando problemas con la naturalidad de la voz. Esta pérdida de calidad se
genera cuando se concatenan segmentos de voz que no iban juntos en la grabación original, esto es
conocido como coarticulación, dicho fenómeno genera discontinuidades que resultan en la pérdida
de naturalidad [1]. Debido a lo anterior se han desarrollado varias técnicas con el propósito de
buscarle solución a las problemáticas que actualmente se presentan en la síntesis de voz [4], entre
estas se encuentra la familia de algoritmos PSOLA (Pitch Synchronous Overlap-Add) como lo son:
FD-PSOLA (Frequency Domain Pitch Synchronous Overlap-Add) y MBR-PSOLA (Multiband
Re-synthesis Pitch Synchronous Overlap-Add), que intentan minimizar las discontinuidades en los
puntos de concatenación.
Este trabajo presenta el desarrollo de un convertidor texto-voz en español iniciando con la
extracción de difonemas para la creación del corpus de voz (base de datos) a partir de grabaciones
realizadas para la elaboración del convertidor texto a voz llamado “SEVEN“ en la universidad de
los Andes (Venezuela) [5], después se desarrolla el módulo de procesamiento de lenguaje natural
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 12
y por último el módulo de procesamiento de la señal, en el cual se implementarán dos métodos del
algoritmo PSOLA los cuales se compararán realizando pruebas subjetivas de naturalidad e
inteligibilidad para evidenciar cuál de los dos permite una mejor calidad.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 13
II. PLANTEAMIENTO DEL PROBLEMA
A. Preguntas de investigación
¿Cuál es la unidad acústica más adecuada para generar un corpus en un convertidor de texto
a voz basado en los algoritmos de la familia PSOLA?
¿Cómo generar de forma eficiente el corpus de un convertidor texto a voz?
¿Cómo es la estructura básica de un convertidor texto a voz?
¿Cómo se evalúan los parámetros de naturalidad, fluidez e inteligibilidad de un convertidor
texto a voz?
¿Cómo influye en los parámetros de naturalidad, fluidez e inteligibilidad la aplicación de
los algoritmos MBR-PSOLA y FD-PSOLA en el módulo de síntesis del convertidor texto
a voz?
B. Antecedentes
La síntesis del habla se centra en utilizar los diferentes métodos que existen, como lo son la síntesis
por articulación, por formantes o por concatenación para poder recrear de manera artificial una voz
humana. A medida que han avanzado la investigación y el desarrollo de estos métodos, comenzaron
a surgir las tecnologías del habla.
Las tecnologías del habla incluyen todas las tecnologías cuyo elemento principal es el habla. Los
dos ejemplos de tecnologías más habituales son el reconocimiento automático del habla, que
consiste en transcribir el contenido de una señal de voz sin intervención humana, y la síntesis del
habla, que se puede definir como todo el proceso de creación de habla de manera artificial [6]
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 14
De acuerdo a Martí “Los grandes progresos en el tratamiento del habla, tanto en el análisis como
en la síntesis, se han realizado a partir del momento en que se ha podido tratar la señal debidamente
digitalizada con métodos numéricos y con la ayuda del ordenador” [7, p. 150].
En la Escuela de Telecomunicación La Salle Bonanova, Martí y Niñerola del departamento de
acústica, desarrollaron un conversor texto a voz en castellano, el cual nombraron SINCAS,
consistía en llegar al sonido de voz sintetizado encadenando difonemas directos o inversos, a partir
de un texto ortográfico que era ingresado por teclado. El módulo de síntesis era realizado por el
circuito integrado MEA 8000 de Philips, el cual era un sistema de síntesis de voz por formantes
que podía ser controlado por un computador. Se concluyó que en algunos casos el proceso de
inversión temporal de los difonemas inversos podía generar pérdida en la calidad de la voz, el
sintetizador utilizado tenía sus propias limitaciones, por lo cual también se afectaba la calidad de
la voz y no se permitía superar la calidad de una voz telefónica [8].
En la Universidad Politécnica de Valencia se desarrolló un convertidor texto a voz para el
castellano utilizando la síntesis por concatenación, la innovación que se le introdujo a este
conversor fue utilizar el método PSOLA para controlar la duración y el tono de las unidades
fonéticas que eran reproducidas, este algoritmo permite modificar de manera simple la
representación temporal de la frecuencia fundamental, lo que contribuye a mejorar el módulo de
prosodia del TTS. El resultado obtenido fue considerado notablemente bueno, se realizaron unas
pruebas que consistían en lecturas aleatorias de textos extraídos de libros, en dichas pruebas se
obtuvo un elevado grado de comprensión, sin embargo, la mayoría de los oyentes señaló que la voz
se escuchaba claramente artificial, lo cual es debido al problema de la coarticulación [3].
En Colombia en la Universidad de Santander se llevó a cabo el desarrollo de un TTS para el español
de Colombia, dicho desarrollo se llevó a cabo en varias etapas: primero se creó el corpus de voz de
difonemas, luego se pasó al proceso de etiquetación y extracción, donde se delimitan las fronteras
de las unidades fonéticas, después se desarrolló todo el módulo de síntesis y por último se
realizaron pruebas para evaluar la calidad de la voz. Con los resultados de las pruebas se pudo
concluir que las señales de audio obtenidas por el TTS eran similares a las de un hablante natural,
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 15
pero existen secciones en la cuales todavía se ven fallas debido a la coarticulación entre palabras,
lo cual afecta la naturalidad de la voz obtenida [9].
En la actualidad los convertidores de texto a voz están relacionados con sistemas de diálogos como
atención telefónica, donde se incluyen los servicios de información, sistemas de notificaciones etc.
También está relacionado a las aplicaciones de mando y de control como sistemas domóticos e
interacción vocal con máquinas. Otro campo donde se aplican los TTS es la ayuda a personas con
necesidades especiales, donde se encuentran los lectores de pantallas que han permitido que las
personas con dificultades visuales puedan acceder al mundo de la informática e internet, y para las
personas con dificultades para hablar se crearon dispositivos de construcción rápida de frases que
les permite sintetizar lo que quieren decir. Por último, uno de los campos en el que también se
utilizan los TTS es el aprendizaje de idiomas, debido a que se puede sintetizar cualquier palabra o
frase para saber cómo se pronuncia o cuál es su entonación [1] .
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 16
III. JUSTIFICACIÓN
Cómo se menciona en el estado de arte “las tecnologías del habla incluyen todas las tecnologías
cuyo elemento principal es el habla” [6, p. 7]. En la actualidad la tecnología avanza a pasos
agigantados y para permitir que las tecnologías del habla continúen su avance es necesario
encontrar solución a sus problemas actuales, entre los cuales se encuentra con mayor prioridad la
pérdida de naturalidad.
Este trabajo se centrará específicamente en los convertidores texto a voz, debido a que tienen
múltiples utilidades, entre las cuales destacan, la ayuda para personas con necesidades especiales.
Un ejemplo de esto son los lectores de pantalla que permiten el acceso al mundo de la informática
a las personas con dificultades visuales y los dispositivos con teclados predictivos que permiten
que las personas con dificultades en la producción del habla puedan expresar lo que quieren decir
[1].
Como en la actualidad se han desarrollado varios métodos para mejorar la síntesis del habla,
específicamente hablando de la familia de algoritmos PSOLA, se considera necesario evaluar la
inteligibilidad y naturalidad que brinde cada uno de estos para tener conocimiento de la calidad de
la voz del TTS.
Hasta el momento en la universidad San Buenaventura Medellín no se ha desarrollado ningún tema
que aborde la síntesis del habla, por tal razón este proyecto de grado podría ser el comienzo de la
inclusión de esta temática, y el desarrollo de un convertidor texto a voz podría servir como base
para generaciones futuras que quieran seguir esta línea de investigación y que quieran abordar de
una forma más profunda las tecnologías del habla.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 17
IV. OBJETIVOS
A. Objetivo general
Desarrollar un prototipo de convertidor texto a voz por medio del lenguaje de programación
MATLAB implementando los algoritmos MBR-PSOLA y FD-PSOLA para realizar un análisis
comparativo entre estos dos métodos.
B. Objetivos específicos
Crear el corpus de voz utilizando difonemas a partir de las grabaciones realizadas para el
convertidor texto a voz “SEVEN”, para después ser utilizadas en el módulo de síntesis por
concatenación.
Desarrollar el módulo de procesamiento de lenguaje para poder realizar todo el análisis del
texto de entrada y entregar la lista de difonemas que se necesitan como entrada para el módulo
de síntesis.
Desarrollar el módulo de síntesis concatenativa implementando los algoritmos MBR-PSOLA
y FD-PSOLA.
Comparar los algoritmos MBR-PSOLA y FD-PSOLA por medio de una prueba subjetiva que
evalúa la calidad vocal del TTS (Text-To-Speech).
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 18
V. PROBLEMA DE INVESTIGACIÓN
Inicialmente la síntesis de voz era generada por diferentes modelos, como la síntesis articulatoria
que imitaba el tracto vocal del ser humano para producir la voz, y la síntesis por formantes que
imitaba las características acústicas de una señal. Actualmente, la mayoría de los convertidores de
texto a voz o text-to-speech conversion system (TTS) están compuestos por una etapa de síntesis
por concatenación, debido que genera una mejor calidad de voz y es más simple respecto a los
otros 2 tipos de síntesis mencionados [1].
“La síntesis por concatenación consiste en poner, uno detrás de otro, trozos cortos de grabaciones
de un mismo locutor para reproducir la transcripción fonética con las características prosódicas
requeridas” [1, p. 14]. Para el desarrollo de un TTS es necesario tener en cuenta dos módulos, los
cuales son: el módulo de procesamiento de lenguaje natural y el módulo de procesamiento de la
señal. El primero está conformado por un analizador morfosintáctico, que es el encargado de
procesar el texto, un transcriptor fonético, que expande el texto en una secuencia de fonemas y un
generador prosódico, que se encarga de generar los patrones melódicos y de ritmo de la voz. El
segundo módulo es el encargado de transformar la información proporcionada por el módulo de
procesamiento de lenguaje natural en habla, es allí donde se aplica la síntesis por concatenación
[1].
El primer paso para poder comenzar a desarrollar los módulos descritos anteriormente, es escoger
la unidad acústica con la cual se va a trabajar, de acuerdo con [10] las unidades pequeñas ofrecen
una flexibilidad mayor, puesto que a partir de ellas se pueden formar unidades mayores, por tal
razón en este proyecto se utilizarán difonemas, los cuales son “una unidad que empieza en medio
de la zona estable de un fonema y acaba en medio de la zona estable del fonema siguiente” [6, p.
16]. En este punto es donde se encuentra uno de los principales problemas de la pérdida de
naturalidad, el cual es la coarticulación, de acuerdo a [6], este fenómeno provoca que se generen
discontinuidades en los puntos de concatenación, debido que se juntan dos segmentos de voz que
no eran adyacentes en la grabación original.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 19
A lo largo del tiempo que se ha tratado el tema de la síntesis del habla han surgido varios métodos
de procesamiento digital de señal, uno de los primeros fue el PSOLA que sirve para controlar el
tono y la duración de las unidades fonéticas en el momento que se emiten [3, p. 217]. A partir de
este algoritmo se han creado variaciones como es el caso del TD-PSOLA (Time Domain Pitch
Synchronous Overlap-and-add) con la finalidad de aplicarlo como técnica de suavización al
momento de realizar la concatenación de los difonemas.
En el desarrollo del TTS de este proyecto se pretende crear un módulo en el cual se implementarán
las técnicas FD-PSOLA y MBR-PSOLA, donde el usuario tendrá la posibilidad de escoger el
algoritmo con el cual desee realizar la síntesis de voz, esto con el objetivo de evaluar
subjetivamente cuál de estos algoritmos brinda una mayor calidad en el proceso de síntesis.
Fig. 1. Mapa del conocimiento
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 20
VI. MARCO TEÓRICO
La síntesis del sonido consiste en generar sonidos “a partir de la combinación de elementos simples
(normalmente señales periódicas y funciones matemáticas)” [11, párr. 3], al avanzar el tiempo han
surgido varios métodos para generar síntesis digital del sonido, como: síntesis aditiva, basada en el
teorema de Fourier, el cual plantea que por muy complejo que sea un sonido periódico, éste es el
resultado de la suma de ondas sinusoidales simples que corresponden a los armónicos de sus
frecuencias bases; síntesis por modulación de frecuencia, esté método fue patentado en 1973 por
John Chowning, consiste en tener dos osciladores, el primero contiene la señal portadora y el
segundo la moduladora, cuando la señal portadora tiene una frecuencia dentro del rango audible,
se crean una cantidad de frecuencias adicionales, las cuales generan un sonido con mucho
contenido armónico; el sampler, que consiste en almacenar en una memoria sonidos digitalizados,
a los cuales se les puede modificar ciertas propiedades como la envolvente, el pitch y también
permite aplicar filtros, etc. [11].
A. Convertidor de texto a voz
El objetivo de este sistema es convertir cualquier entrada de texto en la respectiva representación
acústica del habla, asemejándose a lo que sería una lectura en voz alta de una persona. Se busca
lograr el mayor realismo en la voz sintetizada mejorando parámetros como inteligibilidad, la
fluidez, naturalidad, haciendo que estos sistemas varíen internamente por ejemplo con el tipo de
síntesis usado, lenguajes de programación, cantidad de procesamiento y reglas gramaticales, sin
embargo siguen un proceso como se puede observar en la figura 2 que generalmente consta de tres
bloques: el análisis lingüístico, el bloque generador de prosodia y el último donde se lleva a cabo
la síntesis de voz [4].
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 21
Fig. 2. Estructura convertidor texto a voz
1) Análisis lingüístico
En este bloque se puede ser muy específicos, implementando análisis que van desde la
pronunciación, pasando por la estructura gramatical, el estudio de las expresiones y el análisis del
tipo de discurso que se desea generar. Para poder lograr lo anterior se implementan los siguientes
módulos:
a) Analizador morfosintáctico
Aquí se lleva a cabo el proceso de identificación y normalización de la cadena de caracteres
(palabras o frases) para asignarles su respectiva transcripción ortográfica. Básicamente este
analizador contiene los siguientes procesos:
El primer paso es el Tokenizador, es el proceso en el cual la cadena de caracteres ingresada por el
usuario es segmentada, pasa de ser una frase a convertirse en palabras aisladas llamadas “Tokens”,
la separación se realiza basada en los espacios en blanco (fonema silencio) que existen entre ellos
[9, p. 21].
El proceso de normalización detecta los problemas de escritura y el uso de abreviaturas,
secuencias numéricas, correos electrónicos, direcciones, fechas, horas, símbolos, signos, entre
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 22
otros, para corregirlos y convertirlos en palabras que puedan ser procesadas mediante el transcriptor
fonético.
b) Transcriptor fonético
Este proceso consiste en dividir las palabras en fonemas que se basan en reglas propias de un
idioma, provenientes de diccionarios que incluyen alfabetos fonéticos, un fonema es una unidad
lingüística básica que sirve para analizar las palabras y descomponerlas en representaciones
simbólicas abstractas que se relacionan con el sonido que se produce pero que solamente brindan
información sobre características de éste. Los fonemas no tienen significado exacto ya que cuando
son enlazados o articulados, dependiendo de la lengua y de la ubicación en la palabra, estos pueden
tomar representaciones acústicas diferentes (alófonos). Los fonemas se reconocen porque siempre
están dentro de barras inclinadas, por ejemplo /rr/ o /s/.
Sin embargo, cuando se habla desde la parte acústica donde el fonema tiene ya definido un sonido
representativo, se define como “unidad sonora más pequeña con entidad propia. Acústicamente se
puede dividir en tres zonas: el comienzo, el medio y el final. En el centro, las características
acústicas son estables, mientras que el comienzo y el final son zonas de transición.” [6, p. 14].
En el idioma español se clasifican en fonemas consonánticos y vocálicos, los primeros parten de
aquellos sonidos en los cuales existe una barrera contra el aire que sale al exterior y por el contrario,
en los vocálicos esta barrera no está presente.
Consonánticos: /b/, /ch/, /d/, /f/, /g/, /j/, /k/, /l/, /m/, /n/, /ñ/, /p/, /r/, /rr/, /s/, /t/, /y/
Vocálicas: /a/, /e/, /i/, /o/, /u/
2) Generador prosódico
En el bloque generador de prosodia se analizan los rasgos o características sonoras que se quieren
lograr con el texto de entrada, el análisis se divide en segmentos de palabras y conexiones entre
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 23
ellas, haciendo ajustes en la entonación mediante el tratamiento de la frecuencia fundamental de
cada parte y generando un ritmo congruente definido por la duración que deben tener tanto los
sonidos como las pausas. Las reglas gramaticales del idioma que se trabaje son elementales para
definir estas características prosódicas, a partir de los signos de puntuación, la acentuación de cada
palabra y el tipo de frase a generar (enunciativa, exclamativa e interrogativa) [12].
3) Bloque de síntesis
Se encarga de generar las representaciones acústicas que se vienen estableciendo en los bloques
anteriores, para esto existen diferentes métodos que intentan producir una voz sintetizada lo más
parecida posible a una real para que sea inteligible y natural. Algunos de estos son:
a) Síntesis por formantes
Se realiza por medio de un sistema de fuentes y filtros que modelan la voz humana, se realiza una
suma de frecuencias fundamentales con niveles de ruido variantes en el tiempo y que pasan a través
de filtros logrando un sonido generalmente robótico. La naturalidad no es grande en este tipo de
síntesis, pero tiene ventajas a nivel de inteligibilidad por el control que se tienen de las variables,
logrando producir fácilmente variaciones en el tipo de voz. Además, se usan pocos recursos
computacionalmente ya que no requiere tener almacenado un corpus como en la síntesis
concatenativa [13].
b) Síntesis articulatoria
Esta síntesis tiene como objetivo simular el tracto vocal por medio de modelamiento matemático,
en esto se incluye la participación determinante del tracto nasal para la creación natural de la voz,
debido al control de tantos parámetros y articulaciones que se deben tener en cuenta, el costo
computacional de este tipo de síntesis es alto [14].
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 24
c) Síntesis derivada de las técnicas de predicción lineal (LPC)
“Se basan en la posibilidad de modelar el tracto vocal como una serie de cilindros huecos de
diámetro variable” [13, p. 9] en estos cilindros se producen ondas sonoras que viajan uno tras otro
hasta formar una voz coherente. La codificación de esta síntesis es compleja, pero tienen resultados
de buena calidad.
d) Síntesis basada en los modelos ocultos de Markov (HMM)
Se realiza un proceso estadístico donde se pretende encontrar los parámetros desconocidos del
sistema, empleando los que se conocen y observan, reconociendo patrones:
En este sistema, el habla, espectro de frecuencias (tracto vocal), frecuencia fundamental
(fuente vocal), y la duración (prosodia) se modelan simultáneamente por modelos ocultos
de Markov. Las formas de onda se generan desde estos modelos mediante el criterio de
máxima verosimilitud [14, p. 27].
e) Síntesis por concatenación
Este tipo de síntesis se basa en concatenar segmentos de voz grabados uno detrás del otro, este
método permite obtener una voz más natural, sin embargo, no se siente del todo real debido que se
presenta un fenómeno llamado coarticulación, el cual se refiere a la “adaptación del comienzo de
un sonido a los sonidos adyacentes para que la voz suene fluida” [1, p. 14], esto provoca que cuando
se concatenen segmentos de grabación que no eran adyacentes en la grabación original se
produzcan discontinuidades, éstas pueden ser: discontinuidades espectrales donde los formantes de
las unidades no coinciden en el punto de concatenación o discontinuidades prosódicas que se
generan cuando la frecuencia fundamental o el volumen de cada unidad no coinciden en el punto
de concatenación.
A continuación, se explican 3 tipos de síntesis por concatenación:
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 25
Síntesis por selección de unidades: se utiliza un corpus de voz grabado, en el cual el habla se
puede segmentar en fonemas, sílabas, palabras, frases y oraciones.
Síntesis de difonos: utiliza un corpus que tiene una base de datos que está compuesta por
difonemas, “un difonema es la unidad acústica que empieza en medio de una zona estable de
un fonema y acaba en medio de la zona estable del fonema siguiente” [6, p. 17] la cantidad de
difonemas depende del lenguaje que se quiera utilizar para el TTS.
Síntesis específica para un dominio: se utilizan frases y palabras grabadas para generar
mensajes completos por medio de la concatenación, se utiliza en aplicaciones donde los textos
que el sistema necesita reproducir están limitados a un dominio en particular, como sucede con
los relojes y calculadoras que hablan, anuncios de los trenes, información meteorológica, etc.
[14]
Debido a los problemas que se presentan por la coarticulación en la síntesis por concatenación se
desarrolló el método PSOLA (Pitch Synchronous Overlap-Add), el cual se basa en descomponer
una señal en una serie de formas de onda elementales de tal manera, que cada forma de onda
representa uno de los periodos sucesivos de pitch de la señal y la suma de ellas (Overlap-Add)
genera la señal reconstruida [15].
El funcionamiento de este método se basa en 3 etapas fundamentales: la primera es un análisis de
la forma de onda original de la señal de entrada para producir una representación intermedia no-
paramétrica de dicha señal, en esta etapa se obtienen las señales ST (Short Term) por medio de la
descomposición de la señal 𝑠(𝑛) en una serie de formas de onda elementales 𝑠𝑚(𝑛), las cuales se
obtienen aplicando una ventana de análisis ℎ𝑚(𝑛) como se muestra en la ecuación (1).
𝑠𝑚(𝑛) = ℎ𝑚(𝑡𝑚 − 𝑛)𝑠(𝑛) (1)
La ventana de análisis ℎ𝑚(𝑛) es de tipo Hanning y se encuentra centrada en los instantes de tiempo
𝑡𝑚 llamados marcas de pitch, las cuales indican en que instante de tiempo comienza un periodo de
la señal. La ventana debe ser lo suficientemente corta para que las características de la señal de la
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 26
voz no cambien drásticamente durante la duración de la ventana y lo suficientemente larga para
contener dos periodos de la señal [16, p. 27]. En Fig. 3 se puede observar cómo cada ventana está
centrada en cada marca de pitch de la señal.
Fig. 3. Análisis PSOLA.
La segunda etapa consiste en la modificación de las ST, en esta fase se pueden aplicar 3
operaciones: modificación en el número de señales ST, modificación en el retardo entre las señales
ST y una modificación en la forma de onda de cada una de las ST, después de realizar alguna de
esas operaciones se procede a la etapa de síntesis donde se superponen y suman las señales ST de
síntesis dando como resultado la señal sintetizada 𝑠′(𝑛). [4, p. 19] [17]. El proceso de síntesis puede
ser representado por la siguiente ecuación:
𝑠′(𝑛) =∑ ∝𝑞 𝑠′
𝑞(𝑛)ℎ′𝑞(𝑡′
𝑞 − 𝑛)𝑞
∑ ℎ′𝑞2
𝑞 (𝑡′𝑞 − 𝑛)
(2)
Donde 𝑠′𝑞(𝑛) es la ST de síntesis, es decir, la ST de análisis modificada, 𝑡′𝑞 es el conjunto de las
nuevas marcas de pitch, ℎ′𝑞 representa las ventanas de síntesis y ∝𝑞 un factor de compresión debido
a las variaciones de energía producidas.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 27
4) Algoritmos de la familia PSOLA
De acuerdo a como se manipulen las ST en la segunda etapa del PSOLA, surgen unas variantes
como lo son TD-PSOLA Y FD-PSOLA.
Fig. 4. Diagrama de Bloques del método PSOLA y sus dos variantes TD-PSOLA y FD-PSOLA.
Fuente: imagen adaptada del artículo de revista “Diphone Concatenation using a Harmonic plus Noise Model
of Speech”.
a) TD-PSOLA (Time Domain Pitch Synchronous Overlap-Add)
Es uno de los métodos de concatenación más populares, proporciona en general una síntesis del
habla de buena calidad y con buena naturalidad, de acuerdo a Bullón esta variante del PSOLA
requiere menor esfuerzo computacional y su objetivo es variar el grado de solapamiento de las
señales ST de síntesis para modificar la frecuencia fundamental de la onda resultante sin cambiar
su envolvente espectral [3]. Sin embrago su problema principal es la falta de coincidencia espectral
entre los segmentos que se van a concatenar debido a que trabaja en el dominio del tiempo [18].
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 28
La etapa de análisis de esta variante es la misma que la explicada en el método PSOLA, después
de obtener las ST se procede a modificarlas de acuerdo al resultado que se quiere obtener: se
duplican o eliminan segmentos del ventaneo para modificar la duración de la señal o si lo que se
desea es modificar el pitch, se incrementa o disminuye el solapamiento entre las ST al momento
de reconstruir la señal, en la Fig. 5 se ilustra el funcionamiento de la modificación de pitch con el
TD-PSOLA.
Fig. 5. Funcionamiento del pitch shift con el TD-PSOLA
Cuando se quiere modificar el pitch, la distancia 𝑆𝑎 debe ser multiplicada por un factor ∝, el cual
determina si la frecuencia aumenta o disminuye, el resultado de esta operación es una nueva
distancia 𝑆𝑠 con la cual se realizará el proceso de síntesis utilizando solapamiento y suma de las
señales 𝑠′𝑞(𝑛) para obtener la señal final 𝑠′(𝑛).
b) FD-PSOLA (Frequency Domain Pitch Synchronous Overlap-Add)
Esta variante aplica en cada ST de análisis modificaciones espectrales en el dominio de la
frecuencia y después pasa al módulo de síntesis utilizado en el PSOLA. Primero se realiza una
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 29
etapa de análisis en el dominio de la frecuencia, luego se procede a hacer modificaciones y por
último se vuelve a obtener la ST de síntesis aplicando la Transformada Inversa de Fourier. Este
método requiere una memoria grande, alto costo computacional y la complejidad de los cálculos
es elevada para implementarla en un sistema sencillo [4].
Para realizar modificaciones en el dominio de la frecuencia existen técnicas basadas en la
compresión-expansión del espectro y en la eliminación-repetición de algunas partes de este. Un
método comúnmente usado es el Phase Vocoder.
En un principio el Voice Coder (vocoder) fue diseñado para reducir el ancho de banda necesario
para transmitir satisfactoriamente la voz por líneas telefónicas. La idea fue pasar la señal de voz a
través de un conjunto de filtros pasa-banda, permitiendo que la salida combinada de esos filtros en
un punto dado en el tiempo sería una aproximación del espectro de la entrada. En teoría, mediante
la transmisión de unos pocos coeficientes de filtro, se podría lograr un ahorro en términos del ancho
de banda de transmisión requerido para transmitir una señal dada. En la práctica, se necesitaban
demasiados canales para preservar la calidad vocal y había un problema adicional, solamente la
amplitud o magnitud de la señal de cada filtro de salida estaba siendo transmitida [19].
El algoritmo Phase Vocoder nace desde la necesidad de mejorar el Vocoder para que no perdiera
la información de fase y así se lograra reconstruir una señal idéntica a la de entrada. Este algoritmo
tiene muchas aplicaciones, por ejemplo, la dispersión, Time Stretching, Pitch Shift, robotización,
Whisperization, Denoising.
La aplicación específica para el convertidor de texto a voz es el pitch Shift, este consiste en realizar
una multiplicación de cada una de las frecuencias por un factor de escalamiento, para luego
reconstruir la señal modificada. Existe un método básico para realizarlo llamado Filter Bank
Approach, el cual realiza una suma de señales sinusoidales creadas a partir de los valores de
magnitud y diferencias de fase entre los fragmentos que componen la señal original, así como se
observa en la Fig. 6.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 30
Fig. 6. Diagrama de flujo Filter Bank Approach
c) MBR-PSOLA (Multi-Band Re-synthesis Pitch Synchronous Overlap-Add)
Esta variante surge con la idea de solucionar los problemas de coarticulación presentados por el
TD-PSOLA, Su funcionamiento consiste en “analizar y re-sintetizar todos los segmentos sonoros
de la base de datos siguiendo el modelo Multi-Band Excited (MBE)” [2, p. 111], esto permite fijar
la misma frecuencia fundamental, hacer una corrección en la fase y reducir la discontinuidad de la
envolvente espectral.
El algoritmo MBR-PSOLA consta de dos niveles: el primero se encarga de volver a sintetizar la
base de datos entregada por la técnica TD-PSOLA siguiendo el modelo MBE y el segundo se
encarga de realizar “una interpolación lineal de tramas en el dominio temporal durante la fase de
síntesis” [4, p. 29]. En la figura 4 se muestra el proceso de re-síntesis con el modelo MBE.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 31
Fig. 7. Diagrama de modelo MBE
Tomada de: libro “An introduction to the phase vocoder”.
B. Matlab
Es un software matemático que se ha convertido en base para proyectos ingenieriles ya que cuenta
con herramientas que se integran de manera óptima y permite la extracción de información a partir
de gráficos, además incluye un entorno de desarrollo integrado el cual facilita las configuraciones
básicas previniendo errores y ayudando al flujo de trabajo. Matlab tiene un lenguaje de
programación propio del alto nivel basado en el uso de matrices lo cual mejora la naturalidad y
entendimiento a la hora de programar, además incorpora una librería llamada toolboxes con
algoritmos esenciales. Una importante característica de este software es la facilidad de integrarse
con otros lenguajes [20].
Matlab es usado para diversos proyectos que van desde el procesamiento digital de señales,
pasando por robótica y aprendizaje autónomo, hasta procesos de finanzas. Éste no es un software
libre, cuenta con diferentes licencias dependiendo del uso que se requiera.
Las funciones en Matlab son programas que trabajan dentro del mismo entorno de programación,
cuentan con variables de entrada que son necesarias para realizar tareas específicas y al final
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 32
devuelve los resultados de estas en las variables de salida. Son muy útiles para sintetizar y agrupar
códigos que son usados constantemente. Matlab da la posibilidad de crear funciones propias que
pueden ser usadas en todo el espacio de trabajo.
C. Evaluación de un convertidor de texto a voz
Debido al avance que han tenido los convertidores texto a voz surgió la necesidad de tener
herramientas que permitan comparar los resultados de las diferentes formas de síntesis de voz y al
mismo tiempo estudiar de forma subjetiva la calidad de la voz sintetizada, normalmente
comparándola con la voz natural. Para esto se pueden plantear las siguientes cuestiones: “¿Con qué
grado de precisión se reconocen sonidos y palabras sintetizadas? ¿Con qué precisión se entiende el
sentido de una frase en habla sintetizada? ¿Qué dificultades plantea la percepción y la comprensión
del habla sintetizada? [21, p. 10]”
La inteligibilidad hace referencia a la capacidad de comprender de manera correcta un mensaje
generado por la voz, sea de forma natural o sintetizada. Esto se ha convertido en un problema
común y en un campo de estudio en la síntesis del habla, generalmente este factor es analizado
cuando se evalúa la eficacia de un TTS.
Los TTS buscan que, al realizar la reproducción del audio de salida, este sea lo más parecido a una
voz humana, haciendo que pueda transmitir estados de ánimo y que los tipos de oraciones sean
distinguibles, estas características corresponden a lo que se denomina naturalidad.
La unión Internacional de Telecomunicaciones diseñó la recomendación UIT – T P.85 para evaluar
subjetivamente la calidad de la voz de los dispositivos generadores de voz, entre los que se incluyen
los convertidores de texto a voz. En la recomendación se propone un método que permite comparar
varios sistemas entre sí, realizando pruebas con mensajes de forma oral que los participantes deben
evaluar expresando su opinión de acuerdo a escalas de calificación. En esta recomendación también
se proponen algunas formas de presentar los resultados y realizar análisis estadístico [22].
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 33
VII. METODOLOGÍA
A. Creación del corpus de voz
Para esta fase es necesario tener colaboración de un locutor profesional para realizar las
grabaciones, sin embargo, se decide utilizar un audio proporcionado por los creadores del
convertidor texto a voz “SEVEN”, dicho audio se puede descargar de la base de datos de la Revista
del Centro de Investigación y Atención Lingüística (CIAL) de la universidad de los Andes
(Venezuela) bajo la Licencia Creative Commons Atribución-No-Comercial-Compartir Igual 3.0
Venezuela y viene con un diccionario de difonemas en un archivo en Excel [23].
La grabación tiene una duración de 1 hora y 29 minutos y una frecuencia de muestreo de 44.100
Hz, anexo a la grabación se cuenta con un listado en el software Microsoft Excel, por filas se
encuentra desglosado cada uno de los difonemas y se menciona la frase portadora de este, como se
muestra en el Anexo 1.
El locutor graba una secuencia de frases portadoras de los difonemas que se requieren extraer, estas
palabras son pronunciadas dos veces para mejorar la naturalidad de la grabación y para tener una
muestra extra por si ocurre algún problema como ruido o mala dicción.
La extracción de los difonemas se realizó en el software Pro Tools 10, con la herramienta de
selección se estableció el inicio y fin de cada difonema siguiendo su definición y la recomendación
de cortar en un punto donde la amplitud de la onda sea cero para evitar clips. Cuando se tuvo
seleccionada la región deseada se copió a otro canal para tener mejor control sobre ella y luego en
formato WAV (Waveform Audio File Format) se exportó el difonema. El nombre de cada uno de
los difonemas se estableció con la misma numeración que se encontraba en el listado de Excel.
En total son 787 difonemas que conforman el corpus para el convertidor de texto a voz, en el mismo
listado se enuncia si el difonema presenta algún inconveniente que podría afectar de manera
significativa el correcto entendimiento y funcionamiento del convertidor, un ejemplo de esto es
que no se alcanza a pronunciar correctamente la letra “j” ni la letra “t” cuando van al final de una
palabra o prefijo.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 34
B. Desarrollo del módulo de procesamiento de lenguaje
El desarrollo de este módulo se basó en la estructura propuesta por unos estudiantes de la
Universidad Industrial de Santander [9], a continuación, se muestran los procesadores que se
desarrollaron en este módulo:
1) Tokenizador
Este procesador se encarga de recibir el texto de entrada y dividirlo en “Tokens”. Se denominan de
esta forma debido a que el texto de entrada puede contener cualquier tipo de caracteres (palabras,
siglas, cifras, fechas, abreviaciones y otros elementos especiales).
Como existe una gran cantidad de estas unidades especiales, en este proyecto solo se trabajó con
palabras, no se admitieron abreviaciones, ni otros elementos especiales, si se quiere introducir un
número debe ser escrito como palabra. La Fig. 8 muestra el funcionamiento del Tokenizador.
Fig. 8. Funcionamiento del Tokenizador.
Para programar este módulo se creó una función denominada “token” la cual tiene cómo entrada
una frase, ésta puede contener palabras, espacios, puntos y comas. La función toma la frase y
entrega como salida cada palabra y signo de puntuación de la frase por separado como se muestra
en el Anexo 2.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 35
2) Normalizador
Esta unidad se encarga de recibir los Tokens entregados por el Tokenizador y debe analizarlos para
así identificar las estructuras especiales que no corresponden a palabras (cifras y abreviaturas) y
expandirlas, dando como salida el texto de cómo se leerían dichas estructuras. En la Fig. 9 se muestra
su funcionamiento, sin embargo, en este proyecto no se incluyó este módulo.
Fig. 9. Funcionamiento del normalizador.
3) Divisor de sílabas
El objetivo de este procesador es dividir las palabras en sílabas para poder realizar la asignación de
fonemas de una forma más sencilla, además permite identificar la acentuación de cada palabra de
acuerdo a las reglas gramaticales de las palabras graves, agudas, esdrújulas y sobreesdrújulas.
También reconoce la acentuación asignada ortográficamente. La Fig. 10 permite visualizar su
funcionamiento.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 36
Fig. 10. Funcionamiento del divisor de sílabas.
Para el desarrollo de este módulo se creó una función llamada “divisor_silaba”, la cual tiene como
entrada cada palabra entregada por el Tokenizador. Para poder realizar una correcta separación de
sílabas para el idioma español se realizó una programación teniendo en cuenta las reglas
gramaticales consultadas en [24], que se mencionan en el Anexo 3.
Al tener programadas todas estas reglas la función procede a realizar la separación de sílabas y
entrega como salida un arreglo que contiene en cada una de sus columnas un vector que
corresponde a cada sílaba de la palabra ingresada, como se muestra en el Anexo 4.
4) Pausador
Se encarga de analizar las pausas que debe haber entre cada palabra y las pausas asignadas
ortográficamente.
5) Convertidor de fonemas
Cuando las sílabas entran a este procesador, cada una de las letras que la conforman es sustituida
por su respectivo fonema como se muestra en la Fig. 11.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 37
Fig. 11. Funcionamiento convertidor de fonemas.
Para esta unidad se creó una función llamada “fonema” la cual tiene como entrada las sílabas que
entrega el divisor de sílabas. Para realizar la sustitución de los difonemas se tiene en cuenta la
información del Anexo 5, los fonemas de las letras que no se encuentren en dicho anexo
corresponden a la misma letra. La función entrega como salida las silabas de la palabra sustituidas
por los fonemas como se muestra en el Anexo 6 .
6) Agrupador de fonemas
En este módulo se agrupan los fonemas entregados por el convertidor de fonemas para poder
obtener el conjunto de difonemas que componen cada una de las palabras.
Fig. 12. Funcionamiento del agrupador de fonemas.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 38
C. Desarrollo del módulo de síntesis
Al tener la lista de difonemas que conforman cada palabra del texto de entrada se procedió a
comunicarse con la base de datos del corpus para realizar el proceso de concatenación. En esta
etapa se realizaron dos módulos de síntesis, el primero trabaja con el algoritmo FD-PSOLA y el
segundo trabaja con el algoritmo TD-PSOLA. El funcionamiento general de este módulo se
observa en la Fig. 13, el cual entrega como salida la voz sintetizada.
Fig. 13. Funcionamiento del módulo de síntesis.
1) TD-PSOLA
El primer algoritmo que se creó fue el TD-PSOLA, este método posee una etapa de análisis y una
etapa de síntesis. En la etapa de análisis es necesario saber cuál es el periodo del difonema que se
está procesando, por tal razón se creó una función llamada “periodo”, la cual se encarga de
encontrar el periodo de cada difonema utilizando auto-correlación y entrega como variables de
salida la frecuencia fundamental y el periodo en muestras. Se puede observar un funcionamiento
más detallado de esta función en el Anexo 7.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 39
Después se procede a calcular la frecuencia promedio de la palabra de entrada para obtener el factor
de compresión-expansión con el cual se ajusta la frecuencia fundamental de cada difonema. Luego
se ventanea cada difonema con una ventana Hanning con un tamaño de dos veces el periodo y un
solapamiento del tamaño de media ventana. Con el almacenamiento de la señal ventaneada se
finaliza la etapa de análisis.
La etapa de síntesis consiste en la reconstrucción de la señal, en esta fase la región de solapamiento
es multiplicada por un factor, si dicho factor es menor que 1 quiere decir que el difonema va a ser
comprimido y por lo tanto su frecuencia fundamental va a aumentar, en cambio, si el factor es
mayor que 1 quiere decir que el difonema va a ser expandido y por lo tanto su frecuencia
fundamental va a disminuir. Al final se utiliza la técnica de solapamiento y suma para obtener la
señal final.
Todo el proceso descrito anteriormente lo lleva a cabo una función llamada “p_sola_pitch”, la cual
se puede ver con más detalle en el Anexo 8.
2) FD-PSOLA
Este método a diferencia del TD-PSOLA posee tres etapas: una etapa de análisis que funciona
exactamente igual a la etapa de análisis descrita en el TD-PSOLA, una etapa de modificación donde
se realiza el proceso para cambiar el pitch de la señal y una etapa de síntesis que consiste en la
reconstrucción de la señal.
Para la etapa de modificación se utilizó el código de un phase vocoder que se encuentra en el libro
DAFX-Digital Audio Effects [25, pp. 278-279], dicho código fue adaptado con la etapa de análisis
del PSOLA que ya se había programado. Se decidió utilizar un Phase Vocoder, ya que este utiliza
un factor de escalamiento en el dominio de la frecuencia para modificar el pitch, y según [17] así
es como funciona el método de expansión-compresión para el FD-PSOLA.
La etapa de modificación comienza aplicando la transformada de Fourier a cada segmento que fue
almacenado en la etapa de análisis, de la transformada se extrae el valor absoluto que corresponde
a la magnitud del segmento y el ángulo que corresponde a la fase. Después se debe encontrar la
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 40
diferencia de fases entre el segmento que se está modificando y el segmento anterior, esto da como
resultado un vector de fases, al cual se le debe aplicar un proceso denominado “Unwrap” para que
las fases de dicho vector no estén limitadas al rango de [-π π], después se crea otro vector
conformado por el vector de frecuencia y el vector de fase calculado en el paso anterior, luego es
multiplicado por un factor para realizar el escalamiento del segmento. Todo el proceso descrito
anteriormente se realiza para cada segmento entregado por la etapa de análisis. Por último, la etapa
de síntesis se realiza por medio de síntesis aditiva, es decir suma de señales sinusoidales. El
funcionamiento del código se encuentra en el Anexo 9.
3) MBR-PSOLA
Después de tener listo el algoritmo del TD-PSOLA, que era necesario para comenzar la
implementación del MBR-PSOLA se encontró que la re-síntesis aplicada a los segmentos
provenientes del TD-PSOLA se realiza de una forma similar al desarrollo del FD-PSOLA.
En este método se pasa del dominio del tiempo al dominio de la frecuencia para ajustar los cambios
de pitch deseados, y después se vuelve a sintetizar la señal generando un banco de señales
sinusoidales a partir de la magnitud y fase de las bandas de frecuencia importantes. La diferencia
del proceso radica en que el modelo MBR-PSOLA solo se aplica a los segmentos periódicos.
Teniendo en cuenta lo anterior, se consideró que sería redundante aplicar el mismo método para
ambos algoritmos y realizar su comparación. Como se menciona en el marco teórico, el algoritmo
MBR-PSOLA se fundamenta en el TD-PSOLA y tiene como objetivo mejorar algunos problemas
de este, por lo tanto, se decidió realizar la comparación principal entre los algoritmos FD-PSOLA
y TD-PSOLA, los cuales son diferenciables ya que cada uno trabaja en un dominio diferente:
frecuencia y tiempo respectivamente. Realizar esta modificación en los algoritmos a comparar, no
altera los parámetros de la prueba subjetiva que se lleva a cabo y tampoco interfiere en el análisis
objetivo.
4) Concatenación de difonemas
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 41
Después de obtener cada difonema modificado por cualquier método, es necesario concatenarlos
de una forma adecuada. Por tal razón se creó la función “conct”, a dicha función le entran las
unidades acústicas que conforman la palabra que se va a sintetizar, lo primero que hace esta función
es buscar cual es la unidad de menor tamaño para crear una ventana Hanning de dicho tamaño.
Después se procede a aplicarle una envolvente de entrada y de salida a cada difonema, luego se
realiza una operación de solapamiento de la mitad del tamaño de la ventana en una matriz para
sumar todas sus filas y generar la señal final sintetizada. El código de esta función se encuentra en
el Anexo 10.
D. Diseño e implementación de la prueba subjetiva
Todo el diseño de la prueba subjetiva se basó en la Recomendación UIT – T P.85 [22], la cual
define un método para poder evaluar subjetivamente la calidad de una voz sintetizada. La prueba
diseñada contenía una parte escrita y un cuestionario, la parte escrita evaluaba que palabras el
participante podía identificar al momento de escuchar dos frases que habían sido procesadas con
uno de los algoritmos, la parte del cuestionario tenía como objetivo evaluar las siguientes
características: esfuerzo de escucha, dificultades de comprensión, nitidez y aceptación. Cada una
de estas características era evaluada con una escala que iba enumerada de 1 a 5, en el Anexo 11 se
encuentra la prueba que fue aplicada a los participantes.
Se desarrolló una prueba de hipótesis de dos colas para comparar la opinión de las personas
respecto a las palabras sintetizadas. Para ello se va a utilizó la siguiente ecuación [26]:
𝑛 =
(𝑍𝛼2
+ 𝑍𝛽)2 𝜎2
𝑑2 (3)
Donde,
d = promedio de las diferencias individuales entre los valores base.
𝜎2 = varianza de ambas distribuciones que se suponen iguales.
α (error tipo I) = probabilidad de rechazar una hipótesis nula siendo verdadera.
β (error tipo II) = probabilidad de no rechazar una hipótesis nula siendo falsa.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 42
𝑍𝛼
2 = es el valor del eje de las abscisas de la función normal estándar, en donde se acumula la
probabilidad de (1 – α) para un contraste de hipótesis bilateral.
𝑍𝛽 = es el valor del eje de las abscisas de la función normal estándar, en donde se acumula la
probabilidad de (1 – β).
Todas las preguntas de la prueba tienen 4 o 5 opciones de respuesta, lo que se espera es que las
diferencias en las respuestas sea en promedio una opción, es decir, si la opción 3 fue la que más
eligieron los participantes, entonces las otras respuestas deben estar entre las opciones 2 y 4. La
desviación estándar posiblemente sea de poco más de una opción, por lo tanto, se asume la varianza
con el valor de 1.5.
𝑍𝛼
2 𝑦 𝑍𝛽 se encuentran en la tabla de la distribución normal. En cuanto al error tipo I, los valores
típicos de esta probabilidad son entre 1 y 10%, por lo tanto, se establece el 5% de probabilidad de
que ocurra el error tipo I, es decir, α = 0.05. Generalmente se establece un 10% de probabilidad de
que el error tipo II ocurra, entonces β = 0.1.
Al reemplazar todas las variables en la ecuación (3) se obtuvo el tamaño de la muestra como se
observa a continuación:
𝑛 = (1,96 + 1,28)2 1,5
12 = 15,74 ≈ 16 (4)
La prueba se llevó a cabo en el Estudio B de la Universidad San Buenaventura – Seccional
Medellín. Los equipos utilizados fueron: un computador Samsung portátil NP270E4V, una interfaz
de audio Sound Devices USB Pre 2, un monitor Genelec y un sonómetro CESVA.
A continuación, se describe todo el proceso que se llevó a cabo para el desarrollo de la prueba:
1) Preparación del espacio de la prueba
Se retiraron todos los elementos innecesarios de la sala.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 43
Se situó el parlante en una posición central a un (1) metro de donde se sentaba el participante.
Se calibró el sistema con el sonómetro para que el audio reproducido tuviera un nivel de 60dBA
a un metro del parlante.
2) Inicio de la prueba
Por cada sesión participó 1 sola persona.
Se le entregó a cada participante la hoja con las instrucciones de la prueba, la hoja de respuestas
y el formato de consentimiento informado.
Se le explicó la prueba al participante y se resolvieron sus dudas.
El participante firmó el consentimiento informado.
El participante se acomodaba en el puesto designado para comenzar la prueba.
3) Desarrollo de la prueba
Primero se realizó la parte escrita de la prueba, en la cual, se reproducían dos frases sintetizadas
y el participante debía llenar la información que se le pedía en la hoja de respuestas.
Después se pasaba a la parte del cuestionario y la primera pregunta el participante la debía
contestar de acuerdo a las dos frases escuchadas para la parte escrita.
Para la segunda pregunta se ponía un audio de referencia con la voz original del locutor y
después se reproducía otro audio con la voz sintetizada, el participante debía contestar
comparando los audios.
Para la tercera pregunta se reproducía otro audio de referencia y después la misma frase con la
voz sintetizada, el participante debía contestar comparando los dos audios.
Finalmente, para la última pregunta se reproducían dos audios con la voz sintetizada y cada
participante respondía de acuerdo a su opinión.
4) Fin de la prueba
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 44
Los participantes devolvían la hoja de la prueba, la hoja de respuestas contestada y el
consentimiento informado diligenciado.
Se les agradecía a los participantes por su colaboración.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 45
VIII. RESULTADOS
Como se explica en la metodología, la comparación final se realizó diferente a lo planteado en los
objetivos, por lo tanto, todos los resultados que se presentan a continuación serán comparaciones
basadas en los algoritmos TD-PSOLA y FD-PSOLA.
A. Implementación de los algoritmos TD-PSOLA y FD-PSOLA.
El objetivo de programar estos dos algoritmos era generar una frecuencia fundamental homogénea
en toda la palabra que iba a ser sintetizada. En la Fig. 14 se observa la comparación entre el espectro
de la señal original y la señal procesada por el algoritmo TD-PSOLA y FD-PSOLA de la palabra
“baile”. La señal original hace referencia al audio de la palabra “baile” grabado por el locutor que
grabó toda la lista de palabras portadoras para extraer los difonemas.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 46
Fig. 14. Comparación de espectros de la palabra “baile”. a) Señal original. b) Método TD-PSOLA. c) Método FD-
PSOLA
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 47
En las Fig. 15 y Fig. 16 se realiza una comparación de los espectros de la señal procesada por los
dos algoritmos, para esta comparación se utilizaron las palabras “espectro” y “diccionario” que
tienen una dificultad mayor en términos de dicción.
Fig. 15. Comparación de espectros de la palabra “espectro”. a) Método TD-PSOLA. b) Método FD-PSOLA
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 48
Fig. 16. Comparación de espectros de la palabra “diccionario”. a) Método TD-PSOLA. b) Método FD-PSOLA
La TABLA I,
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 49
TABLA II y TABLA III muestran la frecuencia fundamental de cada difonema calculada con la
función “periodo” de cada palabra.
TABLA I. DIFONEMAS DE LA PALABRA “BAILE”
Difonema Frecuencia Fundamental (Hz)
_b 98,8789
ba 97,3509
aj 92,8421
jl 89,8167
le 105,2505
e_ 97,3509
Con esta información se logró obtener el promedio de la frecuencia fundamental de la palabra
“baile”, y con esta se calculó el alfa para ajustar cada frecuencia fundamental a la frecuencia
promedio.
𝐹0 𝑃𝑟𝑜𝑚𝑒𝑑𝑖𝑜 = 96.915 𝐻𝑧
En la Fig. 14 (b, c) se muestra la frecuencia fundamental de la palabra “baile” sintetizada por cada
algoritmo, el TD-PSOLA generó una frecuencia fundamental de 95.32Hz y el FD-PSOLA de
94.12Hz. Se procedió a calcular cual es el porcentaje de acierto tomando la frecuencia promedio
como un acierto del 100%.
% 𝐴𝑐𝑖𝑒𝑟𝑡𝑜 𝑇𝐷−𝑃𝑆𝑂𝐿𝐴 =95,32 𝐻𝑧∗100
96,915 𝐻𝑧= 98,35 % (5)
% 𝐴𝑐𝑖𝑒𝑟𝑡𝑜 𝐹𝐷−𝑃𝑆𝑂𝐿𝐴 =94,12 𝐻𝑧∗100
96,915 𝐻𝑧= 97,11 % (6)
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 50
TABLA II. DIFONEMAS DE LA PALABRA "ESPECTRO"
Difonema Frecuencia Fundamental (Hz)
'_e' 104,0094
'ez' 108,0882
'zp' 139,1167
'pe' 88,9112
'ek' 109,4292
'kt' 98,0000
'tr' 102,5581
'ro' 100,4555
'o_' 106,7796
TABLA III. DIFONEMAS DE LA PALABRA "DICCIONARIO"
Difonema Frecuencia Fundamental (Hz)
'_d' 84,4827
'di' 99,7737
'ik' 79,4594
'ks' 98,0000
'sj' 101,6129
'jo' 95,6616
'on' 98,4375
'na' 88,2000
'ar' 88,5542
'rj' 84,1603
'jo' 95,6616
'o_' 106,7796
Con la información de la
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 51
TABLA II y TABLA III se calcularon las frecuencias fundamentales promedio y los porcentajes
de acierto de las palabras “espectro” y “diccionario” de la misma forma como se calcularon para
la palabra “baile”.
La frecuencia fundamental promedio de la palabra “espectro” fue de 106.37Hz y de acuerdo a la
Fig. 15 (a, b) el TD-PSOLA ajustó la frecuencia fundamental a 107.6Hz y el FD-PSOLA la ajustó
a 104.2Hz, por lo tanto, el porcentaje de acierto para el TD-PSOLA fue de 98.35% y para el FD-
PSOLA fue de 97.95%. La frecuencia fundamental promedio de la palabra “diccionario” fue de
93.39Hz y de acuerdo a la Fig. 16 (a, b) el TD-PSOLA ajustó la frecuencia fundamental a 88.36Hz
y el FD-PSOLA la ajustó a 88.66Hz, por lo tanto, el porcentaje de acierto para el TD-PSOLA fue
de 94.61% y para el FD-PSOLA fue de 94.93%.
La Fig. 17 y Fig. 18 muestran el espectrograma de la palabra “baile” sintetizada por los dos
algoritmos, estos espectrogramas se realizaron para poder observar lo que pasa en frecuencia a
través del tiempo y poder visualizar si se introducen o modifican frecuencias. En el Anexo 12
también se pueden observar los espectrogramas de otras palabras como “cliente”, “diccionario” y
“espectro”.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 52
Fig. 17. Espectrograma de la señal sintetizada con el TD-PSOLA.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 53
Fig. 18. Espectrograma de la señal sintetizada con el FD-PSOLA
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 54
A continuación, se presenta en la Fig. 19 una comparación entre la representación temporal de la
señal original, la señal sintetizada por el TD-PSOLA y por el FD-PSOLA.
Fig. 19. Comparación formas de onda. a) Señal original. b) Método TD-PSOLA. c) Método FD-PSOLA
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 55
También se presenta una comparación de amplitud entre el difonema “ba” de la señal original y el
difonema “ba” que fue extraído para el corpus, como se muestra en la Fig. 20.
Fig. 20. a) Difonema original b) Difonema extraído del corpus
Es importante calcular el costo computacional que generan los algoritmos ya que en ciertas
aplicaciones es determinante para elegir cual implementar. Para poder obtener los tiempos de
ejecución de cada algoritmo se utilizaron las funciones de Matlab “tic” y “toc”, las cuales entregan
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 56
en segundos el tiempo que se tarda en ejecutar el código que se quiere evaluar, estos tiempos se
calcularon para cada algoritmo utilizando 6 frases, cada frase contenía un número diferente de
letras, en la TABLA IV se muestran los resultados obtenidos.
TABLA IV. TIEMPO DE EJECUCIÓN DE CADA ALGORITMO
B. Prueba subjetiva
Después de realizar la prueba subjetiva a 32 personas, se procedió a tabular los datos y a realizar
las gráficas de los resultados para poder realizar la comparación. A continuación, se enuncian las
preguntas correspondientes a la parte del cuestionario de la prueba y se muestran las gráficas de
los resultados.
En la parte escrita de la prueba cada participante tenía la oportunidad de acertar 10 palabras, al
contar con la participación de 16 personas por método, se establece que el 100% de aciertos de
cada método corresponde a 160 palabras bien escritas, teniendo en cuenta esto se presentan los
resultados en la
Fig. 21.
Las palabras que contribuyeron a los porcentajes de error fueron “vía G”, “andén tres”.
N° Letras Frase 𝐓𝐢𝐞𝐦𝐩𝐨𝐅𝐃−𝐏𝐒𝐎𝐋𝐀 (s) 𝐓𝐢𝐞𝐦𝐩𝐨𝐓𝐃−𝐏𝐒𝐎𝐋𝐀 (s) Diferencia (s)
5 Baile 1,262 0,684 0,578
8 Hola Juan 2,120 0,802 1,317
13 Ya estoy atento 2,539 0,981 1,558
19 El televisor funciona 3,272 1,144 2,128
25 La calificación esperada fue 4,369 1,310 3,059
29 Son quinientos pesos para
comprar
4,604 1,431 3,172
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 57
Fig. 21. Resultados prueba escrita para ambos métodos
Teniendo como base las frases sintetizadas para la parte escrita, los participantes respondieron si
encontraron palabras difíciles de entender. Las respuestas de esta primera pregunta se encuentran
en la
Fig. 22.
Fig. 22. Resultados pregunta 1. Dificultades de comprensión
83,125
16,875
83,75
16,25
0
10
20
30
40
50
60
70
80
90
100
Aciertos Desaciertos Aciertos Desaciertos
TD-PSOLA FD-PSOLA
Po
rcen
taje
Resultados prueba escrita
6,25
12,5
50
25
6,25
0
12,5
50
25
12,5
0
10
20
30
40
50
60
Nunca RaramenteDe vez en cuando A menudo Todo el tiempo
Po
rcen
taje
Dificultades de comprensión TD-PSOLA
FD-PSOLA
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 58
Se muestra en la
Fig. 23 la comparación entre las respuestas de la segunda pregunta, la cual evaluó el esfuerzo de
escucha para entender la esencia del mensaje.
Fig. 23. Resultados pregunta 2. Esfuerzo de escucha
La tercera pregunta consistió en valorar la nitidez de las palabras que escuchaban, las respuestas a
esta pregunta se comparan en la Fig. 24.
0
37,5
56,25
6,25
00
50
37,5
12,5
00
10
20
30
40
50
60
Descansoabsoluto
Atenciónnecesaria
EsfuerzoModerado
Esfuerzoconsiderable
Incomprensible
Po
rcen
taje
Esfuerzo de escucha TD-PSOLA
FD-PSOLA
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 59
Fig. 24. Resultados respuesta 3. Nitidez
La última pregunta evaluada fue si la voz sintetizada podría utilizarse para algún tipo de servicio
comercial como una contestadora automática o servicios de ayuda para personas con dificultades
en el habla. Las respuestas se encuentran comparadas en la
Fig. 25.
0
18,75
50
31,25
0
6,25
12,5
56,25
25
00
10
20
30
40
50
60
Si, muy claros Suficientementeclaros
Medianamenteclaros
No muy claros No, en absoluto
Po
rcen
taje
NitidezTD-PSOLA
FD-PSOLA
0
6,25
68,75
25
6,25 6,25
37,5
50
0
10
20
30
40
50
60
70
80
SI, para cualquierservicio
si, solo en servicioscomerciales
si, solo ayuda adiscapacitados
No, para ningunservício
Po
rcen
taje
Aceptación
TD-PSOLA FD-PSOLA
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 60
Fig. 25. Respuestas pregunta 4. Aceptación
De acuerdo a los resultados obtenidos en las pruebas, se procede a realizar los diagramas de caja y
bigotes para cada pregunta, como se muestra a continuación:
Fig. 26. Diagramas de cajas y bigotes. a) Dificultades de comprensión. b) Esfuerzo de escucha. c) Nitidez.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 61
d) Aceptación.
IX. ANÁLISIS DE RESULTADOS
A. Implementación de los algoritmos TD-PSOLA y FD-PSOLA.
Para realizar el análisis comparativo entre los algoritmos TD-PSOLA y FD-PSOLA se escogió
como ejemplo el audio de la palabra ‘baile”. De acuerdo al funcionamiento de cada algoritmo
descrito en la metodología, se hace un promedio de las frecuencias de los difonemas que conforman
la palabra, de acuerdo a la TABLA I la frecuencia fundamental promedio es de 96.915 Hz. Fig. 14
(b) muestra que la frecuencia fundamental de la palabra fue ajustada por el TD-PSOLA y dio como
resultado una frecuencia de 95.32 Hz, con un porcentaje de acierto de 98,35 %. La Fig. 14 (c)
muestra que la frecuencia fundamental de la palabra fue ajustada por el FD-PSOLA y dio como
resultado una frecuencia de 94.12 Hz, con un porcentaje de acierto de 97,11 %. Ambos métodos
realizaron un ajuste muy aproximado a la frecuencia promedio que se requería y esto se ve reflejado
en los valores obtenidos al calcular los porcentajes de acierto. Lo anterior se puede confirmar
realizando el mismo análisis comparativo con los espectros de las palabras “diccionario” y
“espectro”, las cuales tienen mayor dificultad en términos de dicción y de acuerdo a los resultados
obtenidos se concluye que los porcentajes de acierto de ambos algoritmos están por encima del
94%.
Se decidió analizar el comportamiento de las frecuencias en el tiempo de los dos algoritmos, ya
que auditivamente se puede apreciar que el FD-PSOLA modifica de alguna forma en frecuencia la
señal sintetizada respecto al TD-PSOLA, en el cual no se aprecia esto auditivamente. En la Fig. 14
(c) se observa que el algoritmo FD-PSOLA introduce frecuencias en un rango aproximado de 20-
80Hz y al comparar la Fig. 17 y Fig. 18, se observó que el FD-PSOLA introduce armónicos por
encima de 15kHz en algunos instantes de tiempo como lo muestra la región 1 de la Fig. 18, mientras
que en otros instantes de tiempo atenúa frecuencias también por encima de los 15kHz como se
muestra en la región 2 de la misma figura. Este comportamiento también se puede apreciar en los
espectrogramas del Anexo 12. Espectrogramas, de las palabras “cliente”, “espectro” y
“diccionario”, al comparar los espectrogramas del TD-PSOLA con los del FD-PSOLA se puede
ver cómo en algunas regiones por encima de los 15kHz se introducen o atenúan frecuencias.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 62
Se evidencia en la Fig. 19 que existen variaciones de amplitud entre las señales sintetizadas y la
señal original. Esto puede ocurrir por varias razones, una de ellas es el hecho de que cada difonema
se extrajo de una palabra portadora diferente, es decir, por más que se quiera comparar con la señal
original, los audios de los difonemas que la componen son diferentes a los audios de los difonemas
con los cuales se reconstruye la señal, esto se observa comparando los valores de amplitud de los
picos de la señales que se encuentran en la Fig. 20.
Otra razón que contribuye y que afecta por igual al TD-PSOLA y al FD-PSOLA, es la función de
concatenación ‘conct’ la cual crea un cross-fade a partir de una ventana Hanning para concatenar
los difonemas que contiene la palabra que se está procesando. En dicha función se hace un
solapamiento del 50%, sin embargo, como cada difonema fue extraído de una palabra diferente, al
realizar la suma del solapamiento no se realizará una correcta compensación de amplitud, pero si
se evitará un cambio brusco de ésta entre cada difonema.
De acuerdo a la Fig. 19, se observa que la duración de la señal sintetizada es diferente respecto a
la señal original, en el TD-PSOLA es de 0.4407s y tiene una diferencia con la original de 0.1982s.
Esto ocurre porque la modificación del pitch de cada difonema se está haciendo en el dominio
temporal aplicando un factor de compresión o expansión según el pitch deseado, lo cual afectará
la duración de cada difonema y por lo tanto la duración de la palabra final al concatenar los
difonemas.
En el caso del FD-PSOLA la modificación de pitch se realizó escalando la frecuencia y la fase en
el dominio de la frecuencia, sin embargo, esta operación se está viendo reflejada en el dominio
temporal, de acuerdo a [17], esto puede ocurrir debido a que el método de modificación de pitch
por medio de compresión – expansión, puede verse como equivalente de un método en el dominio
del tiempo. Además, en [25] se explica que el pitch shifting de un phase vocoder está directamente
relacionado con el método del time Stretching.
Sin embargo al comparar la Fig. 19 (b) y (c), se puede observar que cada señal sintetizada tiene
una duración de 0.4407s y 0.4569s respectivamente, la diferencia entre estas duraciones es muy
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 63
pequeña, lo que da a entender que los dos algoritmos afectan de forma muy similar el dominio
temporal, esto también se ve reflejado en las forma de onda de las dos figuras.
B. Tiempo de ejecución
Observando los resultados obtenidos en la TABLA IV se concluye que en general el algoritmo FD-
PSOLA consume más recursos computacionales que el TD-PSOLA, debido a las operaciones que
se realizan en el dominio de la frecuencia. Lo anterior se hace más evidente cuando se aumenta el
número de letras en la frase, ya que se observa que el tiempo de ejecución del FD-PSOLA llega a
duplicar y hasta triplicar el tiempo de ejecución del TD-PSOLA con la misma cantidad de letras.
C. Prueba subjetiva
1) Dificultades de comprensión
De acuerdo a la
Fig. 22 para ambos algoritmos, el mayor porcentaje de población correspondiente al 50% respondió
que “de vez en cuando” se encontraron palabras difíciles de entender. En base a la Fig. 26 (a) se
comparan las cajas asociadas a los dos algoritmos, se evidencia que para ambos las respuestas están
concentradas entre las opciones 3 y 4. Aunque la forma de las cajas es igual, se puede observar que
existen respuestas atípicas para el algoritmo TD-PSOLA y por lo tanto son más dispersas. Con esto
también se puede afirmar que las respuestas del FD-PSOLA tienden a la opción 3 donde se
encuentra el 50% de las respuestas.
2) Esfuerzo de escucha
Teniendo en cuenta la
Fig. 23, se observa que hay un mayor porcentaje de participantes que indicaron la respuesta
“esfuerzo moderado” en el TD-PSOLA, lo que indica que los participantes tuvieron que esforzarse
un poco más que en el FD-PSOLA para entender el mensaje, ya que en éste el mayor porcentaje
de participantes indicó que solo se requirió “atención necesaria” para entender el mensaje.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 64
Lo anterior también se evidencia en la Fig. 26 (b) donde se observa que la mediana de la caja del
FD-PSOLA es menor a la del TD-PSOLA, esto indica que el 50% de las respuestas del FD-PSOLA
están concentradas en opciones más bajas, donde se establece que hay un menor esfuerzo de
escucha para comprender la esencia del mensaje. También se visualiza que las respuestas están
entre las opciones 2 y 4 para ambos algoritmos, lo que revela que con cierto grado de esfuerzo se
logran entender todas las palabras sintetizadas.
3) Nitidez
Observando la Fig. 24 se entiende que el mayor porcentaje de población en ambos algoritmos,
indicaron que los sonidos eran “medianamente claros”, sin embargo, hay una diferenciación en la
tendencia de las respuestas que se puede observar en la Fig. 26 (c), donde las respuestas para el
algoritmo TD-PSOLA se concentran en las opciones de nitidez intermedia, pero en el algoritmo
FD-PSOLA existen valores atípicos en las opciones 1 y 2, lo que hace que la concentración de las
respuestas esté dirigida hacia las opciones de baja nitidez.
4) Aceptación
Para el TD-PSOLA se obtuvo un porcentaje predominante en la opción 3, como se muestra en la
Fig. 25, el 68.8% de los participantes indicaron que este método podría ser usado en servicios de
ayuda para personas con dificultades visuales o en el habla. Mientras que en el FD-PSOLA el
porcentaje mayor de los participantes no aceptó el método para ningún tipo de servicio, sin
embargo, un porcentaje significativo también indicó la misma respuesta del TD-PSOLA.
En la Fig. 26 (d), con el tamaño de la caja se evidencia la concentración de las respuestas en la
opción 3 para el método TD-PSOLA como se habló anteriormente, pero también se observa una
mayor variabilidad en las respuestas obtenidas para el método FD-PSOLA debido al tamaño de la
caja y a que se tienen valores atípicos en la opción 1. No se cuenta con un bigote superior ya que
la mayoría de las respuestas están concentradas en el valor máximo que sería la opción 4.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 65
4) Sección escrita
De acuerdo a la
Fig. 21, el porcentaje de aciertos en el TD-PSOLA fue de 83% y en el FD-PSOLA fue de 84%, esto
indica que las personas podían identificar de forma casi satisfactoria todas las palabras que se
pedían escribir. Debido a que los porcentajes de errores fueron tan bajos, se puede decir que con
los dos algoritmos es posible transmitir de forma correcta un mensaje.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 66
X. CONCLUSIONES
Al comparar los algoritmos TD-PSOLA y FD-PSOLA objetivamente, se puede concluir que
realizan el cambio de la frecuencia fundamental con mucha exactitud, por esto es que presentan
porcentajes de aciertos superiores al 94%, esto quiere decir que sus diferencias son poco
significativas al realizar este proceso.
El TD-PSOLA modifica el dominio temporal de forma similar al FD-PSOLA, esto se evidencia de
varias formas, la primera es que se obtienen diferencias de tiempo pequeñas al comparar la longitud
de las señales sintetizadas. La segunda es que al comparar las formas de onda se observan
comportamientos similares de la envolvente de amplitud.
Las diferencias significativas que tienen los dos algoritmos se ven reflejadas en el tiempo de
ejecución, ya que el FD-PSOLA al trabajar en el dominio de la frecuencia incrementa
considerablemente el costo computacional respecto al TD-PSOLA, llegando a duplicar y hasta
triplicar el tiempo de ejecución.
Otra diferencia significativa entre los algoritmos es que el FD-PSOLA puede introducir o atenuar
frecuencias que no se ven alteradas en el TD-PSOLA, esto puede afectar de forma negativa la
calidad vocal del sintetizador.
Los participantes respondieron tres de cuatro preguntas de manera similar para ambos algoritmos
y en la prueba escrita también acertaron de igual manera para ambos, esto evidencia que en
términos generales, aunque las palabras no fueran tan claras y se dificultara su entendimiento, las
personas entendían el mensaje básico y diferenciaban las palabras con ambos algoritmos. Sin
embargo, se refleja una preferencia por el algoritmo TD-PSOLA en cuanto a la aceptación para el
uso de este en dispositivos que ayuden a personas discapacitadas.
La implementación de los algoritmos FD-PSOLA y TD-PSOLA para la concatenación de
difonemas, no son suficientes para proporcionar una buena calidad vocal del sintetizador, esto se
debe a que estos algoritmos brindan homogeneidad en la frecuencia de la palabra sintetizada, sin
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 67
embargo, la voz aún sigue careciendo de entonación e intención, por tal razón se ve absolutamente
necesario la implementación del módulo de prosodia en el sintetizador para que pueda mejorar esta
carencia.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 68
REFERENCIAS
[1] H. Duxans Barrobés y M. Ruiz Costa-jussá, «Síntesis del habla,» de Procesamiento de audio,
Barcelona, Eureca Media, 2012.
[2] I. Iriondo, J. Martí, J. Oliver, R. Guaus y H. Moure, «Hacia una síntesis concatenativa de alta
calidad para aplicaciones de conversión texto-habla,» Procesamiento del lenguaje natural,
vol. 25, pp. 109-114, 1999.
[3] J. C. Pérez Cortés y J. L. Bullón Miró, «Conversión de texto a voz en castellano aplicando el
algoritmo PSOLA,» Procesamiento del lenguaje natural, vol. 14, pp. 217-231, 1994.
[4] R. A. Garcia Ocampo, Sintesis de voz en español (Trabajo de Grado ), México D. C.: Unidad
Profesional Interdisciplinaria en Ingeniería y Tecnologías Avanzadas, 2005.
[5] N. Rojas, M. A. Blondet y E. Mora, «Diccionario de difonos de sintetizador de voz "SEVEN".
Manual de instalación y de uso,» Lengua y Habla, vol. 16, pp. 172-185, 2012.
[6] H. Duxans Barrobés y M. Ruiz Costa-jussá, «Introducción al habla,» de Procesamiento de
audio, Barcelona, Eureca Media, 2012, pp. 7-17.
[7] J. Marti Roca, «Situación actual de la síntesis de voz,» Estudios de Fonética Experimental,
vol. 4, pp. 148-166, 1990.
[8] J. Martí Roca y D. Niñerola Chifoni, «SINCAS: un conversor texto-voz en castellano,»
Procesamiento del lenguaje natural, vol. 05, pp. 111-112, 1987.
[9] C. Correa, H. Rueda y H. Argüello, «Síntesis de voz por concatenación de difonemas para el
español de Colombia,» Sistemas, cibernética e informática, vol. 7, nº 1, pp. 19-24, 2010.
[10] J. Listerri, «La síntesis del habla: Estado de la cuestión,» Procesamiento del Lenguaje
Natural, vol. 6, pp. 17-41, 1988.
[11] S. Jordá Puig, «Síntesis y generación digital del sonido,» de Audio digital y MIDI, Madrid,
Anaya Multimedia, 1997.
[12] J. M. Conejo, «Desarrollo de un conversor de texto a voz en español dentro de una
arquitectura multilingüe,» Procesamiento del lenguaje natural, vol. 11, pp. 221-227, 1991.
[13] J. M. Montero Martinez, «Speech Technology Group,» 2015. [En línea]. Available:
https://goo.gl/ZSnFoU.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 69
[14] A. Jaén Gómez, Adaptación del sistema Texto a Voz "Festival" al Catalán, Cataluña:
Universidad Politécnica de Cataluña, 2007.
[15] N. Schnell, G. Peeters, S. Lemouton, P. Manoury y X. Rodet, «Synthesizing a choir in real-
time using Pitch Synchronous Overlap Add (PSOLA),» de Proceedings of the INternational
Computer Music Conference, San Francisco, 2000.
[16] D. J. Hejna, Real-Time Time-Sacale Modification of Speech via the Synchronized Overlap-
Add Algorithm (Tesisi de Maestría), Massachusetts: Massachusetts Institute of Technology.
Dept. of Electrical Engineering and Computer Science, 1990.
[17] E. Moulines y F. Charpentier, «Pitch-Synchronous waveform processing techniques for text-
to-speech synthesis using diphones,» Speech Communication, vol. 9, pp. 453-467, 1990.
[18] Y. Stylianou, J. Schroeter y T. Dutoit, «Diphone Concatenation using a Harmonic plus Noise
Model of Speech,» de Eurospeech, Rodas, 1997.
[19] J. Gordon y J. Strawn, An introduction to the phase vocoder, Stanford: CCRMA, 1987.
[20] MathWorks, «Matlab,» [En línea]. Available: https://goo.gl/N3QfyK.
[21] J. Llisterri y D. Poch, Caracterización fonética del bilingüismo, análisis acústico del habla
espontánea y evaluación de sistemas de síntesis de habla, Barcelona, 1991.
[22] Unión Internacional de Telecomunicaciones, Método para la evaluación subjetiva de la
calidad vocal de los dispositivos generadores de voz, UIT, 1994.
[23] N. Rojas, M. A. Blondet y E. Mora, «Lengua y Habla,» Revista del centro de investigación
y atención lingüística C.I.A.L, 2012. [En línea]. Available: https://goo.gl/WGW1z6.
[24] O. Cáceres Ramírez, «Cómo separar en sílabas,» About, Inc, [En línea]. Available:
https://goo.gl/tsfJu5.
[25] J. Wiley & Sons, Dafx-Digital Audio Effects, West Sussex: Jhon Wiley & Sons, Ltd, 2002.
[26] J. a. García, A. Reding y L. Juan Carlos, «Cálculo del tamaño de la muestra en investigación
de educación médica,» Metodología de Investigación en Educación Médica, vol. 8, pp. 217-
224, 2013.
[27] Diferenciaentre.info, «Diferencia entre hiato y diptongo,» 2014. [En línea]. Available:
https://goo.gl/9PNHvz.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 70
[28] J. L. Bullón y J. C. Pérez, «Conversión de texto a voz en castellano aplicando el algoritmo
PSOLA,» pp. 217-231, 1994.
[29] L. Demri, L. Falek, H. Teffahi y A. Djeradi, «Determination of Variation Ranges of the Psola
Transformation Parameters by Using Their Influence on the Acoustic Parameters of Speech,»
Lecture Notes on Information Theory, vol. 2, nº 1, pp. 61-67, 2014.
[30] L. Aguilar, J. M. Fernámdez, J. M. Garrido y J. Llisterri, «Diseño de pruebas para la
evaluación de habla sintetizada en español y su aplicación a un sistema de conversión de
texto a habla,» de Actas del X Congreso de la Sociedad Española para el Procesamiento del
lenguaje Natural, Córdoba, 1994.
[31] T. Dutoit y H. Leich, «MBR-PSOLA text-to-speech synthesis based on an MBE re-synthesis
of the segments database,» Speech Communication, vol. 13, pp. 435-440, 1993.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 71
ANEXOS
Anexo 1. Lista de difonemas con su frase portadora.
Difonema Frase portadora
_a atento
_A apto
aa laatajada
AA estarahabidadeemociones
aA albahaca
Aa vaalacasa
ae laestrella
Ae trae tres veces
aE poesiaépica
AE obtendráéxito
aI distraído
AI sevaipsofacto
Aj baile
aj laidea
ao lahormiga
Ao cacao tres veces
aO caoba
AO comeráostras
aU aúlla
AU comeráuvas
Aw Paula
aw auxilio
aB lavanda
AB acaba
ak aquí
Ak paca
aC fachada
AC empacho
aD pradera
AD cuidado
af fotografía
Af bibliográfico
aG esófago
AG estrago
ah lagitana
Ah bajo
al circunvalación
Al carnavaltaurino
aL lalluvia
AL calle
am camarón
Am samba
an candado
An santo
aJ cañada
AJ aledaño
ap amapola
Ap capa
ar caravana
Ar cara
aR agarró
AR catarro
as pasado
As tasa
az castrado
Az catastro
at platería
At informática
a_ anécdota tres veces
A_ el dirá tres veces
_e elemental
_E ébano
ee leexplicó
EE compraréébano
eE dehecho
Ee comeréespinacas
ea leavisó
Ea jalea tres veces
eA lehabla
EA lodiréalgo
eI comehigos
EI buscaréhigos
ej aceite
Ej reido
eo leocultalaverdad
Eo camafeo tres veces
eO seodian
EO busquéoro
ew rehusar
eU esdeusocomún
EU diagnostiquéúlcera
Ew deuda
eB abreviatura
EB zebra
ek reconstruir
Ek récord
eC cosechó
EC flecha
eD tediosa
ED cede
ef preferencia
Ef benéfica
eG alegó
EG agrega
eh ejecuta
Eh abeja
el celoso
El célebre
eL apellido
EL creyendo
em memorable
Em académico
en envenenar
En abolengo
eJ señalé
EJ merideño
ep reparar
Ep intrépido
er perol
Er pera
eR derrumbarse
ER perro
es sesenta
Es queso
ez Jueves temprano
Ez orquesta
et detectó
Et machete
e_ siguiente tres veces
E_ terminé tres veces
_i iracundo
_I Íngrimo
ia díadejúbilo
IA cogíalgo
iA diario
Ia viajero
ie fríe tres veces
Ie adiestrado
iE grieta
IE díéxito
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 72
ii antihigiénico
II chiíta
Ii unjabalíibérico
io vacío tres veces
jo incendio tres veces
jO antibiótico
IO ledíoro
ju ciudadanía
jU viuda
Iu vivíurbanamente
IU cogíuvas
iB caribeño
IB almibar
ik acuático
Ik chico
iC chichero
IC bicho
ID accidente
iD aburrido
if amplifica
If frigorífico
iG figura
IG bígamo
ih quijada
Ih baratija
il estilístico
Il pabilo
iL piyama
IL hebilla
im homónima
Im primo
in suministró
In espina
iJ aliñó
IJ tiña
ip múltiple
Ip disipa
ir abriré
Ir aspira
iR irreal
IR pírrica
is misión
Is adoradísima
iz historia
Iz abismo
it gitano
It dermatitis
i_ Magaly tres veces
I_ alhelí tres veces
_o orígen
_O orbe
oo cooperar
OO tomóocholibros
oO comoostras
Oo rezóoraciones
oa digoaleluya
Oa anchoas tres veces
oA Anzoátegui
OA tomóagua
oe tengohelados
Oe oboe tres veces
OE medioevo
oE oyóecos
oj hagohistorias
OI volóícaros
oI egoísmo
Oj voy tres veces
ow comproutensilios
oU tuvoúlcera
OU regalóuvas
ow bou
oB gobierno
OB acróbata
ok época
Ok boca
oC bochando
OC bizcocho
oD acomodado
OD podan
of bofetón
Of alcachofa
oG filmografía
OG ahoga
oh aflojándola
Oh cojo
ol malgastándola
Ol melancólico
oL abollado
OL cebolla
om acomete
Om abomba
on condena
On pone
oJ otoñal
OJ carroña
op soplando
Op sopa
or poroso
Or mejoras
oR borracho
OR recorre
Os primorosa
oz loscuatro
Oz costa
ot escotado
Ot botas
o_ canto tres veces
O_ cantó tres veces
_u universidad
_U único
Ua acentúa tres veces
wA acuario
wa acuarela
UA bambúapto
Ue efectúe tres veces
we acueducto
wE elocuencia
UE tabúépico
Uj tepuy tres veces
wI ruido
Uo flúor
wo individuo tres veces
wO evaluó tres veces
UO hindúobra
uu tribuusurpada
uU tribuúnica
Uu Perúurbano
UU bambúúnico
uB cubano
UB cuba
uk eucarístico
Uk peluca
uC escuché
UC cartucho
UD judío
uD acude
uf bufón
Uf trufa
uG lugar
UG arruga
uh empujón
Uh aguja
ul adulador
Ul adúltero
uL puyero
UL apabulla
um presumida
Um resumen
un lunar
Un segúncontaron
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 73
uJ cuñado
UJ puño
up Upata
Up lupa
ur mesurado
Ur fritura
uR aburrido
UR discurre
us gusano
Us abuso
uz gustar
Uz acústica
ut irrefutable
Ut astuta
u_ tribu tres veces
U_ bambú tres veces
_b balcón
ba unvacío
bA unbarco
Ba aprueba
BA acabar
BB obvio
Bk clubcostabrava
BD abdominal
be unvenezolano
Be adobe tres veces
BE esbelto
BG subglacial
bi unvisionario
Bi aeróbicos
bI alambique
BI abismo
Bh objetiva
bl unblandocolchón
Bl biblioteca
BL abyecto
Bm submarino
Bn clubnaútico
bo bombonera
bO unbólido
Bo abogado
BO futbol
Bp subproducto
br alfombrado
Br abrigo
Bs subsecretario
Bz obstruye
Bt obtuso
bu ambulancia
Bu abultada
bU bambúgrueso
sU abuso
_k canto
ka uncamino
kA un cántico
kD anécdota
kl pasóclandestinamente
kn técnica
ko lacolita
kO Cocacola
kr acremar
ks acción
kt abstracto
ku acumular
kU lacuna
k_ coñac tres veces
_C choza
Ca muchapena
CA achaca
Ce afiche grande
CE desmanchétodo
Ci eschiquito
CI vendochicha
Co unchocolate
CO aprovechótodo
Cu enchufado
CU pechuga
_d dorado
da mandarina
dA ahondarendetalles
Da atodaprisa
DA verdadamedias
DB inadvertido
de undedal
De verdeclaro
dE merendétarde
DE academia
Df ciudadfantástica
DG verdadgallega
di undinero
Di arrodillar
dI vendítodo
DI pedido
Dh adjetivo
Dl ciudadlarense
DL nimiedadllamativa
Dm administrar
Dn verdadnegada
dJ DavidÑuño
do acelerandopoco
Do acabadodeprimera
dO undogma
DO rodóporlaescalera
Dp sociedadpermisiva
Dk adquiere
dr almendrasabrosa
Dr edredón
DR caridadrara
Ds adsorbe
Dz adstrato
Dt variedadtabacalera
du undulcero
Du adulador
dU conducto
DU acueducto
D_ verdadtresveces
_f foto
fa factor
fA fácil
fk Kafka
fe aferrado
fE afecto
fG afgano
fi final
fI afino
fl flaco
fo fósforo
fO fósil
fr frasco
ft oftalmólogo
fu bifurcación
fU furia
_g gato
ga vengan
gA bengala
Ga agachada
GA pegaba
Gd Magdalena
ge unguerrero
gE enguerra
Ge laguerrilla
GE laguerra
gi conguitarra
gI unguiso
Gi aguijón
GI esguince
gl unglosario
Gl aglomeración
Gm diafragma
Gn digno
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 74
go mangodelárbol
gO congoja
Go agobiado
GO despegótemprano
gr cangrejo
Gr emigrante
Gs gángster
Gt Washington
gu ungusano
gU ninguno
Gu argumento
GU aguja
_h Japón
ha cajaclara
hA acobijarelcuerpo
hB relojblanco
hk relojcasio
hD relojdorado
he enJerusalen
hE mijefe
hf carcajfino
hg carcajgrande
hi unajirafa
qI ajíverde
hh bojgigante
hl carcajlargo
hL relojllamativo
hm carcajmarrón
hn relojnacarado
ho ajomolido
hO jojoto
hp carcajpesado
hR carcajrojo
hs relojseiko
ht carcajtrenzado
hu eljudaísmo
hU julio
h_ relojtresveces
_l lámpara
la caladora
lA unlazo
lB albañil
lk alcabala
ld caldo
le deletrear
lE caletre
lf alfabeto
lG colgar
li religioso
lI melisa
lh eljueves
ll ellunes
lL árbolllamativo
lm almacén
ln balneario
lJ elñame
lo abuelopaterno
lO pelota
lp alpargata
lR alrededor
ls balsa
lt cultura
lu voluptuosa
lU alúde
l_ pañaltresveces
_L llamativo
LA hallaca
La payasada
Le allegado
LE atropellétarde
Li onomatopéyico
LI apellido
Lo mayoría
LO rayoso
Lu ayudándola
LU lalluvia
_m mártir
ma camaleón
mA temático
mb chimbo
me dametres
mE Mérida
mi contaminada
mI lamisa
ml Kremlin
mL albúmllamativo
mm gamma
mn alumna
mo sémola
mO terremoto
mp desempeño
ms albumsencillo
mt albumtirado
mu inmuniza
mU acumula
m_ albùmtresveces
_n natural
na panadero
nA neonato
nb bienvenida
nk encapotado
nd colgando
ne panetón
nE panela
nf anfibio
ng acongojado
ni botánico
nI canícula
nh ajonjolí
nl circunloquio
nL conlleva
nm comúnmente
nn innato
nJ unñoqui
no panorama
nR enredo
ns ansiedad
nS2 inscribir
nt canto
nu enumera
nU anuda
_J ñapa
Ja diseñadora
JA añada
Je gruñesiempre
JE añejo
Ji reñidor
JI añicos
Jo niñopequeño
JO seadueñótodo
Ju amuñuñar
JU greñuda
_p parásito
pa capataz
pA apático
pe copetuda
pE tapete
pi salpicado
pI papitas
pl acoplado
pn hipnótico
po popular
pO adiposo
pr aprecia
ps colapso
pt abrupta
pu cúpula
pU apuro
ra araguaney
rA carato
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 75
rB absorber
rk mercado
rD verdoso
re marejada
rE careta
rf huérfana
rG encargan
ri caribeño
rI jurídico
rh conserje
rl arlequín
rL jugaryoyo
rm ermitaño
rn adornar
rJ comerñame
ro perorata
rO perola
rp cuerpo
rR tomarron
rs dispersa
rt abortar
ru cirujano
rU Carúpano
r_ dormirtresveces
_R ramo
Ra sinrazón
RA arrasa
Re alrededor
RE agarrétres
Ri enriquece
RI sonrisa
Ro cigarrocubano
RO alrojovivo
Ru carrusel
RU arruga
_s santo
sa pasadera
sA asado
za lasagujas
zA tomasagua
zB esbelto
zk asqueroso
zD desde
se cacerola
sE acusérecibo
ze vaselegante
zE juegaséstas
zf asfalto
zG arriesga
xi adversidad
sI abusivo
zi dosimágenes
zI treshijos
zh desjuntar
zl traslado
zL desyerbar
zm turismo
zn cisne
zJ losñames
so insonoro
zO losocho
zp áspera
zR Israel
zs loszapatos
zt instante
su apresurado
sU casucha
zu lasubique
zU lasurge
z_ vivimostresveces
_t taladro
ta cántaro
tA incontestable
tB fútbol
tD postdata
te cantería
tE sestero
tG postgrado
ti articulado
tI abatido
tl atlántico
tm aritmética
tn etnólogo
to historietas
tO católico
tp postpalatal
tr introduce
tu tarántula
tU soltura
wk eucalipto
pj piedad
pw puerto
p_ Merenaptresveces
bE unbeso
bj colombiana
bw buenosdias
Bf subfiador
Bj agobiado
Bw abuelo
tj tierno
tw tuerto
t_ Conicittresveces
dj undiario
dw duerme
Dd Madriddedía
DC ardidchiflado
Dj odian
Dw adueño
ke asqueroso
kE busquétresveces
ki quijada
kI aquítresveces
kG elConacguía
kC elConacchantajea
kf elConacfía
kh elConacjamás
km Acmé
kL elConacllama
kR elConacruega
kj quieto
kw cuero
gj guia
gw guaro
Gj meestabaguiando
Gw laguardia
Cj Chiapas
Cw chueco
C_ Estruchtresveces
fj confianza
fw fuego
sO sopa
sj losiento
sw suerte
zo tienesocumo
zC loschorros
zj lashierbas
zw loshuevos
hC relojchico
hw juego
md albumdecoroso
mk albumcaro
mg albumglorioso
mC albumchamuscado
mf albumfino
mh albumjamás
mR albumraro
mj miente
mw muévase
nO nodo
np panprimero
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 76
nC panchoreado
nj nieto
nw nuera
n_ me duermo (pan)
kp elConacpuede
kB elConacbrinda
kk elConacconoce
_w huevos
_j hiede
lj lienzo
lw luego
Lw llueve
Rj riega
Rw ruega
lC elchocolate
rC archifonema
jp naipe
jB Maracaibo
jt gaitera
jD traidor
jk arcaica
jG arraigado
js paisano
jz aislado
jh azerbaijano
jm caimán
jn envainar
jl bailaba
jL maillot
jr LaGuaira
j_ reytresveces
wp aupar
wB chauvinista
wt flauta
wD fraudulento
wG inaugura
wC reencauchado
ws nauseas
wz austero
wh Araujo
wm traumático
wn sauna
wl jaula
wL maullido
wf eudórico
wr europeo
wR aurragada
w_ miautresveces
pp chipplástico
pB chipbasado
II Camurííba
wi ajuiciar
rj caries
rw ciruela
Iw kiwi
iw casihuele
uj elímpetuhiere
Anexo 2. Código Tokenizador
function [ FraseCell ] = token(frase)
sz=1;%Contador del tamaño del cell Array
c=0;%Variable para recorrer las filas de cada vector del Cell Array
%Ciclo para almacenar cada palabra en una columna del Cell Array
for i=1:length(frase)
%Corta el ciclo para no crear columnas adicionales al final
if i == length(frase)
break
end
%Almacena las palabras cuando hay puntos y comas
if frase(1,i)== 44 || frase(1,i)== 46
FraseCell(1,sz)={frase(c+1:i-1)};
FraseCell(1,sz+1)={frase(i)};
FraseCell(1,sz+2)={frase(i+1)};
c=i+1;
sz=sz+3;
%Almacena las palabras cuando solo hay espacios
else if frase(1,i)== 32 && (frase(1,i-1))~=44 && (frase(1,i-1))~=46
FraseCell(1,sz)={frase(c+1:i-1)};
FraseCell(1,sz+1)={frase(i)};
c=i;
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 77
sz=sz+2;
end
end
end
%Almacena la última columna dependiendo si es un signo de puntuación o una
%palabra
if frase(1,length(frase))==44 || frase(1,length(frase))==46
FraseCell(sz)={frase(c+1:i-1)};
FraseCell(sz+1)={frase(i)};
else
FraseCell(sz)={frase(c+1:i)};
end
end
Anexo 3. Reglas gramaticales para dividir en sílabas
Reglas básicas
Regla 1: todas las vocales pueden formar sílabas por sí mismas.
Ejemplo: a-ten-to, u-no
Regla 2: todas las sílabas deben estar compuestas al menos por una vocal.
Ejemplo: ca-mi-se-ta, pa-la-bra
Regla 3: una consonante o más escrita al inicio de una palabra forma sílaba con la vocal posterior.
Ejemplo: bo-ta, pre-sa
Regla 4: toda consonante o secuencia de consonante que se encuentre al final de una palabra se
une con la vocal anterior para formar sílaba.
Ejemplo: co-la-bo-rar, a-zul
Regla 5: cuando una consonante se encuentra entre dos vocales, forma sílaba con la vocal
siguiente.
Ejemplo: é-po-ca, i-ni-cio
Reglas en casos especiales
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 78
Regla 6: los grupos constituidos por br, cr, dr, gr, fr, kr, tr y bl, cl, gl, fl, tl, pl, son siempre
inseparables y forman sílaba con la vocal que les sigue.
Ejemplos: co-fre, la-drón, pla-to, fran-cés
Regla 7: los grupos consonánticos que son diferentes a los mencionados en la regla 6 pertenecen
a sílabas distintas.
Ejemplos: hip-no-sis, ac-to, pes-car.
Hiato
Se habla de un hiato cuando dos vocales contiguas pertenecen a distintas sílabas, es decir, los hiatos
sí se separan. Un hiato se forma cuando se presenta una unión entre dos vocales abiertas (a, e, o),
dos vocales cerradas iguales (ii, uu) o cuando hay una combinación entre una vocal abierta y una
cerrada, pero la cerrada se encuentra tildada [27].
Ejemplos: ma-re-o, si-co-lo-gí-a, baúl.
Diptongo
Se habla de un diptongo cuando hay dos vocales seguidas y éstas no se separan. Se forma cuando
las dos vocales son una vocal abierta y una vocal cerrada, sin importar su orden, sin embargo la
vocal cerrada no debe estar tildada. También se presenta un diptongo cuando hay dos vocales
cerradas diferentes seguidas y ninguna de ellas lleva tilde. La “y” al final de una palabra también
forma un diptongo ya que es pronunciada como un “i”.
Ejemplos: pai-sa-je, ma-gia, pau-sa, muy, in-di-vi-duo, ciu-dad [27].
Anexo 4. Código divisor de sílabas
function [ cell_silaba ] = divisor_silaba( palabra )
%divisor_silaba Esta función se encarga de separar en sílabas la palabra de
%entrada.
vocal=[97 101 105 111 117 225 233 237 243 250];
letra=[98 99 100 102 103 104 106 107 108 109 110 112 113 114 115 116 118 119 120 121
122 241];
caso4={'bl','br','dr','cr','cl','fl','fr','gl','gr','tr','pl','pr','ch'};
hiato={'ae','ao','ea','eo','oa','oe',[237,97],[237,101],[237,111],[97,237],[101,237],[1
11,237],[250,97],[250,101],[250,111],[97,250],[101,250],[111,250],[237,117],[105,250],[
250,105],[117,237],[225,101],[225,111],[97
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 79
233],[97,243],[233,97],[233,111],[101,225],[101,243],[243,97],[243,101],[111,225],[111,
233]};
diptongo={'ia','ie','io','iu','ua','ue','ui','uo','ai','au','ei','oi','ou',[105,225],[1
05,233],[105,243],[117,225],[117,233],[117,243],[225,105],[225,117],[233,105],[243,105]
,[243,117]};
%Contadores para revisar casos
cs=1; in=0; cv=0; c4=0; ch=0; vh=0; cd=0; vd=0; cf=0; v4=0;
if length(palabra) == 1 && palabra=='y'
cell_vocal{1,1} =1;
end
%Contador de vocales
for i=1:length(vocal)
n=vocal(1,i);
pv=findstr(palabra,n);
if length(pv)~= 0
cv=cv+1;
cell_vocal{1,cv}=pv(1:length(pv));
end
end
for p=1:length(palabra)
if palabra(1,p)==44 || palabra(1,p)==46 || palabra(1,p)==32
v_vocal=0;
else
v_vocal=sort(cell2mat(cell_vocal));
end
end
%Revisa si existe el caso 5
for j=1:length(caso4)
p4=findstr(palabra,caso4{1,j});
if length(p4)~= 0
c4=c4+1;
cell_caso4{1,c4}=p4(1:length(p4));
v4=1;
end
end
%Revisa si existe hiato
for k=1:length(hiato)
h=findstr(palabra,hiato{1,k});
if length(h)~= 0
ch=ch+1;
cell_hiato{1,ch}=h(1:length(h));
vh=1;
end
end
%Revisa si hay diptongo
for q=1:length(diptongo)
d=findstr(palabra,diptongo{1,q});
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 80
if length(d)~= 0
cd=cd+1;
cell_diptongo{1,cd}=d(1:length(d));
vd=1;
end
end
for w=1:length(v_vocal)
%Separa sílabas cuando después de la vocal hay una letra
for l=1:length(letra)
if v_vocal(1,w)+1 < length(palabra) && palabra(1,v_vocal(1,w)+1)== letra(1,l)
%Reconoce si después de la vocal hay una letra y después otra vocal
for v=1:length(vocal)
if v_vocal(1,w)+2 <= length(palabra) && palabra(1,v_vocal(1,w)+2)==
vocal(1,v)
cell_silaba{1,w}= palabra(in+1:v_vocal(1,w));
in=v_vocal(1,w);
break
end
end
%Reconoce si después de la vocal hay 2 letras
for l2=1:length(letra)
if (palabra(1,v_vocal(1,w)+2)== 108 || palabra(1,v_vocal(1,w)+2)== 114
...
|| palabra(1,v_vocal(1,w)+2)== 104) && v_vocal(1,w)+2 <=
length(palabra) && v4 == 1
cell_silaba{1,w}= palabra(in+1:v_vocal(1,w));
in=v_vocal(1,w);
break
else if v_vocal(1,w)+2 <= length(palabra) && palabra(1,v_vocal(1,w)+2)==
letra(1,l2)
cell_silaba{1,w}= palabra(in+1:v_vocal(1,w)+1);
in=v_vocal(1,w)+1;
break
end
end
end
break
%Almacena la última sílaba
else if w == length(v_vocal)
cell_silaba{1,w}= palabra(in+1:length(palabra));
end
end
end
%Separa sílabas cuando después de la vocal hay otra vocal
if v_vocal(1,w)+1 <= length(palabra) && vh==1
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 81
%Separación de sílaba cuando existe hiato
if palabra(1,v_vocal(1,w)+1)== 97 || palabra(1,v_vocal(1,w)+1)== 101 ||
palabra(1,v_vocal(1,w)+1)== 111 ...
|| palabra(1,v_vocal(1,w)+1)== 250 || palabra(1,v_vocal(1,w)+1)== 237 ||
palabra(1,v_vocal(1,w)+1)== 225 ...
|| palabra(1,v_vocal(1,w)+1)== 233 || palabra(1,v_vocal(1,w)+1)== 243
cell_silaba{1,w}= palabra(in+1:v_vocal(1,w));
in=v_vocal(1,w);
end
%Almacena última sílaba de la palabra
else if w == length(v_vocal)
cell_silaba{1,w}= palabra(in+1:length(palabra));
end
end
end
if vd==1 && cd==1
for c=1:length(cell_silaba)
if c > length(cell_silaba)-length(cell_diptongo)
break
end
if isempty(cell_silaba{1,c})==1
cf=cf+1;
for c2=c:length(cell_silaba)-length(cell_diptongo)
cell_silaba(1,c2)= cell_silaba(1,c2+1);
end
cell_silaba=cell_silaba(1:length(cell_silaba)-length(cell_diptongo));
end
end
end
if vd==1
for c=1:length(cell_silaba)
if c > length(cell_silaba)-length(cell_diptongo)+1
break
end
if isempty(cell_silaba{1,c})==1
cf=cf+1;
for c2=c:length(cell_silaba)-length(cell_diptongo)+1
cell_silaba(1,c2)= cell_silaba(1,c2+1);
end
cell_silaba=cell_silaba(1:length(cell_silaba)-length(cell_diptongo)+1);
end
end
end
end
Anexo 5. Lista de fonemas para casos especiales
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 82
Caso Ejemplo Fonema
ch choza /C/
gue
gui
guerra
guiso /G/
Cuando hay una vocal con
tilde
lápiz
aéreo
ladrón
música
/A/, /E/, /I/, /O/, /U/
“j” jarra /h/
y
ll
yuca
llano /L/
Si “y” está al final de la
palabra o conforma una
sola palabra
y, hay, muy, hoy /i/
io, iu, ai, ei, oi baile, ciudad /j/
ñ niña, piña /J/
Cuando “r” está al inicio
de la palabra o cuando hay
“rr”
ratón, ruina, ruido
arroz, arroyo
/R/
ua, ue, uo, au, eu, ou fuego, huerto, agua /w/
z
ci
ce
azul
cielo
césped
/s/
qu
ca
co
cu
casa
cuna
coco
queso
/k/
v vaso, vida, viaje /b/
Anexo 6. Código convertidor de fonemas.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 83
function [silaba] = fonema(silaba)
letra=[98 99 100 102 103 104 106 107 108 109 110 112 113 114 115 116 118 119 120 121
122 241];
for i2=1:length(silaba)
for k2=1:length(silaba{1,i2})
%Fonema /C/ para el caso 'ch'
if k2+1 <= length(silaba{1,i2}) && silaba{1,i2}(1,k2)== 'c' &&
silaba{1,i2}(1,k2+1)=='h'
silaba{1,i2}= ['C' silaba{1,i2}(1,3:length(silaba{1,i2}))];
break
end
%Cuando hay 'h'
if k2+1 <= length(silaba{1,i2}) && silaba{1,i2}(1,k2)== 'h'
silaba{1,i2}= [silaba{1,i2}(1,k2+1) silaba{1,i2}(1,3:length(silaba{1,i2}))];
end
%Fonema /G/ para el caso 'gue' 'gui'
if k2+2 <= length(silaba{1,i2}) && silaba{1,i2}(1,k2)== 'g' &&
silaba{1,i2}(1,k2+1)== 'u' && (silaba{1,i2}(1,k2+2)== 'i' || silaba{1,i2}(1,k2+2)==
'e')
silaba{1,i2}= ['G' silaba{1,i2}(1,3:length(silaba{1,i2}))];
break
end
end
end
%Acentuaciones
for i3=1:length(silaba)
for k3=1:length(silaba{1,i3})
%Fonemas /A/ para 'a' acentuada
if silaba{1,i3}(1,k3)== 'á' || silaba{1,i3}(1,k3)== 'Á'
silaba{1,i3}(1,k3)= 'A';
end
%Fonemas /E/ para 'e' acentuada
if silaba{1,i3}(1,k3)== 'é' || silaba{1,i3}(1,k3)== 'É'
silaba{1,i3}(1,k3)= 'E';
end
%Fonemas /I/ para 'i' acentuada
if silaba{1,i3}(1,k3)== 'í' || silaba{1,i3}(1,k3)== 'Í'
silaba{1,i3}(1,k3)= 'I';
end
%Fonemas /O/ para 'o' acentuada
if silaba{1,i3}(1,k3)== 'ó' || silaba{1,i3}(1,k3)== 'Ó'
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 84
silaba{1,i3}(1,k3)= 'O';
end
%Fonemas /U/ para 'u' acentuada
if silaba{1,i3}(1,k3)== 'ú' || silaba{1,i3}(1,k3)== 'Ú'
silaba{1,i3}(1,k3)= 'U';
end
%Fonema /h/ para los casos 'j'
if silaba{1,i3}(1,k3)== 'j'
silaba{1,i3}(1,k3)='h';
end
end
end
for i=1:length(silaba)
for k=1:length(silaba{1,i})
if silaba{1,i}(1,k)== ' '
silaba{1,i}(1,k)= '_';
end
%Fonema /b/ para 'v'
if silaba{1,i}(1,k)== 'v'
silaba{1,i}(1,k)= 'b';
end
%Fonema /k/ para 'c'
if silaba{1,i}(1,k)== 'c'
silaba{1,i}(1,k)= 'k';
end
%Fonema /h/ para los casos 'ge' y 'gi'
if silaba{1,i}(1,k)== 'g' && k+1 <= length(silaba{1,i})
if silaba{1,i}(1,k+1)=='e' || silaba{1,i}(1,k+1)=='i' ||
silaba{1,i}(1,k+1)=='E' || silaba{1,i}(1,k+1)=='I'
silaba{1,i}(1,k)='h';
end
end
%Fonema /L/ para el caso 'll'
if k+1 <= length(silaba{1,i}) && silaba{1,i}(1,k)== 'l' &&
silaba{1,i}(1,k+1)=='l'
silaba{1,i}= ['L' silaba{1,i}(1,3:length(silaba{1,i}))];
break
end
%Fonema /L/ para el caso 'Y'
if silaba{1,i}(1,k)== 'y' && length(silaba{1,i})>1 && k~= length(silaba{1,i})
silaba{1,i}(1,k)='L';
end
%Fonema /i/ para el caso 'Y'
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 85
if silaba{1,i}(1,k)== 'y' && length(silaba{1,i})==1
silaba{1,i}(1,k)='i';
end
%Fonema /j/ para el caso 'Y' al final de la palabra
if silaba{1,i}(1,k)== 'y' && i==length(silaba) && k == length(silaba{1,i})
silaba{1,i}(1,k)='j';
end
%Fonema /j/ para el caso 'io' 'iu'
if k+1 <= length(silaba{1,i}) && silaba{1,i}(1,k)== 'i'
if silaba{1,i}(1,k+1)=='o' || silaba{1,i}(1,k+1)=='u'
silaba{1,i}(1,k)='j';
end
end
%Fonema /j/ para el caso 'ai' 'ei' 'oi'
if k+1 <= length(silaba{1,i}) && silaba{1,i}(1,k+1)== 'i'
if silaba{1,i}(1,k)=='a' || silaba{1,i}(1,k)=='e' || silaba{1,i}(1,k)=='o'
silaba{1,i}(1,k+1)='j';
end
end
%Fonema /J/ para el caso 'ñ'
if silaba{1,i}(1,k)== 'ñ'
silaba{1,i}(1,k)='J';
end
%Fonema /R/ para el caso 'r' al principio de la palabra
if silaba{1,1}(1,1)== 'r'
silaba{1,i}(1,k)='R';
end
%Fonema /R/ para el caso 'rr'
if k+1 <= length(silaba{1,i}) && silaba{1,i}(1,k)== 'r' &&
silaba{1,i}(1,k+1)=='r'
silaba{1,i}= ['R' silaba{1,i}(1,3:length(silaba{1,i}))];
break
end
%Fonema /R/ cuando en la sílaba anterior hay una consonante
if silaba{1,i}(1,1)== 'r'
for l=1:length(letra)
if silaba{1,i-1}(1,length(silaba{1,i-1}))== letra(1,l)
silaba{1,i}(1,1)='R';
end
end
end
%Fonema /w/ para el caso 'ua' 'ue' 'uo'
if k+1 <= length(silaba{1,i}) && silaba{1,i}(1,k)== 'u'
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 86
if silaba{1,i}(1,k+1)=='a' || silaba{1,i}(1,k+1)=='e' ||
silaba{1,i}(1,k+1)=='o' || silaba{1,i}(1,k+1)=='A' || silaba{1,i}(1,k+1)=='E' ||
silaba{1,i}(1,k+1)=='O'
silaba{1,i}(1,k)='w';
end
end
%Fonema /w/ para el caso 'au' 'eu' 'ou'
if k+1 <= length(silaba{1,i}) && silaba{1,i}(1,k+1)== 'u'
if silaba{1,i}(1,k)=='a' || silaba{1,i}(1,k)=='e' || silaba{1,i}(1,k)=='o'
|| silaba{1,i}(1,k+1)=='A' || silaba{1,i}(1,k+1)=='E' || silaba{1,i}(1,k+1)=='O'
silaba{1,i}(1,k+1)='w';
end
end
%Fonema /s/ para los casos 'ci' 'ce'
if silaba{1,i}(1,k)== 'k' && k+1 <= length(silaba{1,i})
if silaba{1,i}(1,k+1)=='i' || silaba{1,i}(1,k+1)=='e' ||
silaba{1,i}(1,k+1)=='í' || silaba{1,i}(1,k+1)=='é'
silaba{1,i}(1,k)='s';
end
end
%Fonema /z/ cuando 's' está al final de la sílaba
if silaba{1,i}(1,length(silaba{1,i}))== 's'
silaba{1,i}(1,length(silaba{1,i}))='z';
end
%Fonema /k/ para el caso 'qu'
if k+1 <= length(silaba{1,i}) && silaba{1,i}(1,k)== 'q' &&
silaba{1,i}(1,k+1)=='u'
silaba{1,i}= ['k' silaba{1,i}(1,3:length(silaba{1,i}))];
break
end
%Fonema /b/ y /B/
if silaba{1,i}(1,k)== 'b'
if i-1 > 0 && silaba{1,i-1}(1,length(silaba{1,i-1}))~='n' && silaba{1,i-
1}(1,length(silaba{1,i-1}))~='m' && silaba{1,i-1}(1,length(silaba{1,i-1}))~='_'
silaba{1,i}(1,k)='B';
end
end
%Fonema /d/ y /D/
if silaba{1,i}(1,k)== 'd'
if i-1 > 0 && silaba{1,i-1}(1,length(silaba{1,i-1}))~='n' && silaba{1,i-
1}(1,length(silaba{1,i-1}))~='m' && silaba{1,i-1}(1,length(silaba{1,i-1}))~='_'
silaba{1,i}(1,k)='D';
end
end
%Fonema /g/ y /G/
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 87
if k+1 <= length(silaba{1,i}) && silaba{1,i}(1,k)== 'g' && silaba{1,i}(1,k+1)~=
'e' && silaba{1,i}(1,k+1)~= 'i'
if i-1 > 0 && silaba{1,i-1}(1,length(silaba{1,i-1}))~='n' && silaba{1,i-
1}(1,length(silaba{1,i-1}))~='m' && silaba{1,i-1}(1,length(silaba{1,i-1}))~='_'
silaba{1,i}(1,k)='G';
end
end
end
end
Anexo 7. Código de la función “periodo”
function [ p,Fo ] = periodo(cell_difonemas)
fs = 44100;
%Realiza la autocorrelacion
[r lags]= xcorr(cell_difonemas);
%Busca los picos de la señal
pks = findpeaks(r);
%Ordena los picos de la señal
orden = sort(pks);
%Segundo valor más grande de correlación
v = orden(1,length(orden)-1);
%Busca la posición de v en r
l=find(r==v);
%Periodo en muestras
p = abs(lags(l));
%Condicional para que no tome los picos que están seguidos
if p < 0.015*(length(cell_difonemas)*2)
for j=2:length(orden)/2
v = orden(1,length(orden)-j);
l=find(r==v);
p = abs(lags(l));
if p > 0.015*(length(cell_difonemas)*2)
break
end
end
end
if p<300
p=450;
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 88
end
%Periodo en tiempo
t=p(1,1)/fs;
%Frecuencia fundamental
Fo=1/t;
end
Anexo 8. Código TD-PSOLA
function [cell_difonemas] = p_sola_pitch( cell_difonemas )
%
%p_sola_pitch Esta función permite ajustar la frecuencia fundamental de
%cada difonema a una frecuencia fundamental promedio de la palabra.
%
%VARIABLES DE LA FUNCIÓN
%
%L = Promedio de la frecuencia
%dif = Vector señal
%N = Tamaño ventana
%Sa = Hop size
%alfa = Factor de compresion o extensión
%Ss = Hop size para reconstruir la señal
%W = Ventana hanning
%Wov = Tamaño de la región de overlap
%It = Número de iteraciones
%
L=mean([cell_difonemas{1:size(cell_difonemas,1),4}]);
%Calcula el alfa para cada difonema
for m2=1:size(cell_difonemas,1)
cell_difonemas{m2,5}=cell_difonemas{m2,4}/L;
end
%Aplica el PSOLA a cada difonema
for t=1:size(cell_difonemas,1)
dif=cell_difonemas{t,2};
%Función para buscar el periodo y la Fo del difonema
[P,Fo]=periodo(dif);
N=2*P(1,1);
Sa=P(1,1);
alfa=cell_difonemas{t,5};
Ss=round(alfa*Sa);
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 89
W=hann(N)';
Wov=N-Ss;
%Busca la posición del pico más grande de la señal en un intervalo de tiempo
[pks,pos]=findpeaks(dif(1:P(1,1)),'SortStr','descend');
It = floor(((length(dif)-pos(1,1)-N)/Sa)+1);
signal_sintesis=zeros(It+2,round(alfa*length(dif)));
%Contadores
i=0;
i2=0;
%Análisis
for k=pos(1,1):Sa:((It)*Sa)
A=dif(1,1+k:N+k);
C=W.*A;
i=i+1;
matriz_bloques{i,1}=C;
end
%Síntesis
signal_sintesis(1,1:pos(1,1)+P(1,1))=dif(1:pos(1,1)+P(1,1)).*W(N+1-
(P(1,1)+pos(1,1)):N);
for i2=1:It
signal_sintesis(i2+1,(Ss*(i2-1))+pos(1,1):N+(Ss*(i2-1))+pos(1,1)-
1)=matriz_bloques{i2,1};
end
signal_sintesis(It+2,(Ss*It)+pos(1,1):length(dif((P(1,1)*It)+pos(1,1):end))+(Ss*It)+pos
(1,1)-1) = ...
dif((P(1,1)*It)+pos(1,1):end).*W(1:length(dif((P(1,1)*It)+pos(1,1):end)));
%Suma de la matriz para obtener la señal final
signal_final=0;
for f=1:It+2
signal_final=signal_final + signal_sintesis(f,:);
end
cell_difonemas{t,6}=signal_final;
end
end
Anexo 9. Código FD-PSOLA
function [ cell_difonemas ] = fd_psola( cell_difonemas )
%
%fd_sola Esta función permite ajustar la frecuencia fundamental de
%cada difonema a una frecuencia fundamental promedio de la palabra por medio del método
FD-PSOLA.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 90
%
%VARIABLES DE LA FUNCIÓN
%
%prom_freq = Promedio de la frecuencia
%dif = Vector señal
%N = Tamaño ventana
%N2 = Mitad del tamaño de la ventana
%Sa = Hop size
%alfa = Factor de compresion o extensión
%W = Ventana hanning
%L = Tamaño de la señal original
%
%Promedio de la frecuencia
prom_freq=mean([cell_difonemas{1:size(cell_difonemas,1),4}]);
%Calcula el alfa para cada difonema
for m2=1:size(cell_difonemas,1)
cell_difonemas{m2,5}=(prom_freq-cell_difonemas{m2,4})/cell_difonemas{m2,4};
if cell_difonemas{m2,5} > 0
cell_difonemas{m2,5}=1+cell_difonemas{m2,5};
end
if cell_difonemas{m2,5} < 0
cell_difonemas{m2,5}=1+cell_difonemas{m2,5};
end
if cell_difonemas{m2,5} > 1.2
cell_difonemas{m2,5}=1.075;
end
if cell_difonemas{m2,5} < 0.8
cell_difonemas{m2,5}=0.925;
end
end
for d=1:size(cell_difonemas,1)
dif=cell_difonemas{d,2};
dif=dif';
Fs=44100;
%Función para buscar El periodo y la Fo del difonema
[P,Fo]=periodo(dif');
N=2*P(1,1);
N2=N/2;
L = length(dif);
Sa=P(1,1);
alfa=cell_difonemas{d,5};
W=hann(N);
dif = [zeros(N, 1); dif; zeros(N-mod(L, Sa),1)];
out_signal = zeros(length(dif),1);
%Contadores
i=0;
i2=1;
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 91
i3=0;
%Inicialización de variables
omega = 2*pi*Sa*(0:N2-1)'/N;
phi0 = zeros(N2, 1);
r0 = zeros(N2, 1);
psi = zeros(N2, 1);
res = zeros(Sa, 1);
pin = 0;
pout = 0;
pend = length(dif)-N;
while pin<pend
%Multiplicación de cada segmento de la señal por la ventana
grain = dif(pin+1:pin+N).*W;
%FFT, magnitud y fase
fc =fft(fftshift(grain));
f = fc(1:N2);
r = abs(f);
phi = angle(f);
%Unwrap fase para obtener el incremento de la fase
delta_phi = omega + princarg(phi - phi0-omega);
delta_r = (r-r0)/Sa;
%Multiplicación de la fase por el alfa
delta_psi = alfa*delta_phi/Sa;
%Síntesis
for k = 1:Sa
r0 = r0 + delta_r;
psi = psi + delta_psi;
res(k) = r0'*cos(psi);
end
%Actualización de variables
phi0 = phi;
r0 = r;
psi = princarg(psi);
out_signal(pout+1:pout+Sa) = out_signal(pout+1:pout+Sa)+res;
pin = pin + Sa;
pout = pout + Sa;
i2=i2+1;
end
%out_signal = out_signal./max(out_signal);
cell_zeros{1,d}=find(out_signal'==0);
for i3=1:length(cell_zeros{1,d})
resta=cell_zeros{1,d}(1,i3+1)-cell_zeros{1,d}(1,i3);
if resta > 1
break
end
end
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 92
cell_difonemas{d,7}=out_signal(cell_zeros{1,d}(1,i3):cell_zeros{1,d}(1,i3+1),1)';
end
end
Anexo 10. Código concatenación de difonemas
function [ signal_final ] = conct( cell_difonemas )
%conct Esta función permite concatenar todos los difonemas
for i7=1:size(cell_difonemas,1)
vector_tam(1,i7)=length(cell_difonemas{i7,7});
end
vector_tam=sort(vector_tam);
Fs=44100;
N=round((vector_tam(1,1)-5)/2);
N=N*2;
w=hann(N)';
fade_in=w(1:N/2);
fade_out=w((N/2)+1:N);
signal_sintesis=zeros(size(cell_difonemas,1),60000);
tam=0;
%Matriz cross-fade
cell_fade{1,1}= [ones(1,length(cell_difonemas{1,7}(1:end-(N/2)))) fade_out];
for d=2:size(cell_difonemas,1)-1
centro=ones(1,length(cell_difonemas{d,7}(((N/2)+1):end-(N/2))));
cell_fade{d,1}= [fade_in centro fade_out];
end
cell_fade{size(cell_difonemas,1),1}= [fade_in
ones(1,length(cell_difonemas{size(cell_difonemas,1),7}((N/2)+1:end)))];
signal_sintesis(1,1:length(cell_difonemas{1,7}))=cell_difonemas{1,7}.*cell_fade{1,1};
for i2=2:size(cell_difonemas,1)-1
signal_sintesis(i2,tam+length(cell_difonemas{i2-1,7})-
(N/2)+1:length(cell_difonemas{i2,7})+tam+length(cell_difonemas{i2-1,7})-(N/2))=...
cell_difonemas{i2,7}.*cell_fade{i2,1};
tam=tam+length(cell_difonemas{i2-1,7})-(N/2);
end
signal_sintesis(size(cell_difonemas,1),tam+length(cell_difonemas{size(cell_difonemas,1)
-1,7})-
(N/2)+1:length(cell_difonemas{size(cell_difonemas,1),7})+tam+length(cell_difonemas{size
(cell_difonemas,1)-1,7})-(N/2))=...
cell_difonemas{size(cell_difonemas,1),7}.*cell_fade{size(cell_difonemas,1),1};
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 93
signal=0;
for f=1:size(cell_difonemas,1)
signal=signal + signal_sintesis(f,:);
end
C=find(signal==0);
for i=1:length(C)
if i+4 > length(C)
break
end
if C(1,i+1) == C(1,i)+1 && C(1,i+2) == C(1,i)+2 && C(1,i+3) == C(1,i)+3 && C(1,i+4)
== C(1,i)+4 && C(1,i+5) == C(1,i)+5 && C(1,i+6) == C(1,i)+6 && C(1,i+7) == C(1,i)+7 &&
C(1,i+8) == C(1,i)+8
signal_final= signal(1,1:C(1,i));
break
end
end
end
Anexo 11. Prueba subjetiva
Evaluación de calidad vocal de una voz sintetizada
Este trabajo se centrará específicamente en los convertidores texto a voz, debido que tienen
múltiples utilidades, entre las cuales destacan, la ayuda para personas con necesidades especiales.
Un ejemplo de esto son los lectores de pantalla que permiten el acceso al mundo de la informática
a las personas con dificultades visuales y los dispositivos con teclados predictivos que permiten
que las personas con dificultades en la producción del habla puedan expresar lo que quieren decir.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 94
Se desarrolla un prototipo de convertidor texto a voz, el cual se diseña con el objetivo de comparar
dos métodos que se utilizan en la etapa final del proceso, estos tienen una influencia directa en la
naturalidad de la voz final, logrando que suene con un tono más uniforme y evitando sonidos
molestos que dificulten el entendimiento.
Usted va a participar en un experimento para evaluar la calidad de voz sintetizada del convertidor,
estará expuesto a una secuencia de audios que escuchará a través de un monitor situado a un metro
de distancia frente a usted y se reproducirán a un nivel de presión sonora de 60 dB(A), este nivel
no es perjudicial para el ser humano y corresponde a un nivel de voz de conversación normal. Esta
prueba se realiza en el estudio B de la universidad de San Buenaventura - seccional Medellín. Los
participantes no requieren de ninguna característica especial, simplemente que no hayan estado
expuestos a fuerte ruido en la última hora. Serán 32 personas que realizarán la prueba entre
estudiantes y docentes de la universidad.
Con los resultados de esta prueba se realizará un análisis estadístico sobre cuál de los dos métodos
tiene mejores características que aportan calidad vocal.
Hasta el momento en la universidad San Buenaventura Medellín no se ha desarrollado ningún tema
que aborde la síntesis del habla, por tal razón este proyecto de grado podría ser el comienzo de la
inclusión de esta temática, y el desarrollo de un convertidor texto a voz podría servir como base
para generaciones futuras que quieran seguir esta línea de investigación y que quieran abordar de
una forma más profunda las tecnologías del habla.
Las características que se evaluarán están descritas a continuación:
Esfuerzo de escucha: su respuesta debe indicar el grado de esfuerzo que se requeriría para
comprender la esencia del mensaje.
Nitidez: evalúe la claridad que encuentra en la pronunciación (si puede distinguir bien los
sonidos).
Aceptación: indique si la voz que escucha sería aceptable para algún tipo de servicio
comercial (contestadora automatica, ayuda para personas con dificultades en el habla,
ayuda para personas con dificultades visuales, entre otros).
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 95
Dificultades de comprensión: indique en qué medida las palabras del mensaje eran
difíciles de entender.
La prueba comenzará con dos mensajes de práctica, para que se familiarice con la escucha y con
el cuestionario de contestación. Habrá un descanso después de estos dos mensajes, para permitirle
solicitar ayuda si tiene algún problema.
La prueba consiste en dos etapas, la primera es una prueba escrita donde escuchará dos frases y a
medida que avance el audio deberá escribir en la hoja de respuestas la información que se solicita
para comprobar la comprensión del mensaje. Solo tendrá una oportunidad de escuchar cada frase,
por lo tanto, debe estar atento a la información solicitada.
Escuchará dos tipos de mensajes: mensajes relacionados con el pedido que realiza una persona con
discapacidad y mensajes relacionados con la información del tráfico ferroviario. Un ejemplo de
cada tipo de mensaje es el siguiente:
Buenos días Andrés, necesito zapatos negros de talla 39 y un pantalón talla S, solo cuento
con $ 150.000 para la compra.
El tren número 4119 procedente de Vitoria tiene su hora de llegada a las 12:23, andén 8,
vía H.
En la segunda parte, deberá responder unas preguntas indicando una sola respuesta. La primera
pregunta se responde en base a los audios escuchados para la parte escrita. Luego para la segunda
y tercera pregunta, escuchará una secuencia de palabras que corresponden a la voz grabada de un
locutor, dicha secuencia será un audio de referencia, luego escuchará otra secuencia de palabras
pero sintetizadas por el convertidor texto a voz. Después de escuchar estas dos secuencias deberá
contestar la pregunta comparando el audio del método con el audio de referencia. Para la cuarta
pregunta no deberá escuchar un audio de referencia, solamente escuchará el audio sintetizado y
responderá de acuerdo a su opinión.
Nota: recuerde que debe contestar de acuerdo a los parámetros que se pide evaluar, por favor no
tenga en cuenta la entonación, ni la intención en la voz del audio de referencia, ya que este
convertidor no contempla estos parámetros.
Gracias por su participación.
CUESTIONARIO
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 96
1. Dificultades de comprensión
¿Ha encontrado algunas palabras difíciles de entender?
1. Nunca
2. Raramente
3. De vez en cuando
4. A menudo
5. Todo el tiempo
2. Esfuerzo de escucha
¿Cómo describiría usted el esfuerzo de escucha para entender el mensaje?
1. Descanso absoluto (ningún esfuerzo)
2. Atención necesaria (esfuerzo requerido no apreciable)
3. Esfuerzo moderado
4. Esfuerzo considerable
5. Significado incomprensible a pesar de todos los esfuerzos posibles
3. Nitidez
¿Eran nítidos los sonidos? (recuerde que la nitidez evalúa la claridad que encuentra en la
pronunciación, es decir, si puede distinguir bien los sonidos)
1. Si, muy claros
2. Si, suficientemente claros
3. Medianamente claros
4. No, no muy claros
5. No, en absoluto
4. Aceptación
¿Piensa que esta voz podría utilizarse para algún tipo de servicio comercial como una
contestadora automática o servicios de ayuda para personas con dificultades en el habla?
1. Si, para cualquiera de los servicios.
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 97
2. Sí, pero solo podría usarse en servicios comerciales.
3. Sí, pero solo podría usarse en servicios de ayuda para personas con dificultades
en el habla o dificultades visuales.
4. No, para ninguno de los servicios.
Prueba escrita para el método ____
Frase No. 1 Frase No. 2
Tren No. Nombre
Origen o destino Color
Horario Talla zapatos
Andén Talla pantalón
Vía Dinero
Tabla de respuesta método ___
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 98
Marque con una “X” la respuesta que corresponde a cada pregunta.
Escala PREGUNTA
1 2 3 4
1
2
3
4
5
Anexo 12. Espectrogramas
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR… 99
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR…
100
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR…
101
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR…
102
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR…
103
DESARROLLO DE UN PROTOTIPO DE CONVERTIDOR…
104