Raspberry Pi Sprachausgabe – der Pi lernt sprechen
In diesem Tutorial zeige ich euch wie Ihr eurem Raspberry Pi das sprechen beibringen könnt. Das hört sich jetzt kompliziert und langwierig an, ist aber mit nur wenigen Kommandos möglich. Sprechen lernt der Raspberry Pi mit einer OpenSource Bibliothek genannt eSpeak. Dieser Speech Synthesizer ist in vielen unterschiedlichen Sprachen erhältlich und ist in der Basisversion auf Englisch installiert. Vergleichbar ist diese Sprachausgabe mit denen anderer Betriebssysteme. eSpeak wird vor allem für die Ausgabe von Texten verwendet oder zur Sprachausgabe bei Robotern. Siehe dazu dieses Buch: Raspberry Pi Robotic Projects
Sprachausgabe installieren
Der erste Schritt ist die Installation der notwendigen Software. Diese ist bei Raspbian Linux noch nicht installiert. Die Installation ist sehr einfach und mit dem folgendem Kommando möglich:
sudo apt-get install espeak
Mit der Standardinstallation ist nur die englische Sprache installiert.
Verwendung
Das Kommandozeilen Programm espeak ist sehr einfach zu verwenden. Um einen einfachen Text auszugeben reicht folgender Befehl:
espeak "Hello world, I'm a raspberry pi."
Um das zu hören muss man entweder Kopfhörer an den Audioausgang des Raspberry Pis anstecken oder besser noch ein Audiosystem oder eine einfache Box. Der Grund warum ich den ersten Text auf Englisch geschrieben habe erklärt sich folgendermaßen: probiert doch einfach mal das selbe auf deutsch aus:
espeak "Hallo Welt, ich bin ein Raspberry Pi."
Das klingt weniger gut. Der englische Akzent ist vielleicht lustig, aber nicht sonderlich gut, wenn man längere Texte auf Deutsch vorgelesen haben möchte.
Andere Sprache verwenden
eSpeak unterstützt eine große Anzahl unterschiedlicher Sprachen, so auch Deutsch. Den Text können wir uns also mit dem Parameter -v und dem Ländercode in einer anderen Sprache vorlesen lassen:
espeak -vde "Hallo Welt, ich bin ein Raspberry Pi."
Wem das noch nicht reicht, der kann noch mit anderen Stimmen (Männer- und Frauenstimmen) oder Effekten experimentieren. Eine Liste der Sprachen und Parameter ist in der Dokumentation nachzulesen.
Sprachausgabe in der Praxis
Neben den Spielereien kann man diese Funktion auch sehr sinnvoll einsetzen. Mit dem Parameter -f kann man sich beispielsweise ganze Textdateien vorlesen lassen. Eine sehr gute Möglichkeit um eine Barrierefreie Applikation zu entwickeln welche auch sehbeeinträchtigte Menschen verwenden können. Als Geschichtenerzähler ist der Raspberry Pi zugegebenermaßen eher schlecht.
Bildschirmlose Ausgabe
Die Sprachausgabe ist eine wirklich praktische Funktion, falls am Raspberry Pi aus irgend einem Grund gerade kein Monitor angeschlossen werden kann und beispielsweise der Netzwerkzugriff nicht funktioniert. Was tun? In diesem Fall könnte man eine Tastatur anschließen und sich die IP Adresse vorlesen zu lassen (falls man zufällig auch gerade seine Kopfhörer vom iPod mit hat). Die IP Adresse kann man sich folgendermaßen ausgeben lassen:
espeak "IP Adress is $(hostname -I)"
Und so kann man zumindest schon mal versuchen ob man den Pi im Netzwerk pingen kann. Wer mutig ist könnte sich auch Logdatei vorlesen lassen:
espeak -f /var/log/syslog
Man benötigt dafür etwas Zeit und sollte sehr aufmerksam zuhören.
Guten Abend. Ich lasse den Raspi jede 1/4 Stunde die Uhrzeit ansagen. Habe das auch mit espeak gemacht, aber während der Ansage wird die Ausgabe immer undeutlicher, als ob die Geschwindigkeit der Ansage langsamer wird. Das ist so nicht zu gebrauchen. Habe jetzt die Stimme von Google abgerufen, gespeichert, setzte mittels bas-script die Ansage zusammen und lasse mit aplay ausgeben. Ist aber immer noch unbefriedigend. Nach einen Neustart ist der Raspi schön still, hat er aber erst einmal geredet ist immer ein ritmisches Blub Blub zu höhren. Genauso ist Internettzuriff zuhöhren. Und ein kreischen und feifen. Sehr lästig. Als ob der Ausgabekanal geöffnet und anschliepend nicht geschlossen wird. Damit Erfahrung?
MfG der Alte (weil ich so alt bin, nicht weise)
das mit der langsamer und undeutlicher werdenden Stimme scheint ein Bug zu sein der bei manchen Systemen auftritt (Quelle).
Danke für die Antwort, es tritt zumindest bei meinen zwei Raspis auf, nicht aber am PC mit Debian. Werde mal auf einen ein anderes Betriebssystem versuchen. Und versuchen, die Quelle zu übersetzten, bin halt alt und hab in der Schule russisch gelernt (das kann ich aber auch nicht richtig, ich komme einfach mit fremden Sprachen nicht zurecht – habs oft probiert).
Danke jedenfalls für den Hinweis. Offenbar verwende ich eine Version vom RaspiLinux bzw. der Firmware die entweder so aktuell oder aber schon so alt ist, dass der Fehler da nicht auftritt.
Die Standardversion von espeak ist nur sehr schlecht zu verstehen.
Mit mbrola kann man aber recht gute Ergebnisse erzielen. Eine gute Anleitung ist unter http://espeak.sourceforge.net/mbrola.html.
Die deutsche Stimme de6 ist am besten. Ich habe mbrola unter Intel-Linux schon lange am laufen. Auf dem Raspberry lief mbrola nach der Installation einwandfrei. Die Aussprache ist zu verstehen. Sie ist aber zu schnell. Leider muss man das System überlisten:
which mbrola
liefert bei mit /usr/local/bin/mbrola
sudo su
/usr/local/bin/mbrola /usr/local/bin/mbrola_bin
echo „mbrola_bin -t 1.0 $*“ > /usr/local/bin/mbrola
chmod 755 /usr/local/bin/mbrola
exit
Die Sprachausgabe ist dann gut zu verstehen.
danke für diese Information!
Es geht einfacher.
Den Workaround mit /usr/local/bin/mbrola_bin kann man sich sparen.
espeak -v mb-de6 -s 160 -g 6 „Hallo welt, es ist 7 uhr 30“
liefert ein recht gutes Ergebnis.
Das Wimmern in der Stimme ist vermutlich der zu geringen Rechenleistung des Raspberry Pi geschuldet. Unter Linux kling es etwas besser. Verwendet man unter Linux allerdings txt2pho klingt es noch besser. Leider ist txt2pho nur als Binärversion für Intel zu erhalten.
Ein riesiges Dankeschön an Heiner. Dank Dir kann man meinen Sprechenden RSS Reader jetzt auch noch verstehen 😀