imlauer

```bash 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 ```bash [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: ```bash 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. ```bash 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: ```bash text2wave text_file | lame - text.mp3 ``` Tenés que tener el comando `lame` instalado, y se lo instala con: ```bash 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 ```bash 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. ```bash 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)