Vergleich von Text-to-Speech-Systemen

Keine Kommentare

Computer haben angefangen mit uns zu reden! Dahinter stecken sogenannte Text-to-Speech-(TTS-)Systeme. Durch neuronale Netze, Deep Learning und viele Trainingsdaten sind die in den letzten Jahren immer besser und besser geworden. In manchen Fällen kann man sogar kaum noch zwischen Mensch und Maschine unterscheiden.

In einem unserer neuesten codecentric.AI Videos haben wir euch einen Vergleich von Text-to-Speech-Systemen gezeigt: Wir haben einen kleinen Wettbewerb zwischen Polly, Alexa, Siri und Co mit verschiedenen Zungenbrechern veranstaltet und geguckt, was diese Systeme so alles können. Um uns anzuhören, wie die verschiedenen Systeme klingen, haben wir deutsche und englische Stimmen verglichen und auch selber ein paar Zungenbrecher aufgesagt.

Übrigens: Wer diesen Artikel lieber hören statt lesen möchte, findet hier die Audioversion – natürlich powered by TTS AI (Amazon Polly)!

Text-to-Speech-Systeme

Text-to-Speech (TTS) bezeichnet Systeme oder Applikationen, die geschriebenen Text als Input nehmen und in gesprochene Audioversionen umwandeln; sie lesen uns also digitalen Text laut vor. Der computergenerierte akustische Output soll dabei möglichst menschlich und “echt” klingen. Mithilfe von neuronalen Netzen und Deep Learning sind TTS Systeme dabei in den vergangenen Jahren deutlich besser geworden. Heute gibt es Modelle, die schon sehr natürlich klingen und teilweise kaum noch von einem Menschen zu unterscheiden sind.

TTS-Systeme finden in vielen Programmen Anwendung; die bekanntesten sind sicherlich persönliche Assistenten wie Siri, Alexa, Cortana und Google. Aber auch in “kleineren” Programmen findet sich TTS-Technologie! So hilft TTS zum Beispiel Sehbehinderten dabei, mit Computern, Tablets, Smartphones oder anderen digitalen Geräten arbeiten zu können. TTS kann auch mit anderen Techniken aus der Spracherkennung kombiniert werden, wie zum Beispiel Optical Character Recognition (OCR), um Text auf Bildern zu lesen oder Voice Recognition, um gesprochenen Input zu verstehen und darauf zu antworten. Wir können uns Nachrichten, Bücher oder Artikel vorlesen lassen, während wir z.B. Auto fahren oder Programme über Sprachanweisungen steuern ohne die Hände nutzen zu müssen.

Wie funktioniert TTS?

Herausforderungen für gute TTS-Systeme sind die Komplexität der menschlichen Sprache: je nachdem wie wir einen Satz betonen, kann er unterschiedliche Bedeutungen haben. AI-basierte TTS Systeme berücksichtigen Phoneme und Satzmelodie. Es gibt mehrere Ansätze für die künstliche Erzeugung von Sprache.

Eine der wichtigsten ist die Unit-Selection-Synthese. Hierbei wird der Text zunächst normalisiert und in kleine Einheiten aufgeteilt; das können Sätze, Wörter, Silben, Phoneme etc. sein. Die Strukturen (z. B. die Aussprache) dieser Einheiten werden im Kontext gelernt. Dieser Teil fällt unter das sogenannte Natural Language Processing (NLP). Außerdem wird eine Sprachdatenbank generiert, die basierend auf dem segmentierten Text durchsucht wird, um passende Sprachbausteine zu finden (Unit Selection). Diese Suche passiert heutzutage in der Regel mit Entscheidungsbäumen, Neuronalen Netzen oder Hidden-Markov-Modellen. Die Sprachdatenbank selber kann aus menschengesprochenen Audiostücken bestehen oder die entsprechenden Phoneme werden von einem Computer generiert. Letzteres nennen wir Formantensynthese. Sie bietet deutlich mehr Möglichkeiten, denn der Sprachschatz ist nicht limiert; auch jedes unbekannte Wort kann vom Computer generiert werden und die Stimmen können flexibel ausgetauscht werden. Bis vor Kurzem klang aus menschengesprochenen Bausteinen synthetisierte Sprache noch deutlich besser als aus der Formantensynthese. Aber das ändert sich gerade deutlich und es gibt schon viele “künstliche” TTS-Systeme, die sehr menschlich klingen.

Welche TTS-Systeme gibt es?

Alexa hat sich weltweit millionenfach verkauft. Dein Google Navi erzählt dir, wo du abbiegen musst. Siri erinnert dich an deine Termine. Cortana gibt dir Windows-Tipps. Watson beantwortet Support-Anfragen usw. Aber es gibt auch eine Reihe von webbasierten Programmen oder Handy-Apps, die einen eingegebenen Text vorlesen.

In vielen digitalen Geräten gibt es schon eingebaute TTS-Systeme, z. B. in Computern, Smartphones, usw.

  • Microsoft/Windows: besitzt das eingebaute TTS-System Narrator und die Microsoft Speech API
  • Mac: hat VoiceOver (oder auf älteren Rechnern PlainTalk)
  • Linux: verschiedene TTS Programme können installiert werden, z.B. eSpeak

Viele TTS-Systeme gibt es als Software zum Herunterladen und Installieren und/oder webbasiert im Browser bzw. als API. Die großen Cloud-Anbieter wie Amazon, Google, IBM und Microsoft bieten TTS-Systeme “as a Service” an, so dass man mit wenig Aufwand Sprachausgabe in seine eigenen Programme integrieren kann. Aber es existieren auch einige Open-Source-Projekte für TTS (allerdings sind die meistens nur für Windows verfügbar). Hier eine unvollständige Liste von Systemen:

Text-to-Speech von der Kommandozeile aus

Mit espeak können wir auch direkt von der Kommandozeile aus TTS generieren:

espeak -v german -w 'tongue_twister_intro2.wav' 'Computer haben angefangen mit uns zu reden! Dahinter stecken sogenannte Text-to-Speech (TTS) Systeme. Durch neuronale Netze, Deep Learning und viele Trainingsdaten sind die in den letzten Jahren immer besser und besser geworden. In manchen Fällen kann man sogar kaum noch zwischen Mensch und Maschine unterscheiden.'

Das Ergebnis hört ihr hier.

Text-to-Speech in Python

Auch mit Python kann man schnell und einfach TTS erzeugen, z. B. mit dem gTTS-Paket, das die Google Text-to-Speech (TTS) API nutzt:

# Python3
pip install gTTS
# Python3
from gtts import gTTS
import os
 
# Text
mytext = 'Computer haben angefangen, mit uns zu reden! Dahinter stecken sogenannte Text-to-Speech-(TTS-)Systeme. Durch neuronale Netze, Deep Learning und viele Trainingsdaten sind die in den letzten Jahren immer besser und besser geworden. In manchen Fällen kann man sogar kaum noch zwischen Mensch und Maschine unterscheiden.'
 
# Sprache (ISO Code)
language = 'de'
 
# Erzeugen der Sprachausgabe
myobj = gTTS(text=mytext, lang=language, slow=False)
 
# Speichern als mp3
myobj.save("tongue_twister_intro.mp3")

Das Ergebnis hört ihr hier.

Wer spricht am besten?

Mit der Vielzahl an (frei verfügbaren) TTS Systemen ist es inzwischen sehr leicht, TTS in eigene Programme oder Apps einzubauen. Ein paar Beispiele habt ihr hier kennengelernt. In unserem Video und in der Audioversion von diesem Blogpost konntet ihr verschiedene TTS-Systeme im Vergleich hören. Im Moment klingen die englischen Stimmen meist noch deutlich besser als die deutschen. Die deutschen Stimmen klingen bei den meisten Anbietern noch ziemlich blechern. Auch ist es noch problematisch, wenn z. B. englische Ausdrücke in einem deutschen Text vorkommen, wie in der vorgelesenen Versionen dieses Artikels deutlich zu hören ist; da wir uns nur für eine Sprache entscheiden können, wird in der deutschen Variante auch englischer Text von den TTS-Systemen sehr “deutsch” ausgesprochen. Aber wie wir im Video gehört haben, gibt es bereits ein paar Modelle, die deutlich besser klingen als andere. Es ist nur noch eine Frage der Zeit, bis diese für alle Services einsatzbereit sind.

Shirin Glander

Shirin hat in der Bioinformatik promoviert. Sie wendet Analyse- & Visualisierungsmethoden verschiedenster Bereiche an – z.B. Machine Learning, klassische Statistik, Textanalyse, etc. – um Informationen aus Daten zugänglich und nutzbar zu machen.

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.