En esta publicación vamos a analizar como reproducir un texto a audio con Festival.
Antes de empezar, estos son los paquetes de las voces que se necesitan instalar para que pueda festival pueda leer algún texto:
festvox-kdlpc16k
: Voz masculina de inglés americano para Festival.
festvox-ellpc11k
: Voz masculiona de castellano español para Festival.
Si querés más voces podés buscarlas con el siguiente comando
sudo apt search festvox-
.
Por ejemplo para instalar una voz Italiano ejecutamos:
sudo apt-get install festvox-itapc16k
Observación: Hay muchos tipos de voces de español.
Ahora procedemos entonces a instalar festival junto con voces masculinas español e inglés descriptas
anteriormentes:
sudo apt install festival festival-doc festvox-kdlpc16k festvox-ellpc11k
Para establecer una voz por defecto en vez de tener que agregar
--language spanish
cada vez que ejecutás festival, podés agregar:
en ~/.festivalrc
lo siguiente:
(set! voice_default voice_el_diphone)
. Incluir los ()
(obviamente
tenés que tener el paquete de español instalado que lo indiqué más arriba)
Si el archivo ~/.festivalrc no existe, creálo.
Si querés saber las voces que tenés instaladas en tu sistema
podés entrar a la shell interactiva de festival ejecutando
festival
en la consola y escribí (voice.list)
con los ()
.
Para establecer una de estas voces estas por defecto en agregá en ~/.festivalrc
(set! voice_default voice_el_diphone)
. Incluir los ()
. OJO: agregar el prefijo voice_
antes del nombre de la voz que te muestra el comando (voice.list)
.
Para leer un texto sin guardar el audio: festival --tts archivo
(va a usar la voz que
pusiste por defecto en ~/.festivalrc
o podés usar la opcion --language spanish
si no pusiste
ninguna.
--tts
: Significa text to speech (texto a voz)
Pero para que lea los tíldes y las ñ tenés que cambiar la codificación de tu archivo usando iconv de la siguiente manera:
Primero instalamos iconv: sudo apt install iconv
.
iconv
: convertir texto de una codificación de caracteres a otra. Es necesario porque sino festival en español no te lee los tíldes ni las ñ. Más información ejecutá man iconv
.
Luego para cambiar la codificación del archivo:
iconv -f utf-8 -t iso-8859-1 texto_prueba -o texto_prueba_iso
Y ahora podés leerlo en español con las tíldes y la ñ con el comando festival --tts texto_prueba_iso
text2wave
: Es un script que trabaja con Festival y forma parte del mismo, sirve para generar un archivo wav desde un archivo de texto.
text2wave -o salida.wav -eval '(voice_el_diphone)' texto_prueba
Si ya tenés configurada la voz deseada por defecto en ~/.festivalrc
no necesitás poner el argumento -eval
.
También se puede generar un archivo mp3
de la siguiente forma:
text2wave text_file | lame - text.mp3
Tenés que tener el comando lame
instalado,
y se lo instala con:
sudo apt install lame
OJO: ¡¡Acordate que primero tenés que cambiar la codificación del archivo!! si querés que pueda leer las tíldes y las ñ en español, el comando para cambiar la codificación está descripto más arriba.
Ahora si querés que lea el texto seleccionado gráficamente con el mouse. Podés usar
sudo apt-get install xsel
xsel
: Te permite manipular con el texto seleccionado gráficamente, más adelante muestro un ejemplo de como funciona.
Más información ejecutá man xsel
en la consola.
Si seleccionás algún tipo de texto en cualquier aplicación
y ejecutás el siguiente comando, te lo va a leer.
xsel | iconv -c -f utf-8 -t iso-8859-1 | festival --tts
Si querés guardar el audio generado podés usar text2wave (un script de Festival) de la siguiente manera
Generá un archivo wav a partir de texto seleccionado:
xsel | iconv -c -f utf-8 -t iso-8859-1 | text2wave -o salida.wav -eval '(voice_el_diphone)'
Y esto es todo. Más información: Festival (Arch Wiki)