Faire parler la Raspberry

Come far leggere il testo al Raspberry Pi con eSpeak.

Aggiornato 5 Novembre 2019 - 0 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 …

Quindi sì, la voce è orribile, ma la miglioreremo in seguito.

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 …

Alcune righe di bug di espeak.
E questo, amico mio, è quello che chiamiamo "un insetto" …

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 …

Anche Kevin Hart lo trova con dei bug!
Che cosa?

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:

Ovviamente pensiamo sempre che sia un robot. Ma ammetti che c'è ancora il meglio!

Troverai alcune delle stesse impostazioni di prima, ma con due modifiche:

  • -v mb-fr1 indica che vogliamo utilizzare MBROLA per generare il file audio mbe 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.

5/5 - (1 vote)
Condividi
Newsletter
Autore:
Raspberry Pi FR
Unisciti alla comunità Raspberry Pi
Un computer da 35 euro ha già venduto 10 milioni di copie
ACQUISTA IL NUOVO RASPBERRY PI 4
Tutorial correlati
Perché avrei dovuto spiegare Bitcoin a France Info piuttosto che a mia nonna? Come creare un router Tor con Raspberry Pi. Accendi e spegni un LED con Raspberry Pi e Python. Attiva la porta seriale TTL del Raspberry Pi e verifica che funzioni. Creare un cluster Raspberry Pi con Docker Swarm
Nessun commento

Condividi
Iscriviti alla Newsletter
Iscriviti alla newsletter.
Ti è piaciuto questo articolo ?
Iscriviti e resta informato!