TTS (Text To Speech ) usando Festival y MBrola en Ubuntu

TTS (Text To Speech ) usando Festival y MBrola en Ubuntu

Vamos a hacer a nuestro equipo en un lector de textos, mi proposito es
utilizar este sistema para aprender a pronunciar oraciones en otros
idiomas, en especial en frances, creo que es una gran herramienta para
ello, posteriormente voy a desarrollar una extensión para Firefox,
para que pueda leerle al usuario, sobre todo para las personas con
problemas visuales y por otro lado estoy ideando un software para
enseñar frances, claro, desarrollado para que se ejecute en Gnome, son
bienvenidos los voluntarios, dejen sus comentarios.

Festival

El nombre completo es Festival Speech Synthesis System, el cual es un
sistema de lo mas completo hecho para convertir texto en sonido y
viceversa, es un proyecto que ya tiene mucho tiempo, se puede
encontrar toda la información necesaria en
http://www.cstr.ed.ac.uk/projects/festival/ y en http://festvox.org.

Para instalarlo en Ubuntu tenemos que tener habilitados los
repositorios extras en el apt y teclear lo siguiente en una terminal.

#$: sudo aptitude install festival festlex-cmu festlex-poslex
festvox-ellpc11k festvox-kallpc16k libestools1.2

Aproximadamente se van a descargar como 40 MB y con esto vamos a tener
todo lo necesario para que pueda hablar nuestro equipo. Ahora vamos a
hacer unas pruebas para sorprendernos.

Vamos a hacer que nos salude en ingles, primero entramos a festival,
donde vamos a trabajar en un entorno de comandos del propopio festival

#$: festival

Vamos a ver algo como esto:

Festival Speech Synthesis System 1.4.3:release Jan 2003
Copyright (C) University of Edinburgh, 1996-2003. All rights reserved.
For details type `(festival_warranty)'
festival>

Ahora vamos a teclear lo necesario para emitir el sonido y escuchar
por primera vez a nuestro equipo. En la linea de comandos escribimos:

festival> (SayText "Hello Mr. MINOMBRE. How are you?")

¿Sorprendidos?, bueno aun queda que nos hable en español, ahora vamos
a salirnos de festival, para hacer esto solo escribimos "quit" y como
pueden ver, los comandos se escriben dentro de los parentesis:

festival> (quit)

Listo ahora vamos a hacer lo mismo pero con la voz en español, para
esto lo único que va a cambiar es mandar llamar festival con la opcion
"--language spanish":

#$: festival --language spanish

Y ahora en los comandos vamos a teclear lo siguiente

festival> (SayText "Hola wey. ¿Como estas canijo?")

Jaja ya se escucha mejor. ¿No? Bueno, todo bien, un ultimo paso para
terminar con festival. Festival se divide en dos partes, los comandos
y el TTS o Text To Speech, hasta ahorita hemos trabajado con puros
comandos, para utilizar el TTS es muy sencillo, vamos primero a crear
un archivo con un texto que querramos que festival lea.

#$: touch textoejemplo
#$: echo "El mejor es el que se parece a una piedra, sin desenvainar
la espada, consigue probar que nadie podra vencerlo" > textoejemplo

Ahora vamos a decirle a festival que lea esto en español:

#$: festival --language spanish --tts textoejemplo

No es nada dificil, ahora solo tenemos que poner nuestros libros en
archivos de texto, y decirle a linux que los lea por nosotros :D

MBrola

MBrola que se lee como 'im' 'brela' en un sentido como 'umbrella' que
es una palabra en ingles que significa sombrilla y no es el nombre de
la empresa que creó al virus de Resident Evil.

El proyecto MBrola fué iniciado por el laboratorio TCTS de la Facultad
Politécnica de Mons en Belgica, puedes ver más información en
http://tcts.fpms.ac.be/synthesis/mbrola.html, te recomiendo que des
click en las banderas que aparecen en la página, pero bueno. ¿Qué es
Mbrola? Tal vez ya haz notado que se oye MUY robotizada la voz que
emite festival, ah pues este proyecto se centra en esto, en mejorar la
pronunciación de festival y de otros sistemas, dejando que la voz se
escuche lo más natural posible, en veces no notas que el que esta
hablando es una aplicación, es por eso que la licencia de este
proyecto es solo para uso no comercial, ni para uso militar. ¡Ojo!
Sobre advertencia no hay engaño.

Bueno, ahora instalemos a MBrola, primero vayamos a
http://tcts.fpms.ac.be/synthesis/mbrola.html y descarguemos el
binario, en el caso para este tutorial es Linux i386 con el archivo
mbr301h.zip y también hay que descargar los archivos de las voces,
estas son las voces que yo recomiendo, tu puedes bajar la(s) que tu
creas convenientes:

us1: American English Female (6.8Mb) -> us1-980512.zip
fr4: French Female (5.4Mb) -> fr4-990521.zip
it4: Italian Female (4.9Mb) -> it4-010926.zip
es2: Spanish Male (5.1Mb) -> es2-989825.zip
mx2: Spanish Mexican Male (3.5Mb) -> mx2.zip

Te recomiendo dejar todos estos archivos en dos directorios distintos,
uno para MBrola y otro para las voces.

Para instalar MBrola necesitamos tener instalado unzip, si no sabemos
si lo tenemos basta con teclear lo siguiente:

#$: unzip

Si no regresa un mensaje de que no existe el comando entonces lo
instalamos con lo siguiente:

#$: sudo aptitude install unzip

Bueno, una vez que ya lo tenemos instalado, vamos a extraer primero lo
de archivo mbrXXXh.zip (XXX es la version que hayas descargado en mi
caso es 301):

#$: unzip mbr301h.zip

Esto nos va a dejar 7 archivos, te recomiendo que leas el archivo
readme.txt solo para una mayor referencia.

Tenemos ahora que mover el archivo mbrola-linux-i386 al directorio
/usr/bin y dejarlo con el nombre de mbrola, teclemos lo siguiente para
hacerlo:

#$: sudo mv mbrola-linux-i386 /usr/bin/mbrola

Hay que descargar otro archivo de la siguiente direccion
http://www.cstr.ed.ac.uk/downloads/festival/1.95/festvox_us1.tar.gz y
extraemos su contenido:

#$: tar -zxvf festvox_us1.tar.gz

Nos va a crear un directorio con varios subdirectorios dentro, nos
vamos hasta el subdirectorio festival/lib/voices/english

#$: cd festival/lib/voices/english/

Ahora copiamos el directorio us1_mbrola/ a /usr/share/festival/voices/english/

#$ sudo cp -rf * /usr/share/festival/voices/english/

Ahora extraemos los archivos del zip de voz us1

#$: unzip us1-980512.zip

Y copiamos el directorio us1 a /usr/share/festival/voices/english/us1_mbrola/

#$: sudo cp -Rf us1 /usr/share/festival/voices/english/us1_mbrola/

Hay que probar que todo va muy bien, entremos a festival y usemoslo
con esta nueva voz:

#$: festival
festival> (voice_us1_mbrola)
festival> (SayText "I am a machine, but I look like a real women")

Vamos a dejar por el momento esta voz como la predefinida:

#$: sudo gnome-text-editor /etc/festival.scm

Agregamos al final la linea:

(set! voice_default 'voice_us1_mbrola)

Lo guardamos y reiniciamos el servidor de festival:

#$: sudo /etc/init.d/festival restart

¿Que tal? Nada mal para ser una computadora, bueno ahora falta lo mas
importante, instalar la voz en español y en frances.

Aun no se como hacerle para poner la nueva voz en frances en festival
y usando mbrola, lo dejamos para otra ocasión, pero vamos a hacer otro
método, tenemos que descargar el archivo
http://download.gna.org/lliaphon/stable/lliaphon-0.4.tar.gz extraemos
el contenido, y lo instalamos:

#$: tar -zxvf lliaphon-0.4.tar.gz
#$: cd lliaphon-0.4
#$: ./configure
#$: make
#$: sudo make install

Creamos una carpeta que se llame "mbrola" en /opt

#$: sudo mkdir /opt/mbrola

Copiamos la carpeta que contiene la voz en frances que descargamos previamente.

#$: mkdir fr4
#$: mv fr4-990521.zip fr4/
#$: cd fr4
#$: unzip fr4-990521.zip
#$: sudo cp -Rf fr4 /opt/mbrola/

Creamos un archivo que se llame dire y le ponemos el siguiente contenido

#$: gnome-text-editor dire

-------------- CONTENIDO --------------
#!/bin/sh

#voix par défaut si argument 2 absent
if [ ! "$2" ]
then
DefVoice=fr4/fr4
else
DefVoice=$2
fi

MBROLA_VOICE=/opt/mbrola/$DefVoice

#tranformation du texte par lliaphon pour mbrola
echo $1 > /tmp/lliaphon_dire
/usr/local/bin/lliaphon /tmp/lliaphon_dire

/usr/bin/mbrola -I /usr/local/share/lliaphon/initfile.lia $MBROLA_VOICE /tmp/lliaphon_dire.ola -.au |
aplay -t au -

rm /tmp/lliaphon_dire
rm /tmp/lliaphon_dire.ola
-------------- FIN --------------

Lo guardamos, le cambiamos los permisos para que sea un ejecutable y
lo movemos a /usr/local/bin

#$: chmod 755 dire
#$: sudo mv dire /usr/local/bin/

Por último nos queda hacer una prueba

#$: dire "Bonjour, Au revoir"

Paquetes extras recomendables:

ksayit
kttsd
kmouth
gnopernicus

Referencias:

[En] http://www.cstr.ed.ac.uk/projects/festival/
[En] http://festvox.org
[En] http://festvox.org/voicedemos.html
[En] http://tcts.fpms.ac.be/synthesis/mbrola.html
[En] http://research.iiit.ac.in/~smr/cgi-bin/blosxom.cgi/blogs/hacking/1135586734.html
[En] http://www.speech.cs.cmu.edu/
[En] http://www.cs.cmu.edu/~awb/festival_demos/bvif.html
[En] http://www.cslu.ogi.edu/tts/
[Fr] http://www.kik-it.com/?RUB=1&debut=7
[En] http://tcts.fpms.ac.be/synthesis/mbrola.html
[En] http://download.gna.org/lliaphon/

26 comentarios:

Anónimo dijo...

hola!
he intentado instalar el festival pero no sé porque razón no me aparece en los repositorios
te paso mi sources.list
deb cdrom:[Ubuntu 5.10 _Breezy Badger_ - Release i386 (20051012)]/ breezy main restricted


deb http://es.archive.ubuntu.com/ubuntu breezy main restricted
deb-src http://es.archive.ubuntu.com/ubuntu breezy main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://es.archive.ubuntu.com/ubuntu breezy-updates main restricted
deb-src http://es.archive.ubuntu.com/ubuntu breezy-updates main restricted

## Uncomment the following two lines to add software from the 'universe'
## repository.
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the Ubuntu security
## team.
# deb http://es.archive.ubuntu.com/ubuntu breezy universe
# deb-src http://es.archive.ubuntu.com/ubuntu breezy universe

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://es.archive.ubuntu.com/ubuntu breezy-backports main restricted universe multiverse
# deb-src http://es.archive.ubuntu.com/ubuntu breezy-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu breezy-security main restricted
deb-src http://security.ubuntu.com/ubuntu breezy-security main restricted

# deb http://security.ubuntu.com/ubuntu breezy-security universe
# deb-src http://security.ubuntu.com/ubuntu breezy-security universe

#activados por min, o de arriba é orixinal
deb http://es.archive.ubuntu.com/ubuntu breezy-backports main restricted universe multiverse
deb-src http://es.archive.ubuntu.com/ubuntu breezy-backports main restricted universe multiverse

deb http://es.archive.ubuntu.com/ubuntu breezy universe
deb-src http://es.archive.ubuntu.com/ubuntu breezy universe

ElAlecs dijo...

En mi archivo sources.list yo tengo:

------------ sources.list ------------

deb http://mx.archive.ubuntu.com/ubuntu breezy main restricted
deb-src http://mx.archive.ubuntu.com/ubuntu breezy main restricted

deb http://mx.archive.ubuntu.com/ubuntu breezy-updates main restricted
deb-src http://mx.archive.ubuntu.com/ubuntu breezy-updates main restricted

deb http://mx.archive.ubuntu.com/ubuntu breezy universe
deb http://mx.archive.ubuntu.com/ubuntu breezy multiverse
deb-src http://mx.archive.ubuntu.com/ubuntu breezy universe

deb http://mx.archive.ubuntu.com/ubuntu breezy-backports main restricted universe multiverse
deb-src http://mx.archive.ubuntu.com/ubuntu breezy-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu breezy-security main restricted
deb-src http://security.ubuntu.com/ubuntu breezy-security main restricted

deb http://security.ubuntu.com/ubuntu breezy-security universe
deb-src http://security.ubuntu.com/ubuntu breezy-security universe

------------ sources.list ------------

Espero te sirva.

Anónimo dijo...

Voy a intentar seguirte los pasos.

Mi sistema es un debian, y mi conexion es lenta (modem), por lo que dejare bajando todo en la noche para intentarlo mañana.

y espero luego poder pasar mis archivos pasados a voz a un archivo ogg (o mp3), para poderlo oir comodamente en la palm

muy interesante, si tengo broncasespero poder hecharte un cable (por aca).

pues deja te alcanzo primero, para empezaer con dudas

Anónimo dijo...

ta bueno el tutorial, pero te comiste como poner festival con las voces en español de mbrola, dijiste que hablarias como ponerlo en frances y español, llegaste hasta el frances no ma po. bueno ojala lo arregles,saludos.

Anónimo dijo...

Hola, gracias por el tutorial. despuás de instalar festival en ubuntu funciona sin problemas en inglés, pero no carga los variables en otros idiomas marca lo siguiente.

$ festival --language spanish
SIOD ERROR: unbound variable : voice_el_diphone
festival: fatal error exiting

Alguna idea

Anónimo dijo...

Hola,

Antes de nada felicitarte por esta guia pues está escrito con mucha claridad. Me fue de gran ayuda para empezar a trastear con esto. Tal y como anotaron en el mensaje anterior, la modificación de la voz en español no se llegó a comentar tal y como decía la guia. ¿Vas a escribirla en la bitácora?

Un saludo, y muchas gracias.

ElAlecs dijo...

No se preocupen, en las próximas semanas voy a seguir con el tutorial para tener a Festival y MBrola trabajando en español y pronto ya voy a comenzar con la extensión para Firefox.

No van a ser meses, yo creo que en 2 semanas ya esta este tutorial completo, saludos y gracias por sus comentarios.

He igual si estan interesados en algún otro tipo de tutoriales, solo pidanlos en aztkgeek arroba gmail punto com o dejando un comentario aqui

Anónimo dijo...

hola, bien el tutorial... xo, algo nuevo acerca de voz en español de mbrola para festival? he estado buscando y no he conseguido encontrar nada, tu conseguiste algo?

Anónimo dijo...

hola, me gustaria saber donde puedo encontrar los pasos a seguir para instalar las voces en español de MBROLA.

me gustaria que me ayudaran, ya que en veradad lo necesito para poder desarrollar mi tesis de la U.

Festival es la base de mi proyeto, porque deseo desarrollar un sintetizador de voz y necesito guiarme con FESTIVAL TTS.

gracias por su atencion.

mi correo es faramirt@gmail.com

Anónimo dijo...

Se ha publicado ya c´como incluir las voces de mbrola en español para festival? donde? mi enhorabuena por el artículo

Anónimo dijo...

he seguido interesadísimo tu tutorial. y justo me doy cuenta al final de que falta cómo ponerlo en español.
Supongo q te aburriste de escribir, pues el tutorial es muy completo, pero cumple con lo prometido, complétalo por favor! es muy útil

Anónimo dijo...

He intentado instalar festival, pero al momento de ejecuta me sale el siguiente error.. como puedo corregirlo..??


festival> (SayText "Hello Mr. MINOMBRE. How are you?")
Linux: can't open /dev/dsp
'#< Utterance 0xb721f758 >'
festival> (quit)

ElAlecs dijo...

Si tienes instalado el audio en tu equipo??

Julz Van Kepler dijo...

Pues yo uso esddsp junto con festival para poder reproducir comodamente mientras oigo xmms y mi amsn asi:

$ echo "hellow i am julio" | esddsp festival --tts

y eso funciona perfectamente.. ya que utilizo esd para reproducir casi cualquier cosa :D

bytes

pd: lo unico que no se es como subir el volumen del esd al momento de reproducir, ya que la musica se oye muy fuerte y casi no se distingue festival...

Anónimo dijo...

a mi me sale un error que dice


festival> (SayText "Hello Mr. MINOMBRE. How are you?")
Linux: can't open /dev/dsp
'#< Utterance 0xb721f758 >'
festival> (quit)

y tengo instalado el audio suena perfectamente el problema es que tengo el audio integrado y una tarjeta de sonido ¿que puedo hacer para escuchar ?

ElAlecs dijo...

El problema que debes tener es que tienes abierto algún reproductor de música o el mismo firefox o algún navegador con el plugin de flash, ese problema ocurre por que ya existe otra aplicación usando y acaparando el dispositivo de audio, es un problema que ocurre normalmente, intenta ejecutar de nuevo el TTS cerrando todo lo que podría ocasionar ese problema, si quieres abrir por ejemplo firefox con audio y que no te de ese tipo de problemas ejecutalo anteponiendo aoss, por ejemplo

aoss firefox

en lugar de solo firefox

saludos

Anónimo dijo...

Hola,

A mi tambien se me presento el mismo problema de "anonimo"

festival> (SayText "Hello Mr. MINOMBRE. How are you?")
Linux: can't open /dev/dsp
'#< Utterance 0xb721f758 >'
festival> (quit)

Pero sabes lo que hice, corte por lo sano y busque en Synaptic los paquetes de festival, simplemente puse "festival" en search y me aparecieron los paquetes de festival, los cuales los marque para su instalacion desde Synaptic, luego le dí "Start" y me instaló todos los paquetes necesarios por Festival.

Una vez terminado me fui a la linea de comandos de festival y todo funciono perfecto. Muy simple con Synaptic.

Saludos!!

RdelaHoz

Anónimo dijo...

Hola.

Puedes configurar en festival que la voz sea de hombre o de mujer?

Unknown dijo...

I think that

sudo cp -Rf us1 /usr/share/festival/voices/english/us1_mbrola

Should be

sudo cp -Rf us1_mbrola/ /usr/share/festival/voices/english/

Thank you! I am following your guide using Babelfish as I do not understand Spanish. :-)

Anónimo dijo...

hola..he estado leyendo acerca de festival, me parecio muy interesante para una materia q curso en ing, comunicaciones y electronica especialidad acustica en la esime-ipn.mexico, y he leido en tu blog q se ejecuta o se instala en ubuntu, la pregunta es : se puede instalar y ejecutar bajos windows"??
espero su ayuda.

Anónimo dijo...

Hola!

He estado buscando información para usar festival con mbrola en español pero no he podido encontrar algo concreto, podrias ayudarme??

Anónimo dijo...

Excelente tutorial hermano sirvio bastante; tienes información para realizar la instalación de mbrola en español? no logro encontrar nada en la red.
Mi correo es: hectorjlr@hotmail.com
Gracias y saludos!!!

Anónimo dijo...

Estuvo buscando como hacer para instalar la voz de castellano y portugues de MBROLA, y enseguida integrarla con el FESTIVAL, y tengo algunas aclaraciones a ahorrar a quien lo esté buscando igual:

- De momento aún no es posible colocar todas las voces del MBROLA en el Festival.
- Hay procedimientos conocidos y verificados sobre como utilizar FESTVOX con las seguientes voces MBROLA:
INGLES
CHECO
ALEMAN
Los procedimientos pueden ser obtidos buscando en este link: http://docs.kde.org/development/en/kdeaccessibility/kttsd/configuration.html
ver el apartado "Using Festival with MBROLA"
- Para las demás voces (como el portugues y el castellano), he buscado mucho y no he encontrado forma.

- En todo caso, aunque no sea posible utilizar todas las voces del MBROLA, existe un packete debian de una voz en castellano para el FESTIVAL, desarrollada por festvox:
#$ sudo apt-get install festvox-ellpc11k
Este paquete es de una voz generada por festvox, o sea, una alternativa a la voz del MBROLA castellano (dicen que no suena tan bien, no he llegado a comparar)
Para utilizar: $ echo "hola hombre" | festival --tts --language spanish

Anónimo dijo...

hola..!!
Quisiera que me ayudaras con información de como usar el TTS FESTIVAL desde JAVA. Que necesito instalar, ejemplos, etc.
Gracias

Anónimo dijo...

Aqui hay un proyecto parecido lo interesante es que puedes hacer algunas pruebas en linea

http://mary.dfki.de/online-demos/online-speech-synthesis/speech_synthesis

Estoy interesado en el plug in para firefox, debe ser divertido seleccionar una porcion de texto hacer click derecho y activar festival con la seleccion como argumento de entrada

Unknown dijo...

El problema de :

"Linux: can't open /dev/dsp"

Se soluciona con la siguiente línea en la terminal :

printf ";use ALSA\n(Parameter.set 'Audio_Method 'Audio_Command)\n(Parameter.set 'Audio_Command \"aplay -q -c 1 -t raw -f s16 -r \$SR \$FILE\")\n" > ~/.festivalrc

yo lo probé y me funcionó

Publicar un comentario