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
- il video su YouTube
- esempi e comandi della puntata su GitHub
- espeak(1) — la man page
- fortune(6) — la man page
- eSpeak su GitHub — il successore eSpeak NG
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!
