Síntesis de voz

En las últimas versiones e Revolution estas funcionalidades ya vienen incorporadas, pero mientras se generaliza su disponibilidad a todas las plataformas y por si acaso no nos sirven vamos a aventurarnos por el campo de la síntesis y reconocimiento con Festival.

Síntesis de voz

Es posible utilizar herramientas como Festival, si su sistema operativo es competente ... Esta herramienta es un sistema de síntesis de voz de propósito general y ha sido desarrollada por Alan W Black, Richard Caley y Paul Taylor, del Centre for Speech Technology Research (University of Edinburgh) y que puede encontrar en su sitio Web.

Supuesto que está disponible esta funcionalidad en el sistema, nos queda poco más que esperar un texto que leer y pasárselo a la aplicación encargada de ello. Utilizaremos las ideas expuestas en el apartado la sección de nombre Procesos en Capítulo 6 sobre cómo ejecutar una aplicación externa y diseñaremos un sencillo interfaz como el que se muestra en la Figura 8-13, que para el caso bastará.

De este modo el usuario tiene una pequeña ayuda (o recordatorio de para qué sirve y cómo se utiliza) realizada con un campo de texto (cuyas propiedasdes han sido establecidas para que sirva como etiqueta - label-) que el usuario no puede modificar y que le llevará a fijar su atención en el campo inferior:

laMaquinaDiu
.

Figura 8-13. Interfaz para festival™ realizado con dos campos de textos.

En este, escribe un texto y al utilizar la tecla Intro, para distinguirla del Return que le permita crear saltos de línea, se da paso al proceso de lectura del mismo por la máquina de síntesis de voz escogida en nuestro diseño. Para simplificar este código sólo la última frase (línea) se "lee" y se enmascaran ciertos signos ortográficos que Festival procura leer.

He dejado la pronunciación inglesa que es la de por defecto, así me sirve para practicar un poco de este idioma, pero existen más posibilidades.

on enterInField
  set cursor to watch 
  put the last line of the text of field "laMaquinaDiu" into frase
  
  replace "'" with "\'" in frase
  replace quote with "\" & quote in frase
  
  put shell ("echo " & frase & " | festival --tts" ) into varAux
  put frase & return & "[" & the long internet date & "]" && varAux
end enterInField
                      

A partir de este ejemplo, el usuario puede dar rienda suelta a su imaginación construyendo una aplicación más compleja que, por ejemplo, lea todas las líneas, permita escoger el idioma para leerlas, marque las pausas correspondientes entre una frase y la siguiente o entre párrafos, etc.

Nota: El siguiente paso óbvio es ser capaz de leer un texto, para ello habrá que separar las frases y lanzar para cada una de ellas el proceso visto ... No voy a ir más allá del sencillo código anterior, puesto que aplicaciones como el KMouth presentes en KDE permiten ver los próximos pasos que este entorno está dando en esta dirección.

De hecho, las novedades sobre la próxima versión de este entorno gráfico avanzan la estabilización de un interfaz para voz que incluye aplicaciones como KSayIt que se encargarán de leer textos "grandes o complejos".

Yo me voy a esperar a verlo en funcionamiento, que esta gente son más rápidos y mejores que yo.