Listing 5
#!/bin/bash
# Aufteilen und aufbereiten
declare -a requests
while read line; do
# Alle Zeichen HTML-freundlich in Hex umwandeln
line=$(xxd -plain <<< "$line" | tr -d '\n' | sed 's/\(..\)/%\1/g')
req="http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=${line}&tl=de-DE"
requests+=("$req")
done <<(fold -s -w 100 <<< $*)
mpg123 -b 1024 -q "${requests[@]}"
Da Google Translate einen MP3-Stream zurückliefert, benötigen Sie noch ein Programm, das dieses Format beherrscht. Hierfür eignet sich Mpg123, das beliebig viele Webadressen direkt verarbeitet (Zeile 12). Das Skript muss also die MP3-Daten nicht erst abspeichern und anschließend an die Software übergeben.
Nach diesen Vorarbeiten steht der Online-TTS-Dienst als Skript bereit. Die Latenz hängt hier vom Netzwerk und der des Google-Servers ab und lag beim Autor im Bereich von 2,2 Sekunden. Bei längeren Texten fällt diese Latenz jedoch mehrfach an und unterbricht den Stimmfluss.
Die Sprachqualität gefällt besser als bei allen Offline-Lösungen, und auch das merkelsche Testwort spricht der Google-Dienst korrekt aus. Ganz fehlerfrei arbeitet er trotzdem nicht: Er verschluckt beim Goethe-Gedicht in der ersten Zeile (“Über allen Gipfeln ist Ruh'”) die letzte Silbe.
Eine weitere Einschränkung betrifft den Datenschutz. Das Skript überträgt den Text als Teil der URL an den Server, die üblicherweise auch in den Server-Logs landet. Das spielt aber für viele Anwendungsfälle keine Rolle, etwa wenn der RasPi die aktuelle Uhrzeit ansagen soll oder Suchergebnisse wiedergibt, die sowieso aus dem Netz stammen. Unabhängig davon scheiden aber Online-Lösungen immer aus, wenn dem System eine zuverlässige Netzwerkanbindung fehlt.
Google betreibt auch einen professionellen TTS-Service [4], dessen Ergebnis sich kaum noch von natürlichen Sprechern unterscheidet. Die Nutzung setzt ein Konto sowie einen API-Key voraus, mit dem der Zugriff dann über einen gut dokumentierten REST-Service funktioniert.
Selbst in der besten Sprachqualität fallen bis zu einer Millionen Zeichen im Monat keine Kosten an, der Dienst ist also für eigene kleine Projekte quasi kostenlos. Interessierte finden unter [4] ein Webformular zum Probehören sowie weiterführende Infos zum Einrichten, Verwenden und den Preisen. Das Problem der Netzwerklatenz löst allerdings auch diese TTS-Engine nicht.
Fazit
Je nach Bedarf rüsten Sie mit wenig Aufwand eine Sprachausgabe für Ihre Anwendungen nach. Als Sieger in allen Disziplinen konnte sich in unserem Test keiner der vier Kandidaten durchsetzen. Mit Performance-Problemen hatte keine der vorgestellten Lösungen zu kämpfen, abgesehen von Festival. Nach Ansicht des Autors bietet Pico den besten Kompromiss aus Qualität, Latenz und einfacher Installation.
Wer eine Anwendung entwickelt, die nur feste Texte ausgibt, dem steht noch ein weiterer Ansatz zur Verfügung: Nehmen Sie die Texte vorab auf und geben Sie dann nur noch die entsprechenden WAV- oder MP3-Dateien aus. Für eine Zeitansage kommen dabei zwar 84 Tonschnipsel zusammen, aber der Aufwand fällt nur einmal an. Die Stimme klingt besser und vor allem persönlicher. Das Ganze funktioniert dann sogar mit einem Mikrocontroller, wenn der die Ausgabe an einen DF-Player-Mini (Abbildung 3) delegiert.

Abbildung 3: Mittels eines Mini-Audioplayers lässt sich die Sprachausgabe sogar von einem Mikrocontroller übernehmen.
Die Spracheingabe blendet dieser Artikel zwar bewusst aus, aber auch hier hat sich seit unserem letzten Artikel zu diesem Thema [1] einiges getan. Eine der folgenden Ausgaben greift das Thema nochmals auf. (tle/jlu)
Der Autor
Bernhard Bablok arbeitet bei der Allianz Technology SE als SAP-HR Entwickler. Wenn er nicht Musik hört oder mit dem Rad respektive zu Fuß unterwegs ist, beschäftigt er sich mit Themen rund um Linux, Programmierung und Kleincomputer. Sie erreichen ihn unter mailto:[email protected].
Infos
- Jasper: Bernhard Bablok, “Aufs Wort”, RPG 01/2016, S. 14, https://www.raspi-geek.de/35194
- Mbrola: https://github.com/numediart/MBROLA
- Wrapper-Paket für Mbrola: http://steinerdatenbank.de/software/mbrola3.0.1h_armhf.deb
- Google TTS: https://cloud.google.com/text-to-speech/





