Auf meiner letzten Debian-Installation - also bis zum letzten Festplattenversager - hatte ich mir den Luxus geleistet, mir über Mbrola per Sprachsynthese vorlesen zu lassen, wie viele ungelesene Nachrichten in meinem Postfach liegen, oder ob das automatische Backup auf meine USB-Platte erfolgreich war.
Das war eigentlich sehr angenehm und das für Lenny im Repository vorliegende festival-Paket versprach, das Ganze in ähnlicher Form ohne großen Aufwand wieder einrichten zu können.
Ein
# aptitude install festival
verankerte die Software auch schnell im System.
Doch ein erster Test mit:
$ echo "Du hast 2 Nachrichten." | festival --tts
wurde lapidar mit
Linux: can’t open /dev/dsp
quittiert.
Die Lösung war schnell gefunden, esddsp (aus dem Paket esound-client) sollte helfen. Aber auch die “Audioausgabe” über
$ echo "Du hast 2 Nachrichten." | esddsp festival --tts
war eher ernüchternd.
Zwar kam nun “etwas” aus dem Lautsprecher, aber logischerweise klang das eher denglisch, als deutsch (”Diu häst tju Nächrigten”).
Die Suche nach einem passenden Sprachpaket (”apt-cache search festvox”) brachte nur die Unterstützung für Finnisch, Hinduistisch oder Amerikanisches Englisch als Ergebnis. Und von Marathi oder Telugu hatte ich bisher noch nie gehört.
Eine Internet-Recherche zeigte zwar, dass es auch möglich ist, Festival Deutsch beizubringen, das hätte jedoch bedeutet, die Source von Festival patchen und anschließend manuell übersetzen zu müssen, und hätte somit einigen Aufwand mit sich gebracht.
Und da ich faul bin, und ich wusste, dass das mit Mbrola einfacher geht, war Festival schnell wieder von meinem System verbannt, und die Alternativ-Installation gestartet.
Im Großen und Ganzen habe ich mich dabei an die wirklich gute Anleitung von Malte J. Wetz gehalten:
Zunächst benötigt man natürlich Mbrola selbst, außerdem eine deutsche Sprachdatei, die die Sprecherstimme beinhaltet. Beides lässt sich herunterladen über:
http://tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html.
Ich habe mich für de2 entschieden, die anderen Sprecher fand ich aber auch nicht wirklich besser
. Ist halt Geschmackssache.
Und da Mbrola selbst keinen Text phonetisch richtig vorlesen kann, braucht es noch Unterstützung in Form von Txt2Pho.
Txt2Pho erzeugt aus einem ASCII-Text eine phontisch aufbereitete Ausgabe. Mit dieser produziert Mbrola dann eine verständliche Sprachausgabe.
Neben Txt2Pho selbst benötigt man von der gleichen Seite auch noch das Paket “Numfilt”. Dies setzt geschriebene Ziffern und Zahlen in die phonetisch korrekte Form um.
Das Entpacken der heruntergeladenen Archive nahm ich in folgenden Schritten nach /opt/mbrola vor:
# cd /opt
# mkdir mbrola
# cd mbrola
# unzip /home/stefan/mbr301h.zip
# unzip /home/stefan/de2-9901106.zip
# unzip /home/stefan/txt2pho.zip
# cd txt2pho
# tar xzvf /home/stefan/numfilt-0.1.tar.gz
Im Txt2Pho-Archiv sind noch die Tools “pipefilt” und “preproc” in den entsprechenden Unterverzeichnissen enthalten, leider sind diese nicht kompatibel zu Debian Lenny. Die Neuübersetzung ist aber simpel:
Pipefilt
# cd pipefilt
# g++ -o pipefilt pipefilt.cc
Preproc
# cd preproc
# rm preproc
# make
Und auch Numfilt will noch übersetzt werden:
# cd numfilt-0.1
# gcc -o numfilt numfilt.c
Schließlich muss Txt2Pho selbst noch ausführbar gemacht werden:
# chmod +x /opt/mbrola/txt2pho/txt2pho
So, und damit es nun später einfacher wird, die Programme auch zu konfigurieren und aufzurufen, noch ein paar Links nach /usr/local/bin und /etc:
# ln -s /opt/mbrola/txt2pho/txt2phorc /etc/txt2pho
# cd /usr/local/bin
# ln -s /opt/mbrola/mbrola-linux-i386 mbrola
# ln -s /opt/mbrola/txt2pho/txt2pho txt2pho
# ln -s /opt/mbrola/txt2pho/numfilt-0.1/numfilt numfilt
# ln -s /opt/mbrola/txt2pho/preproc/preproc preproc
# ln -s /opt/mbrola/txt2pho/pipefilt/pipefilt pipefilt
Zuletzt muss noch die Konfigurationsdatei /etc/txt2pho angepasst werden, dann ist die Grundinstallation auch schon fertig. Meine Datei sieht (unkommentiert) folgendermaßen aus:
DATAPATH=/opt/mbrola/txt2pho/data/
INVPATH=/opt/mbrola/txt2pho/data/
TEMPPATH=/tmp/
INVENTORY=male
DEBUGLEVEL=0
NEWTREE=newtree
REDUCTION=1
PROMCOMP=1
SPEECHRATE=1.15
USENET=3
Wenn nun noch sichergestellt ist, dass die Debian-Pakete “sox” und “somaplayer” installiert sind, ist die Konfiguration abgeschlossen, Mbrola läuft…
… Aber noch ziemlich umständlich. Um einen Text vorzulesen benötigt es ein Konstrukt wie:
$ echo “Lies mich vor.” | txt2pho - | mbrola /opt/mbrola/de2/de2 - /tmp/test.wav && aplay /tmp/test.wav
Aber auch hier hilft Malte weiter. Und zwar mit dem Skript “speak“.
Eine, an die hier vorgestellte Umgebung angepasste Version des Scripts, kann hier: heruntergeladen werden.
Einfach in /opt/mbrola entpacken und einen Link auf speak.sh setzen:
# ln -s /opt/mbrola/speak.sh /usr/local/bin/speak
Und jetzt wird’s endlich einfach:
$ echo “Endlich fertig.” | speak
oder:
$ speak <meine_datei .txt
In dieser Form in Scripte eingebaut, lässt sich viel (Un)Sinniges anstellen.
Ich lasse mir neben der Anzahl der neuen Mails und des Backup-Status beispielsweise auch vorlesen, wer mich gerade anruft, ISDN sei dank.
Weitere Spielereien, wie zum Beispiel ein “Speech-Device” (naja, eigentlich eine Pipe) sowie Hintergrundwissen zum Thema TTS (Text-To-Speech) findet sich bei Malte.
27. April 2008 um 12:52
Hallo,
habe diese Anleitung entdeckt, als ich nach “festival deutsches Sprachpaket” gesucht hatte. Naja, was will man mit festival, wenn das hier viel besser klappt!
Vielen Dank hierfür!
Grüße