Come far leggere il testo al Raspberry Pi con eSpeak.
Commentiⓘ Cet article peut avoir été partiellement ou totalement traduit à l'aide d'outils automatiques. Nous nous excusons des erreurs que cela pourrait engendrer.
In informatica, il problema dell'interfaccia utente è probabilmente uno dei più complicati. Quello, nominare le cose e invalidare una cache …
Il modo più semplice per presentare le informazioni a un essere umano da un computer è di solito usare la vista. Ma per questo è necessario uno schermo, che è ingombrante, costoso e quindi non molto adatto per l'uso a bordo.
In questo tutorial, vedremo come utilizzare l'udito dell'utente piuttosto che la sua vista, facendo in modo che il tuo Raspberry Pi pronunci il testo utilizzando il software eSpeak, chiamato Text To Speech.
L'hardware per far parlare il Raspberry Pi
Per poter far parlare il tuo Raspberry Pi, avremo bisogno della seguente attrezzatura:
Installa eSpeak su Raspberry Pi
Per far parlare il tuo Raspberry Pi, useremo il software eSpeak, un software di sintesi vocale open source.
Il principio di eSpeak è il seguente: gli dai del testo (una stringa di caratteri, un file, ecc.) E lo dividerà in fonemi (i suoni più piccoli che compongono una lingua parlata), quindi usi un intero set di tecniche per trasformare questi fonemi in veri file audio.
Installare eSpeak sul Raspberry Pi è abbastanza semplice poiché è già presente nei repository. Quindi dobbiamo solo aggiornare i repository e chiedere l'installazione di eSpeak:
sudo apt update sudo apt install espeak -y
Leggi una frase con eSpeak
Ora che eSpeak è installato, potremo fargli leggere una prima frase. Ma prima, ci assicureremo che il suono esca dalla porta Jack del nostro Raspberry Pi per raggiungere i nostri altoparlanti.
Per fare ciò, esegui il comando sudo raspi-config, quindi vai su "Opzioni avanzate", "Audio", "Forza jack da 3,5 mm ('cuffie')" e infine "Fine".
Creeremo una cartella espeak
nella directory dell'utente scaricare un file audio e riprodurlo per verificare che tutto funzioni correttamente:
mkdir /home/pi/espeak cd /home/pi/espeak wget https://raspberry-pi.fr/download/espeak/test.mp3 -O test.mp3 ffplay -nodisp test.mp3
Dovresti sentire suonare una scala di do maggiore.
Ora che sappiamo che gli altoparlanti funzionano, chiederemo a eSpeak di dire la frase "I lamponi sono appollaiati sullo sgabello di mio nonno". Per questo, usiamo il comando seguente:
espeak -a 200 -v fr+f3 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
Il che ci dà qualcosa di simile …
Esaminiamo un po 'il comando per cercare di capire:
espeak
lancia il programma espeak-a 200
indica il volume da usare per il suono. Va da 0 a 200 ed è 100 per impostazione predefinita.-v fr+f3
ci dice la lingua da usare.fr
corrisponde alla lingua francese,+f3
indica che si vuole utilizzare la terza variazione di voce femminile proposta da eSpeak. Ricordati di adattare il codice della lingua al tuo testo.- La frase tra virgolette è quella che verrà pronunciata da eSpeak. Invece, avremmo anche potuto chiedergli di leggere casualmente un file di testo.
-f le_chemin/du/fichier.txt
. --stdout
dice a eSpeak che invece di riprodurre direttamente l'audio, dovrebbe inviare i dati generati allo standard output del terminale.| aplay
indica che l'output generato da eSpeak verrà reindirizzato all'ingresso del programma aplay, che è un programma per riprodurre file audio in formato Wave, quello generato da eSpeak. Nota che invece potremmo usare> mon_fichier.wav
per salvare l'uscita audio in un file.
Come puoi vedere, non è eSpeak ma aplay che riproduce il suono. Il motivo è molto semplice, in alcune versioni è stato rilevato un bug sul Raspberry Pi …
Se provi a far parlare direttamente eSpeak, otterrai errori relativi ad Alsa, il server audio Raspberry Pi. La soluzione più semplice è quindi inviare i dati ad aplay, che a sua volta funziona perfettamente. Alla fine funziona e questo è tutto ciò che conta.
Migliora la voce di eSpeak installando MBROLA sul Raspberry.
Come puoi vedere, le voci generate da eSpeak sono assolutamente sporche. Niente panico, abbiamo una soluzione per migliorarlo.
Ne ho parlato all'inizio dell'articolo, eSpeak è in grado di generare fonemi, questi pezzi di suono che costituiscono una lingua parlata. E si scopre che ci sono altri programmi in grado di leggere e pronunciare questi fonemi, e in un modo più convincente di eSpeak!
Nel nostro caso, utilizzeremo il software MBROLA, un progetto collaborativo globale avviato dalla Facoltà Politecnica di Mons, Belgio, che mira a progettare un enorme database per la sintesi vocale.
Stranamente, il software MBROLA non è disponibile nei repository Raspbian, mentre i dati della lingua lo sono. Ciò ha la conseguenza di rendere impossibile l'installazione di questi dati linguistici …
Non preoccuparti, abbiamo la soluzione! In effetti, una buona anima è stata così gentile da creare un pacchetto MBROLA per la stessa Raspberry Pi, e quindi abbiamo deciso di creare un mirror sul sito.
Quindi scaricheremo e installeremo questo pacchetto con i comandi seguenti:
cd ~/espeak wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb sudo dpkg -i mbrola.deb
E ora che MBROLA è installato, saremo in grado di scaricare i file di lingua di cui abbiamo bisogno. Quindi per me lo sarà mbrola-fr1
, cioè la prima voce francese. Adatta il comando alla tua lingua.
sudo apt install mbrola-fr1 -y
Tutto quello che dobbiamo fare ora è prendere il nostro precedente ordine eSpeak e adattarlo per generare fonemi e farli leggere da MBROLA. Che ci darà il comando di seguito.
espeak -a 200 -v mb-fr1 -s 150 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
Che ci dà l'audio qui sotto:
Troverai alcune delle stesse impostazioni di prima, ma con due modifiche:
-v mb-fr1
indica che vogliamo utilizzare MBROLA per generare il file audiomb
e la voce francese numero 1-fr1
.-s 150
indica quando a lui che vogliamo generare il file alla velocità di 150 parole al minuto. Il valore predefinito è 165, ma lo trovo un po 'veloce, almeno per il francese.
Come prima, puoi ovviamente modificare il comando per creare un file, leggere il testo da un file txt, ecc.
Combinando questi comandi con cose come la lettura di tag RFID e simili, è possibile creare facilmente sistemi a bordo del veicolo con interfacce relativamente complete.
Naturalmente, siamo ancora lontani da una voce umana e sappiamo che esistono motori "Text to Speech" migliori, come il TTS di Mozilla sviluppato come parte del progetto Common Voice. Tuttavia, MBROLA ed eSpeak offrono un buon compromesso tra facilità d'uso, velocità di esecuzione ed efficienza.