So lassen Sie den Raspberry Pi mit eSpeak Text lesen.
Kommentareⓘ Cet article peut avoir été partiellement ou totalement traduit à l'aide d'outils automatiques. Nous nous excusons des erreurs que cela pourrait engendrer.
Beim Rechnen ist das Problem der Benutzeroberfläche wahrscheinlich eines der kompliziertesten. Das, Dinge benennen und einen Cache ungültig machen …
Der einfachste Weg, einem Menschen Informationen von einem Computer aus zu präsentieren, ist normalerweise die Verwendung von Vision. Dafür benötigen Sie jedoch einen Bildschirm, der sperrig, teuer und daher für den Einsatz an Bord nicht sehr geeignet ist.
In diesem Tutorial erfahren Sie, wie Sie das Gehör Ihres Benutzers anstelle seiner Vision verwenden, indem Sie Ihren Raspberry Pi mithilfe der eSpeak-Software, die als Text To Speech bezeichnet wird, Text sprechen lassen.
Die Hardware, um den Raspberry Pi zum Sprechen zu bringen
Damit Ihr Raspberry Pi sprechen kann, benötigen wir folgende Ausrüstung:
Installieren Sie eSpeak auf dem Raspberry Pi
Um Ihren Raspberry Pi zum Sprechen zu bringen, verwenden wir die eSpeak-Software, eine Open-Source-Text-to-Speech-Software.
Das Prinzip von eSpeak lautet wie folgt: Sie geben ihm Text (eine Zeichenfolge, eine Datei usw.) und teilen ihn in Phoneme (die kleinsten Laute, aus denen eine gesprochene Sprache besteht) auf. Verwenden Sie dann eine ganze Reihe von Techniken, um diese Phoneme in echte Sounddateien umzuwandeln.
Die Installation von eSpeak auf dem Raspberry Pi ist recht einfach, da es bereits in den Repositorys vorhanden ist. Wir müssen also nur die Repositorys aktualisieren und nach der Installation von eSpeak fragen:
sudo apt update sudo apt install espeak -y
Lesen Sie einen Satz mit eSpeak
Nachdem eSpeak installiert ist, können wir einen ersten Satz lesen. Aber vorher werden wir sicherstellen, dass der Ton am Jack-Port unseres Raspberry Pi ausgeht, um unsere Lautsprecher zu erreichen.
Führen Sie dazu den Befehl sudo raspi-config aus, gehen Sie zu "Erweiterte Optionen", "Audio", "3,5-mm-Buchse erzwingen" und schließlich "Fertig stellen".
Wir werden einen Ordner erstellen espeak
Laden Sie im Benutzerverzeichnis eine Audiodatei herunter und spielen Sie sie ab, um zu überprüfen, ob alles ordnungsgemäß funktioniert:
mkdir /home/pi/espeak cd /home/pi/espeak wget https://raspberry-pi.fr/download/espeak/test.mp3 -O test.mp3 ffplay -nodisp test.mp3
Sie sollten eine C-Dur-Tonleiter spielen hören.
Jetzt, da wir wissen, dass die Lautsprecher funktionieren, werden wir eSpeak bitten, den Satz zu sagen: „Die Himbeeren sitzen auf dem Stuhl meines Großvaters.“ Dazu verwenden wir den folgenden Befehl:
espeak -a 200 -v fr+f3 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
Was uns so etwas gibt …
Lassen Sie uns den Befehl ein wenig umgehen, um zu versuchen zu verstehen:
espeak
Starten Sie das Programm espeak-a 200
Gibt die Lautstärke an, die für den Ton verwendet werden soll. Sie reicht von 0 bis 200 und ist standardmäßig 100.-v fr+f3
sagt uns die zu verwendende Sprache.fr
entspricht der französischen Sprache,+f3
gibt an, dass wir die dritte von eSpeak vorgeschlagene Variante der Frauenstimme verwenden möchten. Denken Sie daran, den Sprachcode an Ihren Text anzupassen.- Der Satz in Anführungszeichen wird von eSpeak gesprochen. Stattdessen hätten wir es auch bitten können, eine Textdatei beiläufig zu lesen.
-f le_chemin/du/fichier.txt
. --stdout
teilt eSpeak mit, dass die generierten Daten nicht direkt abgespielt, sondern an die Standardausgabe des Terminals gesendet werden sollen.| aplay
Gibt an, dass die von eSpeak generierte Ausgabe an die Eingabe des Wiedergabeprogramms umgeleitet wird, bei dem es sich um ein Programm zum Abspielen von Audiodateien im Wave-Format handelt, das von eSpeak generiert wurde. Beachten Sie, dass wir stattdessen verwenden könnten> mon_fichier.wav
um die Audioausgabe in einer Datei zu speichern.
Wie Sie sehen können, spielt nicht eSpeak, sondern aplay den Sound ab. Der Grund dafür ist sehr einfach, espeak wurde auf dem Raspberry Pi für einige Versionen abgehört …
Wenn Sie versuchen, eSpeak direkt zum Sprechen zu bringen, werden Fehler im Zusammenhang mit Alsa, dem Raspberry Pi-Soundserver, angezeigt. Die einfachste Lösung besteht daher darin, die Daten an aplay zu senden, was selbst einwandfrei funktioniert. Am Ende funktioniert es und das ist alles was zählt.
Verbessern Sie die Stimme von eSpeak, indem Sie MBROLA auf der Himbeere installieren.
Wie Sie sehen können, sind die von eSpeak erzeugten Stimmen absolut schmutzig. Keine Panik, wir haben eine Lösung, um dies zu verbessern.
Ich habe es am Anfang des Artikels erwähnt, dass eSpeak Phoneme erzeugen kann, wobei diese Klangstücke eine gesprochene Sprache darstellen. Und es stellt sich heraus, dass es andere Programme gibt, die diese Phoneme lesen und aussprechen können und die überzeugender sind als eSpeak!
In unserem Fall werden wir die MBROLA-Software verwenden, ein globales Verbundprojekt, das von der Polytechnischen Fakultät in Mons, Belgien, initiiert wurde und das darauf abzielt, eine riesige Datenbank für die Sprachsynthese zu entwerfen.
Seltsamerweise ist die MBROLA-Software in den Raspbian-Repositorys nicht verfügbar, während die Sprachdaten verfügbar sind. Dies hat zur Folge, dass die Installation dieser Sprachdaten unmöglich wird …
Keine Sorge, wir haben die Lösung! In der Tat war eine gute Seele so freundlich, selbst ein MBROLA-Paket für den Raspberry Pi zu erstellen, und wir haben uns daher entschlossen, einen Spiegel auf der Website zu erstellen.
Also werden wir dieses Paket mit den folgenden Befehlen herunterladen und installieren:
cd ~/espeak wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb sudo dpkg -i mbrola.deb
Und jetzt, da MBROLA installiert ist, können wir die benötigten Sprachdateien herunterladen. So wird es für mich sein mbrola-fr1
, das heißt die erste französische Stimme. Passen Sie den Befehl an Ihre Sprache an.
sudo apt install mbrola-fr1 -y
Jetzt müssen wir nur noch unsere vorherige eSpeak-Bestellung übernehmen und anpassen, um Phoneme zu generieren und von MBROLA lesen zu lassen. Welches wird uns den Befehl unten geben.
espeak -a 200 -v mb-fr1 -s 150 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
Welches gibt uns das Audio unten:
Sie finden einige der gleichen Einstellungen wie zuvor, jedoch mit zwei Änderungen:
-v mb-fr1
gibt an, dass wir MBROLA zum Generieren der Audiodatei verwenden möchtenmb
und die französische Stimme Nummer 1-fr1
.-s 150
gibt ihm an, wann wir die Datei mit einer Geschwindigkeit von 150 Wörtern pro Minute generieren möchten. Der Standardwert ist 165, aber ich finde es ein bisschen schnell, zumindest für Französisch.
Nach wie vor können Sie den Befehl natürlich ändern, um eine Datei zu erstellen, den Text aus einer txt-Datei zu lesen usw.
Durch die Kombination dieser Befehle mit dem Lesen von RFID-Tags und dergleichen können Sie problemlos fahrzeuginterne Systeme mit relativ vollständigen Schnittstellen erstellen.
Natürlich sind wir immer noch weit von einer menschlichen Stimme entfernt und wissen, dass es bessere "Text to Speech" -Engines gibt, wie beispielsweise Mozillas TTS, das im Rahmen des Common Voice-Projekts entwickelt wurde. Trotzdem bieten MBROLA und eSpeak einen guten Kompromiss zwischen Benutzerfreundlichkeit, Ausführungsgeschwindigkeit und Effizienz.