1. INTRODUCCIÓN

El objetivo del proyecto es el estudio y aplicación de los motores de síntesis del habla, así como la adaptación de textos de diferente procedencia para ser automáticamente adecuados y leídos.

Las aplicaciones de la síntesis del habla pueden ser diversas, desde la lectura de obras literarias, hasta reforzar información visual, como puedan ser los números de los turnos de un establecimiento o entidad, o los horarios y destinos en estaciones de medios de transporte. Pero esto es de vital importancia en el caso de las personas invidentes, cuando la información auditiva deja de ser un complemento para ser muchas veces la única de que se dispone. Un aspecto crucial para ellas es el del acceso a la información, pues mayormente sólo tienen acceso a los medios auditivos, principalmente la radio. Así pues una importante aplicación es la de abrir el acceso a la prensa de los medios digitales escritos y es en este sentido en el que se centrará principalmente el estudio del proyecto. Siempre utilizando software libre, defendiendo el derecho a la libre información.

El resultado principal del estudio será la creación de una aplicación que tras ejecutarse obtenga las noticias del día de la o las webs previamente indicadas y automáticamente las convierta a ficheros convenientemente preparados para su interpretación con  una voz sintetizada. Para esto vamos a determinar cómo resolveremos las siguientes cuatro cuestiones: Cómo se obtendrán las noticias; cómo se prepararán estas para ser leídas; cómo serán interpretadas mediante voz; y cómo se integrará todo esto en una aplicación.

Para la obtención de noticias utilizaremos la sindicación mediante RSS. El RSS (Really Simple Sindication) proporciona un mecanismo para obtener archivos de texto formateados. Estos archivos, aunque son usados mayoritariamente para mostrar su contenido en otras webs y aplicaciones, podemos utilizarlos para analizarlos y derivar de ellos archivos preparados para ser leídos. El hecho de que los ficheros de los RSS tengan formato de etiquetas XML nos facilitará la tarea de desglose de éstos, así como la automatización de su conversión a otro formato adecuado para la lectura de motores de síntesis; Este formato será SABLE.

SABLE es un lenguaje de marcado basado en XML, desarrollado por la universidad de Edimburgo en colaboración con Sun, ATT y Bell Labs, que nace con la intención de convertirse en un estándar de ficheros de representación de la síntesis TTS (Text To Speech, texto a habla). Fue creado a partir de tres lenguajes de marcado anteriores: SSML (Speech Síntesis Markup Language), STML (Skunk Template Markup Language) y JSML (Java Speech Markup Language), desarrolladas por el consorcio W3C.



Este lenguaje permite controlar aspectos de la lectura como la voz utilizada, la velocidad, el volumen, la entonación y las pausas, con lo cual proporciona unos mecanismos básicos para humanizar en lo posible la lectura sintetizada. Como está basado en etiquetas XML, la conversión a SABLE podrá realizarse bien por código desde funciones de la propia aplicación, o bien mediante un fichero XSLT (eXtensible Stylesheet Language Transformations). XSLT es un estándar del consorcio W3C que proporciona hojas de estilo que permiten transformar documentos basados en etiquetas de marcado en otros. En nuestro caso nos permite convertir los XML provenientes de las sindicaciones RSS en ficheros SABLE, listos para ser interpretados por el motor de síntesis: Festival.

Festival es un motor de síntesis del habla, de libre distribución, desarrollado inicialmente por la Universidad de Edimburgo  pero con importantes aportes posteriores de otros centros de enseñanza. Estuvo concebido originalmente para interpretar textos en inglés, pero posteriormente la comunidad ha extendido su funcionalidad a otros lenguajes incluído el castellano, y ha aportado nuevas voces gracias al proyecto Festvox (un conjunto de herramientas para facilitar la construcción de voces sintéticas). Aunque existen numerosos motores de síntesis, hemos elegido Festival por varios aspectos, como la portabilidad, pues en teoría es compatible con cualquier sistema Unix que utilice el entorno de escritorio Gnome (principalmente Debian, Ubuntu, Red Hat, y Fedora). Además es posible su integración en aplicaciones ya que ofrece librerías para Java y C. Y por último, es interesante por su versatilidad, pues puede interpretar tanto directamente texto plano (utilizando los parámetros por defecto), como ficheros en diversos lenguajes de marcado, como es el caso de nuestro elegido, el SABLE.

Para todo esto crearemos una aplicación en lenguaje C. Este será el lenguaje elegido por su potencia, familiaridad y compatibilidad con las librerías disponibles para el motor de síntesis comentado. La intención es crear una interfaz en la que sea prescindible la información visual, siendo un mero refuerzo, proporcionando una funcionalidad completa mediante la presentación de las opciones disponibles mediante voz sintética y esperando alguna acción por parte del usuario.


2. ESTADO DEL ARTE

	2.1. MARCO

	En la actualidad, tanto la síntesis Text-To-Speech (texto-a-habla), como el reconocimiento Speech-To-Text (habla-a-texto), se hallan considerablemente extendidos en diversos ámbitos de la vida cotidiana en que entre en juego la interacción hombre-máquina. ¿Quién no ha tenido que decir “sí” para elegir una opción, o ha elegido escuchar su saldo telefónico, con una teleoperadora virtual? Lo cierto es que las ventajas de la conversión de doble sentido entre el texto y la voz son innegables. Aunque quizás el ejemplo recién presentado  puede despertar en más de uno cierto espíritu ludita, haciendo pensar que únicamente es un recurso más para ahorrar mano de obra en las compañías, la realidad es que es un avance muy útil y en ocasiones imprescindible en varias tecnologías implantadas hoy en día. Algunos ejemplos actuales nos harán ver esta importancia en los dos ámbitos de aplicación principales:

	-Entornos de trabajo limitados o de distracción impermisible:

 -STT (Speech-To-Text): Por ejemplo, es delicado el uso de la telefonía móvil mientras se conduce un vehículo, donde la posibilidad de marcar por voz un número de teléfono nos evita el riesgo (y delito, dicho sea de paso) de tener que apartar la vista de la carretera y la mano del volante.

 -TTS (Text-To-Speech): Siguiendo con los vehículos, también es importante el texto-a-habla por ejemplo en el tema de los GPS, donde cada vez más éstos nos indican por voz incluso los nombres de las calles que debemos tomar, evitando de nuevo peligrosas distracciones por mirar la pantalla del dispositivo (GPS Navigon, Copilot, Google Maps Navigation, etc).
 Un inciso importante: Quizás este es un buen punto para dejar claro el hecho de que no todo lo que escuchamos de un aparato que “nos habla” es TTS; No es TTS un contestador que nos reproduce ficheros de audio con los dígitos pregrabados del número de teléfono al que llamamos, ni es TTS los GPS que se limitan a reproducir las diez o quince instrucciones pregrabadas típicas de las acciones que debemos realizar en cada situación... Podríamos decir que la gran diferencia es que los mensajes pregrabados son una solución sencilla cuando un número concreto y reducido de respuestas es suficiente, y el TTS en el caso contrario, cuando los mensajes son impredecibles y se deben interpretar dinámicamente conforme van surgiendo.

	-Personas con discapacidades visuales y/o motoras:

 -STT: Por ejemplo las personas con dificultades de movimiento en las manos, tienen a su disposición sistemas de dictado que les permiten plasmar las palabras que van dictando en documentos escritos verificables en tiempo real. Fue especialmente popular el sistema VoiceType de IBM en los años 90, y se ha extendido hasta nuestros no sólo como aplicaciones para los Pcs tradicionales (Express Dictate,...) sino también a otros dispositivos como por ejemplo grabadoras portátiles que almacenan en formato de texto lo que se les dicta por voz (gamas Phillips, Olympus,...).

 -TTS: Las personas invidentes no tienen acceso a la información escrita que ofrece la pantalla del ordenador, por lo que son necesarios programas que interpreten esos textos para que esa información esté a su alcance. A este último ejemplo de la división que hemos propuesto es al que va especialmente destinada la aplicación principal de este proyecto, el lector de noticias “web-a-voz”.
 También es interesante destacar que el uso de TTS no sólo permite que llegue información a la persona discapacitada, sino que en ocasiones lo que permite es que sea la propia persona la que se pueda comunicar con los demás. Es especialmente famoso el caso del astrofísico Stephen Hawking, al cual una traqueotomía le impide hablar y una esclerosis lateral amiotrófica le impide moverse más allá de ligeros gestos con la cabeza. Es con estos gestos con los que, mediante un complejo sistema, selecciona sucesivamente de entre 3.000 palabras para ir componiendo lentamente oraciones que un sintetizador incorporado va leyendo en voz alta. Como curiosidad destacar que la voz de dicho sintetizador utiliza una voz con acento estadounidense, detalle que el doctor, entre bromas, reconoció que inicialmente le disgustó (Stephen Hawking es inglés).
	En el siguiente apartado haremos un repaso por algunos de los mecanismos actuales que se esconden tras los sistemas de síntesis de texto-a-habla.


	2.2. TECNOLOGÍA SUBYACENTE

	Tal y como avanzábamos en la introducción, para que la síntesis del habla sea posible se necesitan dos elementos: el primero, un formato de representación que sirva como entrada, que puede ser desde algo simple como el texto plano, hasta un lenguaje de marcado con parámetros que modifiquen aspectos como la prosodia de la voz. El segundo, un motor de síntesis de texto-a-habla, encargado de interpretar el texto de entrada mediante una voz sintética. Nótese que aunque es habitual encontrar el término “texto-a-voz”, ésta no la consideramos una traducción precisa, siendo el original anglosajón “text-to-speech” (texto-a-habla o texto-a-discurso) y no “text-to-voice”, por lo cual intentaremos utilizar el término que consideramos más preciso.

		2.2.1. LENGUAJES DE MARCADO

- VoiceXML (Voice Extensible Markup Language): Es un estándar del consorcio W3C, basado en etiquetas XML, creado para proporcionar a los desarrolladores de aplicaciones y páginas web un conjunto de etiquetas que sirvan tanto para indicar que se debe sintetizar cierto texto a voz, como para esperar órdenes de voz por parte del usuario que se deban interpretar. Los archivos creados con este formato se procesan mediante un navegador de voz o Voice Browser, de la misma forma que un navegador convencional procesa los archivos HTML. En el caso del texto-a-habla los navegadores de voz pueden, bien reproducir ficheros de audio pregrabados, bien utilizar un motor de síntesis del lenguaje de entre los disponibles. Algunos ejemplos de estos navegadores de voz son el OpenVXI, el JvoiceXML, y el PublicVoiceXML.
	Los navegadores de voz se usan en diferentes aplicaciones como el acceso por voz a bases de datos, recursos de telefonía (p.e. marcación por voz), o acceso por voz al correo electrónico.

- JSML (Java Speech Markup Language): Lenguaje de marcado ideado para suministrar a los sintetizadores de voz ciertos detalles que ayudan a humanizar en lo posible la lectura del texto al que acompañan. Se compone de diversas etiquetas XML que podemos dividir en tres grupos:
Estructurales: Para señalar y separar párrafos y oraciones → <jsml> y <div>.
De producción: Definen propiedades auditivas de la  síntesis → <voice>, <sayas>, <phoneme>, <emphasis>, <break> y <prosody>.
Misceláneos: Controles embebidos en el texto para habilitar controles específicos del sintetizador → <marker> y <engine>.

- SSML (Speech Síntesis Markup Language): Lenguaje de marcado sucesor directo de JSML. Hereda la estuctura de éste y lo complementa con algunas nuevas etiquetas:
<audio>: permite la inserción de ficheros de audio pregrabados.
<paragraph> y <sentence>: nuevas etiquetas estructurales.
<sub>: sustituye un texto por otro para mejorar la pronunciación.
<say-as>: indica que se requiere un modo de lectura diferente del habitual, como por ejemplo ante un formato de fecha.

- STML (Skunk Template Markup Language): Otro lenguaje de marcado de texto para marcar el texto que se suministra a los sintetizadores de voz. El conjunto de etiquetas está prácticamente en su totalidad contenido en su sucesor SABLE, con algunas excepciones como <phonetic> u <omitted>.
	En la sección 4.1 hablaremos del formato SABLE, sucesor de los dos últimos estándares citados (SSML y STML) tal como mostrábamos en la introducción, que es el elegido para la versión inglesa de nuestro programa principal (explicaremos en su momento por qué no para la española).


		2.2.2. MOTORES DE SÍNTESIS DEL HABLA

	En la actualidad existen tres grandes grupos de motores de síntesis del habla:

- Basados en Formantes: Sintetizadores que producen la onda sonora a partir de un modelo acústico variando parámetros físicos como el pitch, sin intervención en ningún momento de segmentos reales de voz humana. Este tipo de sintetizadores tienen sentido en condiciones muy restrictivas de hardware (p.e. sistemas embebidos), pero en general no son usados puesto que producen una voz completamente robotizada.

- Concatenativos: Estos sintetizadores se diferencian de los anteriores en que generan la voz artificial enlazando segmentos pregrabados de un locutor humano. Dentro de esta técnica existen diversas variantes, entre las que se encuentran los sintetizadores basados en “difonemas” cuya unidad mínima es la concatenación de cada par de fonemas, que son grabados y almacenados en una base de datos, y “sintetizadores basados en selección de unidades”, que también registran una base de datos de segmentos pregrabados, pero en este caso no se limitan a difonemas, pudiendo encontrar desde fonemas simples hasta oraciones completas. En este grupo se encuentra nuestro motor escogido, Festival.

- Articulatorios: Este tipo de sintetizadores convierten cadenas de texto en descripciones fonéticas, ayudados por un diccionario de pronunciación, reglas de caracteres-sonidos, ritmo y modelos de entonación. Posteriormente transforman las descripciones fonéticas en parámetros de articulación de bajo nivel para el sintetizador que son usados para generar un modelo de articulación vocal humano produciendo una salida conveniente para los dispositivos de salida de audio.

	A continuación hacemos un repaso de algunos de los motores de síntesis del habla que podemos encontrar en la actualidad:

- Verbio TTS: Motor de síntesis texto-a-habla comercial, propiedad de la española Verbio Speech Tecnologies, que dispone de voces de ambos géneros en varios idiomas. Forma parte de un conjunto de herramientas tanto de TTS como de STT de las que también forman parte:
Verbio ASR: Reconocedor del habla (STT).
Verbio VoiceXML: Navegador de voz (véase el formato VoiceXML).
Verbio Speaker Id: Identificador de propietario de voz como mecanismo de seguridad (acceso a terminales, apertura de puertas, etc).
Verbio WordSpotting: Buscador de palabras clave en ficheros de audio.
Verbio VoiceWeb: Navegación web mediante la voz sin necesidad de usar ratón ni teclado.

- FreeTTS: Motor de libre uso y comercialización, escrito totalmente en JAVA por la Carnegie Mellon University y basado en Flite, un pequeño motor de síntesis en tiempo de ejecución derivado de Festival, que de forma similar a éste sintetiza por concatenación de difonemas. Ofrece compatibilidad con voces inglesas estadounidenses y británicas en ambos géneros, entre ellas las provenientes de los proyectos FestVox de Festival y MBRola. Además soporta parcialmente JSAPI 1.0. Funciona en sistemas Linux, Mac OS/X, Win32 y Solaris. 

- Loquendo TTS: Motor de síntesis comercial creado por la empresa italiana del mismo nombre, propiedad de Telecom Italia Lab, basado en sintetización por selección de unidades. Es un motor de gran calidad y popularidad, especialmente con las lenguas latinas. Forma parte de un conjunto de productos mayor entre los que se encuentran un motor de habla-a-texto y un identificador de propietario de voz.

- GNUSpeech: Sintetizador de voz articulatorio ofrecido con licencia GPL V2, disponible para Linux y para Mac OS/X, que actualmente sólo tiene disponible la lengua inglesa. Lo destacado de este sintetizador es que se basa en un modelo de tubo de resonancia (TRM) imitando el tracto vocal humano para generar los sonidos, que busca alcanzar el máximo realismo teniendo en cuenta el comportamiento de las cavidades nasal y oral, así como la impedancia al aire de la nariz y los labios.

- Nuance Realspeak TTS: Motor de síntesis propiedad de la empresa norteamericana Nuance, basado en la síntesis concatenada por selección de unidades. Forma parte de una gran gama de productos para particulares y empresas. Dispone de un gran abanico de lenguas disponibles.


	Además de estos existen muchos otros motores de voz, como MBRola, eSpeak, SodelsCot, Lernout y Hauspie, NeoSpeech VoiceText o Fonix Speech, entre otros.
	Al igual que hicimos con el formato SABLE, emplazamos la descripción de nuesto motor escogido, el Festival Speech System, a su sección correspondiente (3.1).

		2.2.3. ALGUNOS PROYECTOS DESTACABLES

- DAISY (Digital Accesible Information System): Es el consorcio internacional que promueve la universalización de estándares con un conjunto de características para producir libros hablados digitales, para personas con limitación visual y problemas de acceso a la lectura, que permite que los libros producidos sean consultados, marcados, retomados, y transportados con las mismas ventajas de los libros convencionales. Estos libros se leen con software y hardware específicos que permitan aprovechar las características de navegabilidad a varios niveles que ofrecen: por páginas, frases, marcas, capítulos o subcapítulos.

- Proyecto Voices: Proyecto para difusión de la comunicación en Senegal y Mali, llevado a cabo por el considerado padre de Internet, Tim Berners-Lee, junto con la organización World Wide Web Foundation. El objetivo de este proyecto es ofrecer a las familias y a la juventud de dichos países con pocos conocimientos informáticos una forma de acceder a internet a través de la voz, especialmente a aquellas webs referentes a la agricultura o a la salud, principales preocupaciones en la población de ambos países.

- Proyecto Asterisk: Asterisk es un programa con licencia GPL creado por Mark Spencer, de Digium, que nace con la intención de proporcionar las funcionalidades de una central telefónica hasta ese momento sólo disponibles en sistemas de alto coste, como son: buzón de voz, conferencias, distribución automática de llamadas, y la que nos interesa por el tema que nos ocupa, el IVR.
    IVR (Interactive Voice Response, respuesta de voz interactiva) es un sistema que es capaz de recibir una llamada e interactuar con el humano en los dos sentidos de la comunicación. Por un lado, es capaz de usar un motor de síntesis TTS para leer en voz alta cualquier información disponible en una base de datos. Por otro lado, cuando sea necesario puede procesar respuestas humanas convirtiéndolas a texto con un reconocedor de voz (ASR), típicamente “sí”, “no”, o algún número para seleccionar una opción concreta. En las empresas grandes esta interacción tiene el fin de enrutar la llamada hacia el departamento más adecuado sin necesitar la intervención humana, ahorrando tiempo y personal.
    Uno de los motores de síntesis del habla más utilizados para ser integrados en Asterisk es precisamente Festival, el mismo que hemos elegido nosotros para el presente proyecto.


	2.3. PROPUESTA

	El resultado final de este proyecto será la realización de algunas aplicaciones con el objetivo común de facilitar, principalmente a las personas invidentes o con deficiencias visuales severas, el acceso a información escrita de diversas procedencias mediante la interpretación hablada de ésta con un motor de síntesis del habla, el Festival Speech Synthesis System. Son tres aplicaciones, aunque las dos primeras tienen el mismo objetivo conseguido de dos maneras distintas. Son las siguientes:

- Web-a-Voz: Esta aplicación pretende acceder a los RSS de algunas de las webs de noticias nacionales, para obtener de ellas el texto referente a las noticias, filtrar el contenido que no se debe interpretar y adecuarlas para que el motor de síntesis las lea de la manera más afín posible a como lo haría una persona. Esta versión es en castellano.

- Web-2-Voice: Esta aplicación es la versión inglesa de la arriba mencionada, y aunque el resultado final apreciable es el mismo (con la salvedad del idioma), mostraremos mecanismos alternativos para obtenerlo.

- E-Narrador: La tercera de las aplicaciones propuestas será un lector de documentos. El usuario podrá introducir cuantos documentos desee en una carpeta determinada para que posteriormente en ejecución se ofrezca comenzar a leer el que se desee. La característica particular de este narrador electrónico será la posibilidad de retomar la lectura de cada documento por donde se dejó en la anterior ocasión.
