artículo del archivo

Cómo hacer para que el PC hable en Fedora 14

03/09/2011

foto de 3 robots

En Fedora 14, queremos que el PC lea texto y lo diga por los altavoces en español.

Por defecto el programa habla en inglés.

Necesitamos instalar el paquete Festival y de paso el idioma español y de paso algunos otros programas que usaremos.

yum install festival flite lame vlc
yum install festvox-kal-diphone.noarch festvox-ked-diphone.noarch hispavoces-pal-diphone.noarch hispavoces-sfl-diphone.noarch
Tecleamos festival para entrar en el modo interactivo donde nos pide los comandos, hay que entrarlos entre parentesis ()

Para ver la lista de voces instalada:


(voice.list)

Obtenemos el siguiente resultado:


(JuntaDeAndalucia_es_sf_diphone
JuntaDeAndalucia_es_pa_diphone
ked_diphone
kal_diphone
nitech_us_slt_arctic_hts)

Seleccionamos una voz:

(voice_JuntaDeAndalucia_es_pa_diphone)

Probamos para que diga una frase:

(SayText "hola, esto es una prueba")

El problema es que desde el modo interactivo los acentos y eñes, no los entiende. Por lo que debemos usar la linea de comandos directamente:

echo "Hoy en día hay que darle caña." | iconv -f utf-8 -t iso-8859-1 | festival --tts --language spanish
SIOD ERROR: unbound variable : voice_el_diphone

Como se puede ver, ahora nos da un error ya que intenta usar una voz española que no encuentra, y como no hay forma de pasar un parámetro, debemos modificar un fichero con el usuario root para solucionarlo.

/usr/share/festival/lib/voices.scm



En este fichero buscaremos la siguiente sección:


; This list has been reordered for Fedora, since we want to have the option
; to only install a smallish voice by default. And the slt voice is nice.
(defvar default-voice-priority-list
'(nitech_us_slt_arctic_hts
nitech_us_awb_arctic_hts
nitech_us_bdl_arctic_hts
nitech_us_clb_arctic_hts
nitech_us_jmk_arctic_hts
nitech_us_rms_arctic_hts

Y la dejaremos de la siguiente manera, añadiendo las dos lineas de JuntaDeAndalucia_es

; This list has been reordered for Fedora, since we want to have the option
; to only install a smallish voice by default. And the slt voice is nice.
(defvar default-voice-priority-list
'(JuntaDeAndalucia_es_pa_diphone
JuntaDeAndalucia_es_sf_diphone
nitech_us_slt_arctic_hts
nitech_us_awb_arctic_hts
nitech_us_bdl_arctic_hts
nitech_us_clb_arctic_hts
nitech_us_jmk_arctic_hts
nitech_us_rms_arctic_hts

Ahora ya podemos oir frases en español con acentos:


echo "caña al camión" | iconv -f utf-8 -t iso-8859-1 | festival --tts

Podemos generar un archivo de sonido con el resultado:

echo "hola camión" | iconv -f utf-8 -t iso-8859-1 | text2wave -o resultado.wav

Podemos pasar el resultado a formato .mp3

lame resultado.wav resultado.mp3

Con esto nos genera un fichero resultado.mp3 en el mismo directorio.

Ahora queremos que lea un fichero de texto con varias lineas


cat texto.txt | iconv -f utf-8 -t iso-8859-1 |festival --tts

Y para terminar queremos generar un fichero .mp3 a partir de un fichero de texto:


cat a.txt | iconv -f utf-8 -t iso-8859-1 | text2wave -o resultado.wav && lame resultado.wav resultado.mp3

Para oir el resultado podemos usar el programa vlc desde consola con en comando:

cvlc resultado.mp3

Ctrl-C para terminarlo.



Con esto podemos generar un .mp3 a partir de cualquier fichero de texto.