De/TTS = Text zu Sprache: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
m (First saving - not yet complete)
 
m (First Release)
Line 10: Line 10:
Im Folgenden gehen wir nur auf die etwas komplexere Installation des "Festival" unter Linux ein:
Im Folgenden gehen wir nur auf die etwas komplexere Installation des "Festival" unter Linux ein:
<br><br>
<br><br>
==Festival unter Linux installieren==
=='''Festival unter Linux installieren'''==
<ol>
<ol>
<li>Installiere '''Festival''', und dazu '''festlex-cmu''', '''festlex-oald''', '''festvox-don'''</li>
<li>
Installiere '''Festival''', und dazu '''festlex-cmu''', '''festlex-oald''', '''festvox-don'''</li>
*über das Installationsprogramm Deiner Distribution (z.B. via „Synaptic“) falls verfügbar.
*ü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)
*oder direkt von http://festvox.org/packed/festival/2.0.95/ (oder ältere Versionen)
Line 21: Line 22:
**installiere diese entsprechend der Datei „INSTALL“ innerhalb des Packages
**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).
**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).
 
</li><li>
<li>Teste ob Festival (ohne FlightGear!) funktioniert. Hierzu öffne ein Befehlsfenster und gib
Teste ob Festival (ohne FlightGear!) funktioniert. Hierzu öffne ein Befehlsfenster und gib
ein: (In den folgenden Tests erscheinen Deine Eingaben in fett)</li>
ein: (In den folgenden Tests erscheinen Deine Eingaben in fett)</li>
:::$ '''festival'''
:::$ '''festival'''
Line 29: Line 30:
''Beachte: Die "()"-Klammern  müssen sein und nach der ersten Eingabe „festival“ ändert
''Beachte: Die "()"-Klammern  müssen sein und nach der ersten Eingabe „festival“ ändert
sich die Eingabe-Aufforderung von „~$“ nach „festival>“''
sich die Eingabe-Aufforderung von „~$“ nach „festival>“''
 
</li><li>
<li> Wenn dies funktioniert teste welche Sprachen verfügbar sind:
Wenn dies funktioniert teste welche Sprachen verfügbar sind:
:::$ '''festival'''  
:::$ '''festival'''  
:::festival> '''(print (mapcar (lambda (pair) (car pair)) voice­locations))'''
:::festival> '''(print (mapcar (lambda (pair) (car pair)) voice­locations))'''
Line 41: Line 42:
::<sound>
::<sound>
:::<preamble type="string"></preamble>
:::<preamble type="string"></preamble>
:::<preamble type="string">(voice_us2_mbrola)</preamble>
:::<preamble type="string">('''voice_us2_mbrola''')</preamble>
:::<preamble type="string">(voice_en1_mbrola)</preamble>
:::<preamble type="string">('''voice_en1_mbrola''')</preamble>
:::<preamble type="string">(voice_don_diphone)</preamble>
:::<preamble type="string">('''voice_don_diphone''')</preamble>
::</sound>
::</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.
'''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.'''
</ol><br>
</li></ol><br>
==Festival mit FlightGear testen==
=='''Festival mit FlightGear testen'''==
*Starte den Festival-Server (dieser muss aktiv sein bevor Du FlightGear startest!)
*Starte den Festival-Server (dieser muss aktiv sein bevor Du FlightGear startest!)
**Hierzu öffne ein Befehlsfenster und gib „festival --server“ ein:
**Hierzu öffne ein Befehlsfenster und gib „festival --server“ ein:
Line 58: Line 59:
:::    ­­--prop:/sim/sound/voices/enabled=true  
:::    ­­--prop:/sim/sound/voices/enabled=true  
:*Nachdem FlightGear gestartet ist
:*Nachdem FlightGear gestartet ist
:**benutze die '''„-“'''-Taste (auf deutschen Tastaturen, '''„/“''' auf englischen) um das ATC-Fenster zu öffnen
:**benutze
:***auf deutschen Tastaturen''' die „-“'''-Taste
:***auf englischen Tastaturen die '''„/“'''-Taste
:**dann tippe „'''3'''“ → „'''6'''“ → „'''5'''“ um eine Taxi-Freigabe anzufordern
:**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
:***auf dem Bildschirm sollte in gelb Deine Anforderung erscheinen und etwas verzögert über Lautsprecher ausgesprochen werden
Line 66: Line 69:
*Deiner üblichen „Start-Befehlsdatei“ hinzufügen ''(denke an das „\“ wenn es als Fortsetzung einer Zeile benötigt wird!)''
*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.
*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.
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.
<br><br>
=='''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
<br>
Siehe hierzu: http://www.cstr.ed.ac.uk/projects/festival/manual/festival_28.html#SEC130.
<br>
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!
<br><br>
=='''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!
<br>
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'''
 
*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.)''
<br>
*'''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:
<br>
=='''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)
<br>
Die folgende Struktur zeigt Dir beispielhaft wie die verschiedenen Festival und MBROLA Teilstücke strukturiert werden und von wo sie heruntergeladen werden können.
<br>
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:
<br>
{| class="wikitable" border="1"
|-
!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!).
<br><br>
Richtig: sehr verwirrend – aber ich hoffe die vorstehende Tabelle hilft!
 
[[Category:Software]]

Revision as of 17:25, 22 February 2011

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