De/TTS = Text zu Sprache

From FlightGear wiki
Jump to navigation Jump to search

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

  1. 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).
  2. Teste ob Festival (ohne FlightGear!) funktioniert. Hierzu öffne ein Befehlsfenster und gib ein: (In den folgenden Tests erscheinen Deine Eingaben in fett)
  3. $ festival
    festival> (SayText "FlightGear")
    festival> (quit)
    Beachte: Die "()"-Klammern müssen sein und nach der ersten Eingabe „festival“ ändert sich die Eingabe-Aufforderung von „~$“ nach „festival>“
  4. Wenn dies funktioniert teste welche Sprachen verfügbar sind:
    $ festival
    festival> (print (mapcar (lambda (pair) (car pair)) voice­locations))
    (kal_diphone don_diphone)
    nil
    festival> (quit)
    In diesem Fall sind also „kal_diphone“ und „don_diphone“ bereits installiert!
    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>
    Diese „höherwertigen/realistischeren“ Sprachen werden mit der nachfolgenden MBROLA-Installation hinzugefügt. Wenn Du darauf verzichten willst, musst Du die „preference.xml“ entsprechend abändern, so dass nur verfügbare Sprachen (in <preamble>) gefordert werden.


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!)


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


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/
dicts
cmu
http://festvox.org/packed/festival/2.0.95/
oald
http://festvox.org/packed/festival/2.0.95/
wsj....
voices
english
don_diphone
http://festvox.org/packed/festival/1.95/
festvox
diphlocs.txt
lpcdiphs.bin
en1_mbrola
http://festvox.org/packed/festival/1.95/
en1
http://tcts.fpms.ac.be/synthesis/mbrola/
festfox
en1mrpa
...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!