ubuntuusers.de

Festival

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png 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.

Installation

Festival ist in den Paketquellen vorhanden, folgende Pakete müssen installiert [1] werden:

  • festival (universe)

  • festival-doc (universe, optional, Dokumentation des Programms)

  • festival-freebsoft-utils (universe, optional, zur Erweiterung der Ausgabemöglichkeiten)

Paketliste zum Kopieren:

sudo apt-get install festival festival-doc festival-freebsoft-utils 

Oder mit apturl die Pakete installieren. Link: apt://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

Manuelle Installation

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.

Bedienung

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.

Sprache/Stimme festlegen

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 Optionen

"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 Optionen

"interne" Festival-Optionen
OptionFunktion
(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.

Wave-Dateien erzeugen

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.

Probleme bei der Erstellung/Ausgabe von .wav-Dateien

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.

Online-Demo

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.

Probleme und Lösungen

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.

Alternativen

  • Sprachausgabe Übersichtartikel

  • eSpeak - "kleinerer" Sprach-Synthesizer, der auf künstlicher Spracherzeugung basiert.

  • Flite - C-Derivat von Festival

  • xsane2speech - Dokumente direkt aus XSane heraus "vorlesen" und als .mp3 archivieren

  • Projektseite 🇬🇧

  • 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 19. April 2019 15:00 von Beforge erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sprachausgabe, TTS, Kommunikation, Barrierefreiheit, Bildung, Büro, Multimedia