Mbrola oder hier spricht mein Computer
MBrola : Text-Stimmen-Syntese
Installationanleitung Mbrola, 03.12.02 Jörn Eisenkrätzer
Quelle:
http://tcts.fpms.ac.be/synthesis/mbrola
1. Benötigte Dateien:
mbrola: Stimmen-Syntesizer (z.Zt. Version 3.01)
txt2pho: Tool, zum Wandeln von Text-Dateien zu pho-Dateien,
versorgt den Syntesizer mit phonetische Informationen.
de[n]: spezif. Sprachdatei z.B de3-000307 oder de5 (etwas besser in Qualität)
Vorbedingung: Installation eines wav-Dateien-Abspielers, z.B. 'play'
2. Installation
Lege mbrola-Verzeichnis an, (/usr/local/mbrola) und entpacke die
mbrola-, Sprach- und text2pho-Datei dort:
$ su
Password:
# mkdir /usr/local/mbrola
# unzip -d /usr/local/mbrola/ mbr301h.zip
Archive: mbr301h.zip
inflating: .....
# unzip -d /usr/local/mbrola/ de3-000307.zip
Archive: de3-000307.zip
creating: .....
inflating: .....
# unzip -d /usr/local/mbrola/ txt2pho.zip
Archive: txt2pho.zip
inflating: .....
extracting: ....
inflating: .....
3. Nacharbeit
Die Stimmendatei muss von txt2pho/data-Verzeichnis ansprechbar sein,
deshalb Verlinken:
# ln -s /usr/local/mbrola/de3/de3 /usr/local/mbrola/txt2pho/data/de3
Ein paar weitere Links, damit diese Dateien vom Standart-Pfad ansprechbar sind:
# ln -s /usr/local/mbrola/mbrola-linux-i386 /usr/bin/mbrola
# ln -s /usr/local/mbrola/txt2pho/txt2pho /usr/bin/txt2pho
# ln -s /usr/local/mbrola/txt2pho/pipefilt /usr/bin/pipefilt
# exit
$
Kopieren der txt2phorc in als Konfigurationsdatei in's Home-Verzeichnis, sowie
Öffnen der Datei in einem Editor und Konfigurieren folgender Angaben:
$ cp /usr/local/mbrola/txt2pho/txt2phorc $HOME/.txt2phorc
DATAPFATH=/usr/local/mbrola/txt2pho/data/data
INVPATH=/usr/local/mbrola/txt2pho/data/
INVENTORY=female
4. Test
Test 1: Umwandlung einer vorhandenen Beispiel-pho-Datei in eine wav-Datei nach Syntax :
mbrola de-Stimmdatei pho-Datei.pho Ausgabedatei.wav
$ mbrola /usr/local/mbrola/txt2pho/data/de3 /usr/local/mbrola/de3/TEST/wetter.pho wetter.wav
$/var/home/joern$ play wetter.wav
playing wetter.wav
Optionen: mbrola -f 1.2 -t 1.1 /usr..(usw.) => höhere Stimme, geringere Sprechgeschwindigkeit
Test 2. Final
Einen beliebigen Text im Editoe erstellen und abspeichern, z.B. hallo.txt .
Text in eine pho-Datei wandeln: txt2pho -i hallo.txt -o hallo.pho
pho-Datei in wav-Datei wandeln: mbrola /usr/local/mbrola/txt2pho/data/de3 hallo.pho hallo.wav
Abspielen: play hallo.wav
5. optionale Scripte
5.1 Einfache Textdatei-Wiedergabe
------------- schnipp ----------------------
#!/bin/bash
# txt2sound
#
txt2pho -i $1 -o textsend.pho
mbrola -f 0.8 -t 1.1 /usr/local/mbrola/txt2pho/data/de5 textsend.pho textsend.wav
play textsend.wav
rm textsend.pho
rm textsend.pho
------------- schnapp ----------------------
- > Abspeichern unter txt2sound
- > Datei Ausführbar machen chmod u+x txt2sound
Ausführen Version 1, Eingabe in Konsole:
./txt2sound datei.txt
Ausführen Version 2, Aufruf über Konqueror:
txt2sound als root nach /usr/bin kopieren
Mit rechter Maustaste im Konqueror auf Textdatei klicken
wähle im Kontexmenue 'Öffnen mit' – 'sonstiges', es öffnet sich eine Maske
trage in der Maske unter 'Öffnen mit' txt2sound ein und aktiviere im 'Im Terminal ausführen', sowie 'Programm diesem Dateityp fest zuordnen', damit txt2sound im Kontexmenue eingetragen wird.
Eine mit der Maus selektierte Textdatei wird jetzt durch mit einem Klick auf ihr mit der rechten Maustaste und durch Auswahl von 'Öffnen mit' – 'txt2sound' vom Computer vorgelesen.
Script modifiziert zum Lesen von HTML-Dateien:
------------- schnipp ----------------------
#!/bin/bash
#
/usr/bin/html2text $1 1>/tmp/temptext.txt
txt2pho -i /tmp/temptext.txt -o /tmp/textsend.pho
mbrola -f 0.8 -t 1.1 /usr/local/mbrola/txt2pho/data/de5 /tmp/textsend.pho /tmp/textsend.wav
play /tmp/textsend.wav
rm /tmp/textsend.pho
rm /tmp/textsend.wav
rm /tmp/temptext.txt
------------- schnapp ----------------------
5.2 Textdatei-Wiedergabe über Eingabedialog
------------- schnipp ----------------------
#!/bin/bash
# txt2laut
#
echo " "
echo "Bitte Namen der Text-Datei eingeben. "
echo " "
read DATEINAMEN
echo " "
test -f $DATEINAMEN; ZUSTAND=$?
if test $ZUSTAND -gt 0
then
echo "Datei nicht gefunden"
sleep 3
exit
else
echo "Lese Datei ... "
fi
echo " "
txt2pho -i $DATEINAMEN -o /tmp/textsend.pho
mbrola /usr/local/mbrola/txt2pho/data/de3 /tmp/textsend.pho /tmp/textsend.wav
play /tmp/textsend.wav
rm /tmp/textsend.pho rm/tmp/textsend.wav
------------- schnapp ----------------------
5.3 Die Textwiedergabe der Konsoleneingabe
------------- schnipp ----------------------
#!/bin/bash
# tipp2laut
#
echo "Gebe text ein :"
echo ""
read TEXT
echo $TEXT > /tmp/tipptemp.txt
txt2pho -i /tmp/tipptemp.txt -o /tmp/tippsend.pho
mbrola /usr/local/mbrola/txt2pho/data/de3 /tmp/tippsend.pho /tmp/tippsend.wav
play /tmp/tippsend.wav
rm /tmp/tipptemp.txt
rm /tmp/tippsend.pho
rm /tmp/tippsend.wav
------------- schnapp ----------------------
5.4 Die Zeitansage
------------- schnipp ----------------------
#!/bin/bash
# tipp2laut
#
set `date`
uhrzeit=`echo $4|cut -d: -f1,2` # Hochkomma aus der Zahlenreihe
stunde=`echo $4|cut -d: -f1`
minute=`echo $4|cut -d: -f2`
echo " Es ist $stunde Uhr und $minute Minuten " > /tmp/tempzeit.txt
txt2pho -i /tmp/tempzeit.txt -o /tmp/zeitsend.pho
mbrola /usr/local/mbrola/txt2pho/data/de3 /tmp/zeitsend.pho /tmp/zeitsend.wav
play /tmp/zeitsend.wav
rm /tmp/tempzeit.txt
rm /tmp/zeitsend.pho
rm /tmp/zeitsend.wav
------------- schnapp ----------------------
- have o lot of fun -
Weitere Literatur: LinuxUser 04/2002, Seite 25