Text2Speech (TTS)

Text2Speech 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.

[Tipp]

Einen kostenlosen Test einer qualitativ sehr guten Engine kann man online bei IBM unter http://www.ibm.com/software/pervasive/tech/demos/tts.shtml machen.

Das Speech Synthesis System Festival (http://www.cstr.ed.ac.uk/projects/festival/) eignet sich gerade noch so für englische Text, aber spätestens bei deutschen Texten lässt die Qualität sehr zu wünschen übrig. Als guten Kompromiss kann ich die Software der amerikanischen Firma Cepstral (http://www.cepstral.com/) nehmen. Es gibt dort eine kostenlose Probeversion und eine recht günstige Vollversion. [44]Die hier vorgestellte Lösung baut auf der Cepstral Engine auf.[45]

[Warnung]

Cepstral und Festival sind beides keine qualitativ hochwertigen Text-to-Speech-Engines! Leider gibt es in diesem Feld nur im Hochpreissegment wirklich gute Lösungen.

Installation Cepstral Text-to-Speech

Auf der Webseite http://www.cepstral.com/downloads/ kann man die deutsche Sprach-Engine herunterladen (evtl. auf den Link ''Additional Voices'' klicken). Die entsprechende Datei (hier beispielhaft 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

Beispiele und Tests

Falls bei der Installation nicht anders angegeben, wird die Engine als /opt/swift/bin/swift installiert. Testen kann man 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 einfach in der extensions.conf folgenden Eintrag hinzufügen:

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 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/sa
mpling-rate=8000,audio/channels=1 "Noch ein Test.")
exten => 1222,4,Playback(/tmp/test)
exten => 1222,5,Hangup()

Pausen in Texten

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/sa
mpling-rate=8000,audio/channels=1 "Noch ein Test. <break time='2500ms'/>
 Ende!")
exten => 1222,4,Playback(/tmp/test.wav)
exten => 1222,5,Hangup()

Information zu SSML findet man beim W3C unter http://www.w3.org/TR/speech-synthesis/.



[44] Auch hier gibt es eine Online-Testversion unter http://www.cepstral.com/demos/.

[45] 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.