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.

Paquetes de voces:

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.

En ArchLinux

[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).

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

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)