Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
Festival liefert ein Gerüst zur Sprachwiedergabe (TTS - "Text-to-Speech"). Das Projekt wird von der Universität Edinburgh entwickelt. Es lassen sich Module für etliche Sprachen integrieren; der Zugriff kann über verschiedene Wege erfolgen: über die Kommandozeile, einen Scheme-Interpreter, als Server, über Java oder eine Emacs-Schnittstelle. Standardmäßig wird Englisch als Ausgabe-Sprache verwendet, es können aber weitere Sprachen verwenden werden. Außerdem können Textausgaben in .wav-Dateien gespeichert werden. Die vollständige Dokumentation, auch zum Erstellen neuer Sprachen/Stimmen, ist über das Projekt festvox.org der Carnegie Mellon University beziehbar.
Festival ist in den Paketquellen vorhanden, folgende Pakete müssen installiert [1] werden:
festival
festival-doc (optional, Dokumentation des Programms)
festival-freebsoft-utils (optional, zur Erweiterung der Ausgabemöglichkeiten)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install festival festival-doc festival-freebsoft-utils
sudo aptitude install festival festival-doc festival-freebsoft-utils
Außerdem müssen die gewünschten Stimmen installiert werden, sie sind als Pakete unter den Namen festvox-* zu finden. In den Quellen sind derzeit englische/amerikanische, italienische, spanische, tschechische, russische und finnische Stimmen, sowie Stimmen in Hindi, Telugu und Marathi verfügbar; für einige Sprachen werden auch weitere Lexikon-Dateien benötigt
Um Festival auch für weitere Sprachen, u.a. deutsch, verfügbar zu machen, muss das Programm aus dem Quellcode erstellt und erheblich erweitert werden. Dieses nicht ganz einfache Verfahren wird in Festival/Kompilieren beschrieben.
Festival stellt ein Kommandozeilen-Werkzeug zur Verfügung, das auf zwei Ebenen bedienbar ist. Die allgemeine Syntax auf der Kommandozeile[2] lautet:
festival OPTION(EN) TEXTDATEI1 TEXTDATEI2 ...
Mit der Eingabe von
festival
wechselt man in eine SIOD-Shell in das Programm, der Prompt im Terminal ändert sich in
festival >
Mit der Eingabe von help
wird eine kurze Hilfebeschreibung ausgegeben. Die eigentlichen Befehle werden in Klammern eingegeben; um den Text direkt auszugeben, tippt man z.B.
(SayText "Hello")
ein; um eine Datei namens FILENAME
vorzulesen
(tts "FILENAME" nil)
ggf. den Pfad mit angeben.
Ohne Angabe der Sprache wird Englisch verwendet; eventuell installierte Sprachen lassen sich dann auf der SIOD-Ebene aber verwenden. Die Fehlermeldung unbound variable ...
weist z.B. auf nicht installierte Sprachen oder Tippfehler hin. Auch mit der Angabe einer anderen Sprache-Option , z.B. --language italian
, lassen sich dann andere Stimmen/Sprachen einsetzen. Für verwendete Sprachen muss standardmäßig das entsprechende Wörterbuch (festlex*, oder andere sprachspezifische Dateien) mit den Regeln zur Aussprache vorhanden sein.
Die Sprecherstimme kann leider für Festival im externen Aufruf nicht festgelegt werden, beim Aufruf mit der Option --language <Sprache>
, wird eine intern festgelegte Standardsprache verwendet. Festival liest allerdings auch die Einträge der .feststialrc im Homeverzeichnis des Benutzers (einfache Textdatei, die ggf. erst angelegt werden muss). Hier kann die tatsächlich zu verwendende Stimme festgelegt werden (diese Eintragungen haben Vorrang vor den internen, auch bei angegebener Option zur Sprache werden diese Stimmen verwendet), für die weibliche italienisch Stimme wäre dort z.B.
(set! voice_default voice_pc_diphone)
anzugeben [2]. Um einfacherer Umschalten zu können, kann man sich alle verfügbaren Festival-Stimmen mit einem führenden ;
in dieser Form eintragen, für die tatsächlich zu nutzende wird das Semikolon dann jeweils entfernt. Die Namen der installierten Stimmen findet man bei Installation aus den Paketquellen unter /usr/share/festival/voices/[SPRACHE]/, die Kürzel werden mit vorgestelltem voice_
verwendet. Die Stimmen in Hindi, Telugu, und Marathi benötigen anscheinend Eingaben in den entsprechenden Zeichensätzen, die russische Stimme kann aber auch lateinische Buchstaben "lesen". Wenn versucht wird, Texte mit für die Sprachen unbekannten Zeichen wiederzugeben kann es zu Fehlern kommen.
Festival legt im Homeverzeichnis des Benutzers eine .festival_history-Datei an, in der alle eingegebenen Befehle gespeichert werden. Diese sollte man ggf. hin und wieder leeren.
"externe" Festival-Optionen | |
Option | Funktion |
-q | Keine Verwendung der Standard-setup-Dateien |
--datadir <string> | Pfadangaben zu den Festival-Dateien |
--libdir <string> | Pfadangabe für die Bibliotheken |
-b, --batch | "Batch"- Modus (keine Interaktion) |
--tts | Gibt Text aus Dateien als Sprache wieder; wenn keine Datei angegeben ist, wird von stdin gelesen (impliziert standardmäßig, dass keine interaktive Bedienung erfolgt) |
-i, --interactive | Interaktiver Modus (Standardeinstellung) |
--pipe | "pipe"-Modus, Befehle werden von stdin gelesen, allerdings ohne "Prompt" oder Ausgabe von Werten (Standard, wenn stdin keine tty ist) |
--language <string> | Verwendet die angegebene Sprache, Standard ist english ; spanish , russian und welsh sind direkt vorgesehen (jeweils in englischer Schreibweise!) |
--server | Server-Modus; erwartete werden Eingaben von Clients auf Port 1314 |
-v, --version | Ausgabe der Programm-Version |
"interne" Festival-Optionen | |
Option | Funktion |
(help) | Gibt eine kurze Hilfe-Liste aus |
(doc [SYMBOL]) | Hilfe zu [SYMBOL] |
(manual nil) | Öffnet das Handbuch in netscape |
Strg + C | Rückkehr zum obersten Eingabelevel |
Strg +
D oder (quit) | Beendet Festival |
Esc + H | Zeigt Hilfe zum angegebenen Symbol |
Esc + S | Spricht Hilfe zum angegebenen Symbol |
Esc + M | Soll die relevante Seite des Handbuches in Netscape anzeigen; obsolet |
Tab ⇆ | Befehls- Symbol- und Dateiname-Vervollständigung |
Strg + P oder ↑ | Letzten Befehl wieder anzeigen |
Strg + B oder ← | Eine Zeichen zurückgehen |
Strg + F oder → | Zum nächsten Zeichen gehen |
Es lasse sich Emacs-Befehle auf der Kommandozeile verwenden | |
direkte Ausgabe-Optionen | |
(SayText "TEXT") | Gibt beliebigen "TEXT" aus, der Text sollte in Anführungszeichen stehen |
(tts "DATEINAME" nil) | Gibt den Text einer Datei wieder, DATEINAME sollte in Anführungszeichen stehen; ggf. Pfad mit angeben |
(voice_rab_diphone) | Wählt die Stimme (British Male) |
(voice_ked_diphone) | Wählt die Stimme (American Male) |
Je nach installierten Stimmen lassen sich die entsprechenden Angaben machen (z.B. voice_pc_diphone
(weiblich italienisch) voice_pc_diphone
(männlich italienisch, voice_el_diphone
(männlich spanisch/katalanisch), im Zweifelsfall lassen sich in /usr/share/festival/voices/[SPRACHE]/ die verwendeten Namen in Erfahrung bringen.
Festival versucht, die Handbuchseiten in Netscape zu öffnen; allerdings ist der Browser nicht in den Paketquellen vorhanden, und wird seit 2 1/2 Jahren nicht mehr weiterentwickelt; eine symbolischer Link mit Namen netscape in /usr/bin/ auf firefox
würde dieses Problem lösen. Tatsächlich aber existiert für die über die Paketquellen installierte Version 2.0.95 bzw. 2.1 kein Handbuch auf der Projektseite; dort ist als aktuellste Version das 1.4-Handbuch verfügbar.
Mit dem mitinstallierten Skript text2wave können direkt Wave-Dateien der wiedergegebenen Texte erstellt werden. Die Syntax vergleichsweise ist simpel.
text2wave EINGABE.txt" -o AUSGABE.wav
erzeugt aus dem Eingabetext eine Wave-Datei. Dazu werden die einzelnen Audiodateinen (festival erzeugt für jeden Satz des Textes eine einzelne Audio-Datei in /tmp) zu einer gemeinsamen Datei zusammengefasst. Omilo (und bei Bedarf auch xsane2speech) setzen dieses Skript ein, um abspeicherbare Textausgaben zu erzeugen.
Falls die Erstellung scheinbar ohne Ergebnis abbricht (oder z.B. in Omilo schlicht keine Ausgabe erfolgt), kann es sinnvoll sein, im /tmp-Ordner nach est_XXXXX_XXXXX-Dateien zu forschen. Die mit der höchsten Nummer ist die letzte, die festival erstellen konnte. Nachdem man diese in einem Audio-Player angehört hat, kann man im wiederzugebenden Text nachschauen, ob in dem direkt darauf folgenden Textabschnitt ggf. für festival problematische Zeichenfolgen auftauchen, die Erstellung haben abbrechen lassen. Die deutsche Version reagiert z.B. sehr empfindlich auf Buchstaben-Punkt-Kombinationen (z.B. "r.l.
", Namensabkürzungen wie "T.W. Adorno
" o.ä.), wenn diese nicht in der verwendeten Version von ims_german_token_to_words_lists.scm verzeichnet sind. Auch Zahlen-Buchstaben-Kombinationen (wie in 1970er Jahre
) können Fehler hervorrufen. Diese Fehler entfernen (z.B. Punkte löschen, nach den Zahlen Leerzeichen einfügen, oder Kombinationen im Lexikon/Abkürzungsdatei aufnehmen), dann sollte Wave-Erstellung wieder fehlerfrei durchlaufen.
Für Festival gibt es von der Universität Edinburgh ein Online-Demo , leider nur in Englisch, dort aber auch für die neusten Entwicklungen.
Falls Festival die Ausgabe mit der Fehlermeldung
SIOD ERROR: ran out of storage
abbricht, liegt das nicht unbedingt an fehlender Speicherkapazität, sondern ggf. an einem zu niedrigen Lisp-Heap-Wert. Standardmäßig ist 1000000 eingestellt, Festival kann aber mit der Option --heap WERT
mit einem höheren Wert gestartet werden; der Entwickler empfiehlt gleich eine Verzehnfachung. Der Fehler kann bei sehr vielen gleichzeitig installierten Stimmen auftreten, auch mit der deutschen IMS-Version kommt es ggf. zu so einer Meldung.
Sprachausgabe Übersichtartikel
eSpeak - "kleinerer" Sprach-Synthesizer, der auf künstlicher Spracherzeugung basiert.
KMouth verwendet standardmäßig Festival als Sprach-Synthesizer
xsane2speech - Dokumente direkt aus XSane heraus "vorlesen" und als .mp3 archivieren
festvox.org - US-amerikanische "Schwesterseite"
Cerva - einfache GUI zum Testen von Festival
Thread auf ubuntuforums.org zur Installation weiterer Festival-Sprachen
Diese Revision wurde am 28. September 2015 13:50 von Heinrich_Schwietering erstellt.