Text-to-Speech beschreibt die Umwandlung von geschriebenem Text in gesprochenen Text (Sprachsynthese) auf Computersystemen. Auf unserem Asterisk-System bedeutet das, dass ein Programm anhand einer Textdatei (meist in ASCII) eine entsprechende Audiodatei (Soundfile) erzeugt. Diese kann wie jede andere Multimediadatei abgespielt werden, und man hört den Text dann gesprochen. Wie bei vielen Software-Projekten wird die englische Sprache meist besser unterstützt als die deutsche.
Darüber hinaus gibt es große Qualitätsunterschiede zwischen den offenen und freien (meist GPL) Engines und entsprechenden kommerziellen Lösungen. Das Sprach-Synthese-System „Festival“ (http://www.cstr.ed.ac.uk/projects/festival/) eignet sich gerade noch so für englischen Text, aber spätestens bei deutschen Texten lässt die Qualität sehr zu wünschen übrig. Als guten Kompromiss kann man die Software der amerikanischen Firma Cepstral (http://www.cepstral.com/) nehmen. Es gibt dort eine kostenlose Probeversion und eine recht günstige Vollversion. [75]Die hier vorgestellte Lösung baut auf der Cepstral-Engine auf.[76]
Warnung | |
---|---|
Cepstral und Festival sind beides keine qualitativ hochwertigen Text-to-Speech-Engines! Leider gibt es in diesem Bereich nur im Hochpreissegment wirklich gute Lösungen. |
Auf der Webseite http://www.cepstral.com/downloads/
können Sie die deutsche Sprach-Engine herunterladen (eventuell müssen
Sie auf den Link „Additional Voices“ klicken). Die
entsprechende Datei (hier im Beispiel immer als
Cepstral_Matthias_i386-linux_4.1.2.tar.gz
bezeichnet) wird wie folgt installiert:
tar xvzf Cepstral_Matthias_i386-linux_4.1.2.tar.gz cd Cepstral_Matthias_i386-linux_4.1.2 ./install
Falls Sie bei der Installation nichts anderes angeben, wird die
Engine als /opt/swift/bin/swift
installiert. Testen
können Sie dies mit folgender Eingabe auf der
Linux-Kommandozeile:
/opt/swift/bin/swift -o /tmp/test.wav -p audio/sampling-rate=8000,audio/channels=1 "Dies ist ein Test."
Das
Ergebnis kann man sich entweder mit einem Audioplayer oder mit Asterisk
anhören. Dazu fügen Sie einfach in der
extensions.conf
folgenden Eintrag
hinzu:
exten => 1234,1,Answer() exten => 1234,2,Playback(/tmp/test) exten => 1234,3,Hangup()
Um einen beliebigen Text ausgeben
zu lassen, benutzen wir die System()
-Applikation im
Dialplan. Hier sehen Sie ein Beispiel:
exten => 1222,1,Answer() exten => 1222,2,System(rm -rf /tmp/test.wav) exten => 1222,3,System(/opt/swift/bin/swift -o /tmp/test.wav -p audio/sampling-rate=8000,audio/channels=1 "Noch ein Test.") exten => 1222,4,Playback(/tmp/test) exten => 1222,5,Hangup()
Cepstral benutzt SSML (Speech Synthesis Markup Language) innerhalb der Engine. So kann eine Pause im obigen Beispiel wie folgt eingefügt werden:
exten => 1222,1,Answer() exten => 1222,2,System(rm -rf /tmp/test.wav) exten => 1222,3,System(/opt/swift/bin/swift -o /tmp/test.wav -p audio/sampling-rate=8000,audio/channels=1 "Noch ein Test. <break time='2500ms'/> Ende!") exten => 1222,4,Playback(/tmp/test.wav) exten => 1222,5,Hangup()
Informationen zu SSML finden Sie beim W3C unter http://www.w3.org/TR/speech-synthesis/.
[75] Auch hier gibt es eine Online-Testversion unter http://www.cepstral.com/demos/.
[76] Wer sich ein wenig mit Festival beschäftigt, kann die hier gezeigten Beispiele leicht auf Festival übertragen. Dies gilt in gleicher Weise auch für jede andere Text-to-Speech-Engine.
AMOOCON 2010
Noch kein Ticket? Dann wird es Zeit. Nur noch wenige Tage.
- Infos unter www.amoocon.de.
- twitter.com/AMOOCON