sudo apt install festival festival-doc festvox-kdlpc16k festvox-ellpc11k
echo "Hello, world!" | festival --tts
Podes agregar links -dump -width 512 $1 | tr "\n\ r" " " | festival --tts como un navegador externo en w3m y te leerá la página ejecutando Escape + número de casilla + M.
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- en ArchLinux sería usando yay con cualquier otra herramienta que soporte AUR.
[N] esotericwarfare@arch ~/p/b/content (master)> pacman -Ss festival
extra/festival 2.5.0-5 [installed]
A general multi-lingual speech synthesis system
extra/festival-english 2.5-3
British and American English Male speaker
extra/festival-us 2.5-3
American Male/Female and Scottish English Male speaker
[I] esotericwarfare@arch ~/p/b/content (master)> sudo pacman --noconfirm -S festival festival-us
Por ejemplo para instalar una voz Italiano ejecutamos: sudo apt-get install festvox-itapc16k
Observación: Hay muchos tipos de voces de español.
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).
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)
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)