eSpeak NG
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
eSpeak NG 🇬🇧 ist die Fortführung von eSpeak 🇬🇧, eines Open-Source-Sprach-Synthesizer, der Ausgaben in vielen Sprachen erzeugen kann. Die Entwicklung von eSpeak stagniert seit 2015, letzte Version war 1.48.15, es wurde seit 1995 entwickelt. Die Spracherzeugung erfolgt vollständig synthetisch (Formantsynthese), was kleine Sprachdateien und hohes Sprechtempo ermöglicht, aber zu künstlicheren Ergebnissen führt als bei größeren Sprach-Synthesizern, die auf natürlichen Sprachaufnahmen basieren. Es handelt sich um ein reines Kommandozeilenwerkzeug. Eine direkte Aufnahme der Ausgabe als .wav-Datei ist möglich. Es kann auch als Basis für andere Programme (z.B. Gespeaker) dienen, die zur Spracherzeugung im Original auf eSpeak zurückgreifen.
Installation¶
eSpeak NG kann (neben oder statt eSpeak) ab Ubuntu 18.04 aus den Quellen installiert werden. Die Syntax ist weitgehend gleich. Das Paket espeak-ng-espeak bietet die Möglichkeit, das aktuellere eSpeak NG unter dem alten Namen espeak
bereitzustellen, um anderen Programmen die Nutzung (unabhängig von deren Umstellung) zu ermöglichen. Dabei werden anstelle der Programmdateien espeak/speak symbolische Links auf espeak-ng/speak-ng gelegt.
espeak-ng (universe)
espeak-ng-espeak (optional, Ersatz für eSpeak, schließt aber die Verwendung von eSpeak selbst aus)
mbrola (multiverse (optional))
Befehl zum Installieren der Pakete:
sudo apt-get install espeak-ng espeak-ng-espeak mbrola
Oder mit apturl installieren, Link: apt://espeak-ng,espeak-ng-espeak,mbrola
Außerdem die gewünschte mbrola-Stimmenpakete installieren, die eine "natürlichere" Wiedergabe ermöglichen. Anders als eSpeak kann eSpeak NG auch mbrola-de1 und mbrola-de8 verwenden, letztere liefert ist allerdings eine bayrische Stimme, die etliche Laut-Kombinationen nicht wiedergeben kann.
Bedienung¶
Die allgemeine Syntax auf der Kommandozeile[2] lautet:
espeak-ng [OPTIONEN(EN)] ["TEXT IN ANFÜHRUNGSZEICHEN"]
Die Ausgabe kann über vielfältige Optionen angepasst werden; dies betrifft die Sprachgeschwindigkeit, -höhe, -lautstärke, Länge der Pause, Emphasis für Hauptwörter etc. Auch lassen sich unterschiedliche Eingabe-Formate verwenden. eSpeak NG kann außerdem verwendet werden, um Ausgaben in phonetischer Umschrift zu erzeugen, und auch zum Erstellen neuer Sprachanweisungen aus vorliegenden Wörterbuch-Dateien. Es können auch MBROLA-Stimmen verwendet und bearbeitet werden, sie werden über spezielle Kürzel aufgerufen (z.B. mb-de4
).
Beispiele¶
espeak-ng -vde "zu sprechender Text" # MBROLA-Stimmen über -vmb-deX
spricht den angegebenen Text nach den Regeln der deutschen Sprache.
espeak-ng -vde -f ZU_SPRECHENDE_TEXTDATEI
gibt die angegebene Datei in gleicher Weise aus.
espeak-ng -vde -f -m ZU_SPRECHENDE_HTML
gibt die angegebene HTML-Datei in gleicher Weise aus.
espeak-ng -vde -f ZU_SPRECHENDE_TEXTDATEI -w Sprachausgabe
schreibt die Textdatei als .wav-Klangdatei gewandelt.
Optionen¶
eSpeak-NG-Optionen | |
Option | Funktion |
-d NUMMER | anzusteuernde Soundkarte, wenn nicht spezifiziert wird die Standard-Karte verwendet. |
-f TEXTDATEI | wiederzugebende Textdatei |
--stdin | Text der Standardeingabe (stdin) statt einer Textdatei wiedergeben |
Wenn weder -f noch --stdin angeben ist, werden eingegebene Wörter gesprochen oder der Text der Standardeingabe zeilenweise ausgegeben. | |
-a WERT | Lautstärke, Werte von 0 bis 200 , Standard ist 100 |
-g WERT | Wort-Zwischenräume. Pause zwischen den Wörtern, in 10ms-Einheiten bei Standardgeschwindigkeit (siehe -s ) |
-k WERT | Gebe Großbuchstaben wieder: 1 = Klicklaut bei einem Großbuchstaben oder zwei Klicklaute, wenn das Wort nur aus Großbuchstaben besteht, 2 = dem Wort "capitals", höherer Werte führen zu einer Erhöhung der Stimmlage (z.B. -k20 ) |
-l WERT | Zeilenlänge. Wenn nicht 0 gesetzt ist (Standardeinstellung), werden Zeilen, die kürzer als diese Länge sind, als Phrasen-Ende betrachtet |
-p WERT | Anpassung der Tonhöhe,Werte von 0 bis 99, Standard ist 50 |
-s WERT | Sprechgeschwindigkeit in Wörtern pro Minute, Werte von 80 bis 450, Standard ist 175 |
-v STIMMNAME | Verwendet die Sprachdatei dieses Namens aus /usr/lib/x86_64-linux-gnu//espeak-ng-data/voices, erweiterbar um [+Varianten] , +m1, +m2, +m3, +m4, +m5, +m6, +m7 , männliche Stimmen, +f1, +f2, +f3, +f4 , weibliche Stimmen, sowie +croak (Krächzen) und +whisper (Flüstern) - die Varianten sind für MBROLA-Stimmen nicht nutzbar! |
-w WAVE_DATEINAME | Ausgabe wird in diese Wave-Datei geschrieben, statt sie direkt auszugeben |
-b WERT | Textencodierung der Eingabedatei, 1=UTF8, 2=8 bit, 4=16 bit |
-m | Verarbeitet SSML, und ignoriert andere < >-Tags |
-q | Keine Stimmausgabe (ggf. nützlich mit -x ) |
-x | Schreibt Phoneme-Abkürzungen in einer SAMPA-Notierung 🇬🇧 nach stout |
-X | Schreibt Phoneme-Abkürzungen und Übersetzung (translation trace) nach stdout |
-z | Keine abschließende Satzpause am Ende des Textes |
--compile=STIMMENNAME | Erstelle Ausspracheregeln und Wörterbuch aus dem derzeitigen Wörterbuch, STIMMENNAME legt die Sprache fest |
--ipa | Gibt Phoneme im Internationales_Phonetisches_Alphabet (IPA) an stdout aus |
--path="PFAD" | Legt den Pfad fest, in dem sich das eSpeak-Daten-Verzeichnis befindet |
--pho | Schreibt mbrola-Phonem-Daten (.pho) nach stdout oder in die mit --phonout festgelegte Datei |
--phonout="DATEINAME" | Schreibt die Phonem-Ausgabe von -x -X --ipa und --pho in diese Datei |
--punct="ZEICHEN" | Spricht die Zeichennamen der angegebenen Satzzeichen, wenn =ZEICHEN ausgelassen wird, werden alle Satzzeichen gesprochen. |
--split="MINUTEN" | Beginnt alle angegebenen Minuten eine neue .wav-Datei, mit -w verwenden |
--stdout | Schreibt die Sprachausgabe nach stdout |
--voices=SPRACHE | Listet die verfügbaren Stimmen der angegebenen Sprache auf; ohne Sprachangabe werden alle verfügbaren Stimmen aufgelistet. Installierte MBROLA-Stimmen werden nur bei Angabe der Sprache ausgegeben, z.B. espeak-ng --voices=de |
--voices=mb | Listet alle verwendbaren MBROLA-Stimmen auf, auch nicht installierte |
Weitere Informationen in der Online-Dokumentation 🇬🇧
Probleme und Lösungen¶
Kein Ton über USB-Soundkarten¶
eSpeak NG kann Probleme damit haben, den Sound über USB-Soundkarten auszugeben. Trotz hochgeregeltem Soundausgang (siehe Alsamixer) wird - ggf. auch ohne weiteren Kommentar im Terminal - kein Ton ausgegeben. Über
cat /proc/asound/cards
können die verwendbaren Soundkarten angezeigt werden; mit der Option -d X
(X steht dabei für die Nummer der gewünschten Karte) kann die Ausgabe dann gesteuert werden.
Ggf. wird die Ausgabe aber auch nur "fehlgeleitet"; zur Überprüfung bei laufender - wenn auch stummer - Ausgabe im pavucontrol-Fenster im "Wiedergabe"-Reiter das Ausgabemodul für die eSpeak-NG-Wiedergabe anschauen und ggf. ein passendes auswählen.
Alternativen¶
Sprachausgabe - Übersichtsseite
Festival - weiterer Sprachgenerator, basierend auf "natürlichen" Stimmen
Gespeaker - Frontend mit komfortablerer Bedienung
Skripte/Book-To-MP3 - Skript zum Vorlesen aus etlichen Dateiformaten, Skripte/pdf2mp3 - ähnliches Python-Skript
xsane2speech - Dokumente direkt aus XSane heraus "vorlesen" und als .mp3 archivieren
Omilo - GUI zur Sprachausgabe für Mary, Flite und Festival
Links¶
Projektseite 🇬🇧
MBROLA 🇬🇧
TextToSpeech 🇬🇧 auf ubuntu.com
fullcirclemagazine 🇬🇧 - Artikel in Full Circle 150, Seite 14-17 zu Verwendung von eSpeak NG in Python-Programmen