De/TTS = Text zu Sprache
FlightGear unterstützt TTS (= „Text To Speech“ = Text zu Sprache) für alle „textlichen/getippten“ Mitteilungen, die auf dem Bildschirm dargestellt werden. Mit aktivem TTS werden diese Text-Meldungen zusätzlich über den Lautsprecher ausgegeben.
Eine Bemerkung vorweg: Wenn Du FGCOM verwendest, solltest Du evtl. auf die „Textübersetzung“ des Festival verzichten, denn wenn auf MPchat (FlightGear --> Menü --> Multiplayer) viel kommuniziert wird, werden die FGCOM-Nachrichten evtl. übertönt – und wenn Du FGCOM-Mitteilungen nicht verstehst wird Dein ansonsten netter ATC und sonstige Mitspieler nicht begeistert sein! Das Nicht-Hören von MPchat Nachrichten ist demgegenüber nicht so schlimm, denn diese kann man immer noch lesen (und sogar im MPchat nachschlagen!).
- In Windows ist eine solches TTS-Programm bereits ab XP in der Basis-Version enthalten.
- Für MAC OS X ist der Status derzeit unbekannt.
- Für Linux benutzt FlightGear die TTS-Maschine FESTIVAL, siehe http://www.cstr.ed.ac.uk/projects/festival.
Im Folgenden gehen wir nur auf die etwas komplexere Installation des "Festival" unter Linux ein:
Festival unter Linux installieren
- Installiere Festival, und dazu festlex-cmu, festlex-oald, festvox-don
- über das Installationsprogramm Deiner Distribution (z.B. via „Synaptic“) falls verfügbar.
- oder direkt von http://festvox.org/packed/festival/2.0.95/ (oder ältere Versionen)
- von dort lade, z.B.:
- festival-2.0.95-beta.tar.gz
- festlex_CMU.tar.gz
- festlex_OALD.tar.gz
- installiere diese entsprechend der Datei „INSTALL“ innerhalb des Packages
- wenn Du auch das „festlex_OALD.tar.gz“ manuell heruntergeladen hast, gehe in das Verzeichnis (siehe nachfolgend die Tabelle „Festival-Datenstruktur“) und führe darin das „make“ aus. Evtl. musst Du dazu dem „festival“-Befehl innerhalb der OALD-„makefile die Option „-heap 10000000“ hinzufügen).
- von dort lade, z.B.:
- Teste ob Festival (ohne FlightGear!) funktioniert. Hierzu öffne ein Befehlsfenster und gib ein: (In den folgenden Tests erscheinen Deine Eingaben in fett)
- $ festival
- festival> (SayText "FlightGear")
- festival> (quit)
-
Wenn dies funktioniert teste welche Sprachen verfügbar sind:
- $ festival
- festival> (print (mapcar (lambda (pair) (car pair)) voicelocations))
- (kal_diphone don_diphone)
- nil
- festival> (quit)
In der Steuerungsdatei "$FG_ROOT/preferences.xml" werden aber zusätzliche Sprachen verwendet! Siehe die 4 "preamble>"-Definitionen zwischen den XML-codes <sound>- <sound>
- <preamble type="string"></preamble>
- <preamble type="string">(voice_us2_mbrola)</preamble>
- <preamble type="string">(voice_en1_mbrola)</preamble>
- <preamble type="string">(voice_don_diphone)</preamble>
- </sound>
- <sound>
Festival mit FlightGear testen
- Starte den Festival-Server (dieser muss aktiv sein bevor Du FlightGear startest!)
- Hierzu öffne ein Befehlsfenster und gib „festival --server“ ein:
- $ festival --server
- server Thu Jun 3 09:48:42 2010 : Festival server started on port 1314
- Lass das Fenster so lange offen bis Du FlightGear beendet hast. Dieser Server muss immer aktive sein, wenn Du Festival benutzen willst!!
- Dann startest Du in einem 2ten Fenster einen ganz primitiven FlightGear:
- fgfs --aircraft=j3cub \
- --airport=KSQL \
- --prop:/sim/sound/voices/enabled=true
- Nachdem FlightGear gestartet ist
- benutze
- auf deutschen Tastaturen die „-“-Taste
- auf englischen Tastaturen die „/“-Taste
- dann tippe „3“ → „6“ → „5“ um eine Taxi-Freigabe anzufordern
- auf dem Bildschirm sollte in gelb Deine Anforderung erscheinen und etwas verzögert über Lautsprecher ausgesprochen werden
- und etwas später erfolgt die ATC-Freigabe in grün – und in Sprache! (Hoffentlich!)
- benutze
Obige Option „--prop:/sim/sound/voices/enabled=true“ benötigt FlightGear für das Festival. Du kannst diese natürlich
- Deiner üblichen „Start-Befehlsdatei“ hinzufügen (denke an das „\“ wenn es als Fortsetzung einer Zeile benötigt wird!)
- oder im FGrun als Property „/sim/sound/voices/enabled=true“ in den erweiterten Optionen einfügen.
Du kannst diese Option aktive belassen - auch wenn Du Festival nicht benutzt. Allerdings erscheinen dann beim Start im FlightGear-Log einige Meldungen die besagen dass Festival nicht gestartet werden konnte.
Mögliche Probleme
Auf einigen Linux-Distributionen ist der Zugang zu Festival eingeschränkt. Du erkennst dies an der folgenden Fehlermeldung:
- client(1) Tue Feb 21 13:29:46 2006 : \
- rejected from localhost.localdomain
- not in access list
- client(1) Tue Feb 21 13:29:46 2006 : \
Siehe hierzu: http://www.cstr.ed.ac.uk/projects/festival/manual/festival_28.html#SEC130.
Du kannst diese Einschränkungen aufheben, indem Du die folgenden Statements einer „.festivalrc“-Datei hinzufügst (Vorsicht: vergiss nicht den Punkt am Anfang des Namens!):
- (set! server_access_list ’("localhost"))
- (set! server_access_list ’("localhost.localdomain"))
Du kannst aber auch jegliche Einschränkung aufheben, indem Du Folgendes eingibst:
- (set! server_access_list nil)
Vorsicht: Letzteres erlaubt den Zugriff von überall her – Du solltest dies nur erlauben wenn Du eine
Firewall für Deinen PC verwendest!
Schönere Sprachen mit MBROLA
Wie bereits am Ende der Festival-Installation erwähnt, kannst Du Dir sehr viel „schönere“ künstliche Stimmen installieren. Das ist leider etwas kompliziert – lohnt sich unseres Erachtens
aber auch!
Dazu musst Du das einfache Programm „mbrola“, dazu die „mbrola Sprach-Codes und die dazu passenden „Festival-Einbindungen“ installieren. Gehe folgendermaßen vor:
- Teste ob MBROLA bereits installiert ist
- $ mbrola h
- $ mbrola -h (-h war für mich notwendig, um keine Fehlermeldung zu erhalten)
- Falls MBROLA schon installiert ist, sollte eine Liste der Befehlsoptionen für MBROLA erscheinen.
Falls eine Fehlermeldung erscheint installiere MBROLA mit den zusätzlich benötigten Modulen:
- entweder über Deine Installations-Werkzeuge (z.B.. „Synaptic“)
- oder direkt von http://tcts.fpms.ac.be/synthesis/mbrola/:
- klicke in der linken Spalte auf „Download“
- klicke unterhalb des Titles „What you will have to copy“ auf „MBROLA binary and voices“ (schwierig zu finden, aber ...)
- download zuerst aus dem oberen Teil eine Binary entsprechend Deinem System
- danach etwas weiter unten die gewünschten „Voices“ (Stimmen) Deiner Wahl,
- zumindest: us2 und en1 (siehe obige Vorgabe in der preferences.xml!)
- (Du kannst auch zusätzliche/andere „Voices“ herunterladen und verwenden, diese musst Du dann in Deiner $FG_ROOT/preferences.xml aktivieren, indem Du die Zeilen mit <preamble type..> unter <voice> unter <sound> entsprechend abänderst! s.o.)
- Zusätzlich dazu musst Du auch noch die entsprechenden Festvox-Hüllen hinzufügen:
- Also z.B. die festvox_en1.tar.gz und festvox_us2.tar.gz (ref. die folgende Tabelle Festival-Datenstruktur).
- Entpacke die Teilstücke und kopiere sie in Dein Festival-Datenverzeichnis (wahrscheinlich "/usr/share/festival" oder "/usr/local/Festival"). Du solltest dann etwa die folgende Struktur für Deine Festival-Daten haben:
Die Festival Daten-Strukturen
Die Festival-downloads können aus verschiedenen Versionen sein, denn mit einer neueren Versionen werden nicht immer alle Sprachen etc. geändert: (ref.: http://festvox.org/packed/festival/ )
- ver. 1.95: Original-Einführung in FlightGear, kaum noch zu finden, hat aber als einziges alle Sprach-Codes (empfohlen)
- ver. 1.96: neueste Version für die Sprachmodule (in vielen Linux-Distributionen, enthält nicht alle Sprach-Codes)
- ver. 2.0.95: Neuste Programm-Version, enthält keine Sprach-Codes (empfohlen)
Die folgende Struktur zeigt Dir beispielhaft wie die verschiedenen Festival und MBROLA Teilstücke strukturiert werden und von wo sie heruntergeladen werden können.
Die hierzu benötigte Basis-Struktur wird bereits bei der Installation des FlightGear erstellt :
- das Programm selbst wird zumeist in das Verzeichnis „/user/lib/“ installiert (in der Tabelle nicht gezeigt)
- die Daten-Struktur wird zumeist in
- /usr/share/festival oder
- /usr/local/festival
- angelegt, in die Du dann mehr und mehr Sprachen etc. einfügen kannst, siehe das nachfolgende Schema:
Explorer-Struktur: | Download von: |
---|---|
festival | http://festvox.org/packed/festival/2.0.95/ |
| |
|
http://festvox.org/packed/festival/2.0.95/ |
|
http://festvox.org/packed/festival/2.0.95/ |
| |
| |
| |
|
http://festvox.org/packed/festival/1.95/ |
| |
| |
| |
|
http://festvox.org/packed/festival/1.95/ |
|
http://tcts.fpms.ac.be/synthesis/mbrola/ |
| |
| |
...etc. |
Beachte den Unterschied zwischen dem „diphone“-Typ (= original festival) und den verfeinerten „mbrola“-Typen! In letzterem kommt z.B. „en1_mbrola“ von „festival“ während das dann dahinein eingebettet „en1“ von „mbrola“ kommt! (entsprechendes gilt dann natürlich für weitere Sprachen!).
Richtig: sehr verwirrend – aber ich hoffe die vorstehende Tabelle hilft!