GNU/Linux: far parlare Linux con espeak

Oggi diamo letteralmente la voce al nostro sistema Linux, con espeak, un sintetizzatore vocale che legge un testo dallo standard input o da un file. Per avere dei testi da leggere uso fortune, giusto per non fare il solito ciao mondo che ha stancato tutti (sudo apt install espeak fortune-mod, se non li hai).

Fortune in breve

Il comando fortune restituisce una massima a caso, diversa ad ogni chiamata:

fortune

Il primo tentativo

La prima cosa da fare è passare l’output di fortune a espeak con una pipe:

fortune | espeak

Il risultato è poco comprensibile, per due motivi. Il primo: di default la voce è inglese. Il secondo: va rallentata la lettura e vanno regolati altri parametri.

Velocità

Con -s si imposta la velocità in parole al minuto. Proviamo con 120:

fortune | espeak -s 120

La voce

Per farlo parlare con pronuncia italiana si specifica la voce con -v. Per vedere le voci disponibili:

espeak --voices

Per vedere solo quelle di una lingua:

espeak --voices=it

Usiamo l’italiano, europe/it:

fortune | espeak -s 120 -v europe/it

Si può scrivere anche -v it. Un po’ meglio, ma si può migliorare.

Pitch, ampiezza e pause

Altri parametri utili:

  • -p è il pitch, l’altezza della voce, da 0 a 99. Io l’ho abbassato a 15;
  • -a è l’ampiezza (amplitude), cioè il volume, da 0 a 200;
  • -g è la pausa fra le parole (gap), in unità di 10 ms.

Nel video ho provato i valori a occhio. Una combinazione che si può usare come punto di partenza:

fortune | espeak -s 120 -v europe/it -p 15 -a 150 -g 5

Ognuno farà le proprie tarature. Il risultato resta metallico, ma fa parte dello stile vintage del programma, e le parole si capiscono. Esistono sistemi più avanzati con pronunce più naturali, ma espeak è leggero e facilissimo da integrare negli script.

Usarlo negli script

Il punto interessante è lanciare un processo con uno script e farsi avvisare a voce quando è finito, oppure usare espeak insieme all’output di un comando per tenere d’occhio qualcosa mentre si fa altro. Non un semplice suono, ma proprio delle parole.

Leggere un file

Ultima opzione: leggere un file di testo. Scrivo una fortune in un file. Se è troppo lunga, fortune -s sceglie solo le frasi corte:

fortune -s > fortune.txt
cat fortune.txt

e la leggo con -f:

espeak -f fortune.txt -s 120 -v europe/it

In sintesi

  • espeak legge lo standard input o un file (-f);
  • -s velocità, -v voce, -p pitch, -a ampiezza, -g pausa;
  • espeak –voices elenca le voci disponibili;
  • leggero e vintage, ottimo per gli avvisi vocali negli script.

Link e risorse

Sostieni il canale

PER SOSTENERE IL CANALE BASTANO UN LIKE E UN’ISCRIZIONE!
ma se vuoi offrirmi un caffè, mi aiuterà a rimanere sveglio mentre registro i video 😁☕
clicca qui per scoprire come https://buymeacoffee.com/thelinuxnerd

questi link sono affiliati Amazon, acquistando i libri che ti consiglio sostieni il canale!