Listing 2
$ espeak-ng -v german -s 130 -p 60 "Pi"
Die männliche Standardstimme klingt zwar verständlich, aber gewöhnungsbedürftig künstlich. Die Latenz fällt mit 1,4 Sekunden deutlich besser aus als bei Festival. Mit dem merkelschen Testwort müht sich Espeak allerdings genauso ab wie alle anderen Offline-Programme: Es spricht das “ie” am Ende nur einsilbig aus. Das Wort “Orgie” selbst macht dagegen keine Probleme: Hier hilft das eingebaute Lexikon.
Bessere Stimmen
Der große Vorteil von Espeak liegt in der Möglichkeit, mit wenig Aufwand bessere Stimmen aus dem Fundus des des Mbrola-Projekts [2] nachzurüsten. Allerdings bleibt unverständlich, dass es im Raspbian-Repository zwar mehrere Stimmpakete mbrola-de1 bis mbrola-de7 gibt, diese sich aber nicht installieren lassen, da sie vom nicht vorhandenen Mbrola-Paket abhängen.
Der Versuch, das Paket aus einem Debian-Repository einzuspielen, scheitert zunächst. Das enthaltene Mbrola-Programm bricht mit einem Fehler ab. Ein von Hand kompiliertes Paket funktioniert zwar, löst aber nicht das Problem der Paketabhängigkeiten. Hier kommt ein Wrapper-Paket [3] zu Hilfe. Listing 3 führt in den ersten drei Zeilen alle Befehle zur Installation der zusätzlichen Stimmen auf.
Listing 3
$ wget http://steinerdatenbank.de/software/mbrola3.0.1h_armhf.deb $ sudo dpkg -i mbrola3.0.1h_armhf.deb $ sudo apt-get -y install mbrola-de? $ [...] $ espeak-ng -v mb-de6 -s 130 -p 60 "Pi"
Nach der Installation stehen acht deutsche Stimmen bereit, eine originäre Espeak-Stimme und sieben Mbrola-Stimmen. Diese legen Sie mit espeak-ng --voices=de fest. Die Sprachausgabe starten Sie mit dem Kommando aus der letzten Zeile von Listing 3.
Die Latenz fällt mit 2,1 Sekunden etwas höher aus als mit der eingebauten Stimme. Dafür gibt es jetzt die Wahl zwischen weiblichen (ungerade Nummern) und männlichen Stimmen. Welche davon am besten klingt, ist Geschmackssache; allerdings fehlt allen davon die natürliche Anmutung einer menschlichen Stimme.
Pico
Eine weitere verfügbare TTS-Engine heißt Pico. Die weibliche Stimme dürfte dem einen oder anderen bekannt vorkommen, handelt es sich dabei doch um die Stimme von frühen Android-Versionen. Pico gibt es nicht im Raspbian-Repository, Sie installieren es über die Kommandos aus den ersten drei Zeilen von Listing 4.
Listing 4
$ wget http://www.dr-bischoff.de/raspi/pico2wave.deb $ sudo apt-get install libpopt-dev $ sudo dpkg -i pico2wave.deb $ [...] $ ln -s /dev/stdout /tmp/pico.wav $ pico2wave --lang=de-DE -w /tmp/pico.wav "Hallo" | aplay
Allerdings erlaubt Pico keine direkte Sprachausgabe, sondern will immer eine Datei erzeugen. Mit einem kleinen Trick funktioniert es trotzdem: Der symbolische Link aus Zeile 5 gaukelt dem Programm eine WAV-Datei vor, die Sprachausgabe landet aber in der Standardausgabe. Diese leitet der Umleitungsoperator | in das Programm Aplay (Zeile 6) um, das zu Alsa gehört und das Sie deswegen normalerweise nicht explizit installieren müssen.
Pico schlägt von der Ausgabequalität her alle anderen Offline-Sprachsynthesizer; auch die Latenz liegt mit 1,1 Sekunden an der Spitze.
Online-Synthese
Der Markt um Text-to-Speech wächst stetig, und so gibt es diverse Firmen, die ihre Produkte online anbieten, zumindest zum Probehören. Google Translate (Abbildung 2) ist zwar kein expliziter TTS-Dienst, lässt sich dafür aber ohne Entwickler-Account und Gebühren nutzen, denn der Online-Übersetzer bietet auch die Aussprache kleiner Textschnipsel an. Der Dienst lässt sich auch über Kommandozeilenprogramme wie Wget oder Curl nutzen, allerdings stellt das Aufbereiten der Texte eine kleine Hürde dar.
Das Skript aus Listing 5 automatisiert den Prozess. Das fold-Kommando aus Zeile 10 schneidet den in der Kommandozeile übergebenen Text in Happen mit einer maximalen Länge von 100 Zeichen und füttert das Ergebnis in eine Do-While-Schleife (Zeilen 5 bis 10). Für jeden Schnipsel konvertiert dort xxd in Kombination mit sed alle Zeichen in ein webkonformes Hex-Format (Zeile 7). Die Zeile 9 sammelt alle HTTP-Anfragen in einem Array.






