Gracias por comentar.

Este Blog cuenta con detección automática de spam para los comentarios. Además, hasta que yo no los lea no se publicaran...

Buscar en este blog

jueves, 18 de diciembre de 2008

Festival, un conversor de texto a voz.

Hace tres semanas, o mas, estuve "jugando" con un conversor de texto a voz llamado festival. Esta claro que este programa esta hecho para fines mas serios, pero yo me divertí mucho haciendo hablar a mi PC y lamentablemente ahora se me esta olvidando que hice y como así que voy a intentar ponerlo aquí antes de que se me olvide del todo.

Para probarlo primero tenemos que instalar festival y es muy fácil. Esta en los repositorios de Ubuntu. En un terminal pones:

sudo apt-get install festival

Como queremos que nos hable en un español aceptable nos bajamos las voces para este programa de la distribución Guadalinex. Haz clic sobre el paquete .deb para que se empiece a bajar:
Las instalamos y ahora decidimos la voz que queremos usar. Por ejemplo, si queremos usar la voz de Pedro, la masculina, en un Terminal ponemos lo que sigue:

festival

Nos debería salir algo parecido a esto:

Festival Speech Synthesis System 1.96:beta July 2004

Copyright (C) University of Edinburgh, 1996-2004. All rights reserved.

For details type `(festival_warranty)'

festival> 

Ponemos esto:

(voice_JuntaDeAndalucia_es_pa_diphone)

Vamos a probarlo.

(SayText "Hola, soy Pedro") 

Que queremos probar la voz femenina, ponemos esto:

(voice_JuntaDeAndalucia_es_sf_diphone)

Vamos a probarla.

(SayText "Hola, soy Silvia") 

Salimos de festival con:

(quit)

Se puede hacer que lea directamente desde el Terminal de esta forma:

echo "Un saludo a todos desde Vijamaro y Linux" | festival --tts

Ahora tenemos que solucionar lo de los acentos. Si intentas que festival lea un texto con acentos, se liara y te deletreara la palabra. Para evitarlo pasamos el texto de utf-8 a iso-8859-1 con "| iconv -f utf-8 -t iso-8859-1". Para probarlo tecleamos en el Terminal lo que sigue:

echo "El miércoles es el cuarto día de la semana." | festival --tts

Que mal ¿verdad?. Lo arreglamos así:

echo "El miércoles es el cuarto día de la semana." | iconv -f utf-8 -t iso-8859-1 | festival --tts

Mejor.
Para que el PC nos diga la fecha y la hora seria así:

echo & date +"%H horas y %M minutos del %A %d d %B d %Y" | iconv -f utf-8 -t iso-8859-1  | festival --tts

Para que nos lea un archivo:

festival --tts mi_archivo_de_texto.txt

A partir de ahora a usar la imaginación.

Pagina de las voces en español de Guadalinex: http://forja.guadalinex.org/repositorio/frs/?group_id=21&release_id=123

En España el Miércoles no es el "cuarto" día de la semana. XD

Relacionado:
Un pequeño mensaje de voz al iniciar Ubuntu: http://vijamaroylinux.blogspot.com/2008/12/un-pequeo-mensaje-de-voz-al-iniciar.html

6 comentarios:

Juan Reta dijo...

Hola, ¡Muchas gracias por tu artículo! muy completo.
Una pregunta ¿para que en las salida de echo festival utilice una voz diferente a la predeterminada, que parámetros debo agregar?

VIJAMARO dijo...

De nada. Si no te gusta la voz predetermina prueba a bajarte las voces "Silvia" y "Pedro". En la entrada haz clic sobre festvox-sflpc16k_1.0-1_all.deb y sobre festvox-palpc16k_1.0-1_all.deb descargarlos a tu ordenador, instalalos y sigue las instrucciones que pongo.

A lo que yo llamo Terminal otros lo llaman Consola. Esta en el menú "Aplicaciones >> Accesorios >> Terminal"

[Juan Jose] dijo...

Hola, muy interesante.
En vez del script a mi se me ha ocurrido poner un alias en el archivo .bashrc:

alias voz="iconv -f utf-8 -t iso-8859-1|festival --tts"

Ejecutas esto para no tener que reiniciar sesion:

$ source /home/juanjo/.bashrc

Y ahora funciona asi:
echo "hola" | voz

Un saludo
JJ

Anónimo dijo...

olle muchas gracias pero despues de instalar el paquete de voz me aparese esto
SIOD ERROR: unbound variable : voice_JuntaDeAndalucia_es_sf_diphone
festival>

VIJAMARO dijo...

Ese error puede ser porque estas intentando usar una voz que no has instalado... ¿Seguro que has seguido todos los pasos?

Este es el enlace para descargarla: http://forja.guadalinex.org/frs/download.php/154/festvox-sflpc16k_1.0-1_all.deb

Descargarla y luego instalarla. También puedes consultar con Google poniendo ese error. Mira este es uno de los resultados que me han salido a mi: http://iloo.wordpress.com/2009/12/03/festival-hablame-ubuntu-1/

Lo interesante esta en los comentarios:

chanfle :( 20/12/2009 a las 6:41 PM

no puedo ni configurar el idioma ni el tipo de voz :(
me sale el sig error SIOD ERROR: unbound variable (voice_JuntaDeAndalucia_es_sf_diphone)
segun lo que leí en wikipedia el error es por que le envio como parametro un tipo de voz que no está instalada.
Estuve buscando en toda la web y esa voz no existe o no aparece, creo ke la unica voz femenina que hay para festival es la voz francesa y segun lo que leí primero debo instalar MBrola.
gracias :)
Responder

Administrador 20/12/2009 a las 10:03 PM

Claro por eso primero tienes que instalar el idioma, el enlace de la voz masculina en español: http://forja.guadalinex.org/repositorio/frs/download.php/153/festvox-palpc16k_1.0-1_all.deb
Y la voz femenina en español: http://forja.guadalinex.org/repositorio/frs/download.php/154/festvox-sflpc16k_1.0-1_all.deb

Si te fijas en el post claramente indico que se tienen que descargar e instalar uno de los idiomas, para descargar en ese caso estoy usando wget (gestor de descargas).

Sobre el tema de los sintetizadores puedes usar MBrola en este caso estoy usando festvox ya que viene por defecto, espero te resulte con estas aclaraciones.


Clar que yo ya no uso este programa y la entrada ya tiene sus añitos...

VIJAMARO dijo...

Horror! Había un pequeño error en la entrada.

Donde pone: Que queremos probar la voz femenina, la instalamos con esto:

Tenia que poner:Que queremos probar la voz femenina, ponemos esto:

Perdón por la confusión. Primero tenemos que descargar las voces y después instalarlas para que funcione. Prueba ha hacer doble clic sobre el archivo que te has descargado y si asi no se instala, prueba con el boton de la derecha del raton para ver las opciones que te da y elige instalar... Yo ya no uso Ubuntu. No se muy bien lo que te saldra...

El comando (voice_JuntaDeAndalucia_es_sf_diphone) es para decirle a Festival que use esa voz. No para instalarla. Si no la has instalado te dará ese error...

Perdon por la confusion.