Text to Speech - lass deinen Computer sprechen

Fr, 10. September 2021, Ralf Hersel

Text-to-Speech (TTS), Speech-to-Text (STT) - in welcher Richtung ihr es betrachtet, das Thema ist interessant. Ihr dürft in diesem Beitrag keine Wunder erwarten, sondern einen Vergleich zwischen dem Roboter und der (nahezu) natürlichen Stimme. Ich vergleiche David mit Goliath, nämlich eSpeak-NG mit gTTS.

eSpeak-NG ist ein kompakter Text-to-Speech-Synthesizer für Linux, Windows, Android und andere Betriebssysteme. Er unterstützt mehr als 100 Sprachen und Akzente. Er basiert auf der von Jonathan Duddington entwickelten eSpeak-Engine und läuft lokal auf eurem Computer.

Dem entgegen tritt die Google-TTS Engine, hinter der massive Server-Kapazitäten und KI-Sprachmodelle stecken. Das Werkzeug läuft zwar lokal, verbindet sich jedoch mit den Google-Servern, um die Übersetzung von Text zu Sprache bereitzustellen.

Installation

eSpeak-NG wird folgendermassen installiert:

sudo apt install espeak-ng

Für nicht Debian-basierte Distribution verwendet man die jeweiligen Paketmanager.

Google-TTS (gTTS) wird so installiert:

sudo apt install gtts-cli

Falls pip oder pip3 noch nicht vorhanden ist, hilft ein: sudo apt install python3-pip

Ob die beiden Werkzeug korrekt installiert wurden oder evtl. bereits installiert sind, kann man mit diesem Befehl testen:

espeak-ng --version; gtts-cli --version
Ausgabe:
eSpeak NG text-to-speech: 1.50  Data at: /usr/lib/x86_64-linux-gnu/espeak-ng-data
gtts-cli, version 2.2.3

Verwenden

Beide Tools kann man direkt im Terminal oder in einer Anwendung (Python) einsetzen. Entsprechende Beispiele finden sich in den unten aufgeführten Quellen. Hier sind zwei Aufrufe im Terminal, um die Ausgabe der TTS-Werkzeuge auszuprobieren.

espeak-ng -v de -s 140 'Mein Name ist Ralf. Ich lebe in der Schweiz.'

Vergesst nicht die Lautsprecher einzuschalten oder den Kopfhörer aufzusetzen, damit ihr die Sprachausgabe hören könnt. Für das Google-Tool lautet die Beispielausgabe so:

gtts-cli 'Mein Name ist Martina. Ich lebe in der Schweiz.' --lang de --output hello.mp3; mpv hello.mp3

Beide Befehle lassen sich mit diversen Optionen anreichern. Bei espeak-ng ist es möglich zwischen verschiedenen Männer- oder Frauenstimmen zu wählen; das geht bei gtts-cli leider nicht; dort gibt es nur die Frauenstimme. Die Parameter könnt ihr bei den verlinkten Quellen nachschauen. Der Beispielbefehl für gtts-cli besteht eigentlich aus zwei Kommandos, welche durch ein Semikolon getrennt sind. Das Tool kann das Ergebnis nicht direkt als Sound ausgeben, sondern nur in einer mp3-Datei speichern. Daher müsst ihr schauen, welche Audio-Playback Anwendung bei euch installiert ist, z.B.: mpv, aplay, cvlc, oder andere. Im Beispiel verwende ich mpv; ihr könnt das entsprechend eures Players anpassen.

Fazit

Ziel der Übung war es, die sehr unterschiedliche Qualität der beiden Audio-Ausgaben aufzuzeigen. espeak-ng klingt wie ein Roboter, während gtts-cli einer normalen Sprache ziemlich nahekommt. Dafür nimmt man jedoch das Verschicken der Eingabe in die Google-Cloud in Kauf. Eine Alternative wäre die Verwendung der Anwendungen und Beispiele aus dem Mozilla Deepspeech Projekt. Auch über dieses Projekt gibt es einen Beitrag bei uns.

Quellen:

https://github.com/espeak-ng/espeak-ng

https://gtts.readthedocs.io/en/latest/index.html