(Dear international readers, this content appeared first in the German “IT Freelancer Magazin” and is unfortunately only available in German)
Es war Anfang 2012 als ich mich für ein Doktorat im Bereich Sprachsynthese bewarb. Ehrlich gesagt konnte ich mir damals nicht viel darunter vorstellen, aber die Ausschreibung beinhaltete Machine Learning und Künstliche Intelligenz. Und es klang irgendwie… anders. Heute – über 5 Jahre später – habe ich einen ganz guten Überblick über das Thema, stoße aber im Gespräch mit anderen Menschen stets auf das selbe Unverständnis, das ich damals aufwies. Dieser Artikel soll nun in groben Zügen und allgemeinverständlich die Aufgabenstellung und Probleme moderner Sprachsynthese aufzeigen.
“Um was geht’s überhaupt?”
Aktuell antwortet Wikipedia auf diese Frage folgendermaßen: “Unter Sprachsynthese versteht man die künstliche Erzeugung der menschlichen Sprechstimme. Ein Text-to-Speech-System (TTS) (oder Vorleseautomat) wandelt Fließtext in eine akustische Sprachausgabe.” (https://de.wikipedia.org/wiki/Sprachsynthese).
Somit ist das Ziel, für einen gegebenen Text ein akustisches Signal zu erzeugen, das Sprache mit einer spezifischen Stimme repräsentiert.
Schön und gut, darauf folgt nun meistens:
“Was ist daran so schwer?”
Wir Menschen sind uns in vielen Bereichen nicht bewusst, über welch komplexe Fertigkeiten wir verfügen. Unsere Sprache ist ein schönes Beispiel dafür. Über einen Luftstrom und mittels unserer Stimmbänder erzeugen wir ein Signal, das wir wiederum durch unseren Vokaltrakt verformen, um das gewünschte Ergebnis zu erzielen. Frühe Ansätze von Sprachsynthese verfolgten das Ziel, mittels physikalischer Modelle diesen Vokaltrakt zu simulieren und so künstlich Sprache zu erzeugen. Jeder Vokaltrakt ist anders, jede Stimme ist einzigartig. Aber nicht nur der Aufbau unserer Sprechorgane definiert unsere Stimme. Wir betonen, wir intonieren, wir machen Pausen, wir sprechen unterschiedlich je nach Gemütszustand. Mit der Verfügbarkeit größerer Speichermengen, wurde die Verwendung existierender Sprachaufnahmen populär.
“Na also, warum nicht einfach aufnehmen und dann zusammenstückeln?”
Das wird durchaus gemacht und ist auch immer noch eine sehr verbreitete Methode, die gute Ergebnisse erzielen kann. Wie für nahezu alle existierenden Methoden definiert man dazu zuerst ein Inventar an Lauten, den sogenannten Phonen, für die entsprechende Sprache. Danach verwendet man ein Verfahren zur automatischen Segmentierung der Aufnahmen in eben diese Phone. Dies wird üblicherweise “alignment” genannt und resultiert in einem annotierten Sprachsignal. Man hat dann für jeden Zeitpunkt im Signal die Information, welches Phon sich an dieser Stelle befindet. Dazu werden beispielsweise Hidden Markov Modelle verwendet. Hat man das gesamte Inventar an Phonen abgedeckt, kann man sich im Prinzip beliebige Sätze zusammenbauen.
“Problem also gelöst?”
Leider nicht. Ich habe bereits erwähnt, dass wir betonen, intonieren, Pausen machen etc. Aber noch vor all dem stehen wir vor dem Problem, dass wir Phone anders artikulieren in Abhängigkeit ihres Kontextes. Das heisst, ein Phon klingt unterschiedlich je nachdem welche Phone zuvor und danach kommen. Also hat man damit begonnen, statt einzelne Phone beispielsweise die Übergänge zwischen zwei Phonen in das Modell einfließen zu lassen, dies bezeichnet man dann als Diphon-Modell. Die Klasse dieser Verfahren bezeichnet man üblicherweise als “Unit selection”, da man aus einem Inventar einzelne Einheiten auswählt – und dann aneinanderreiht. Dabei ist es also nicht nur wichtig, wie gut eine Einheit dem entspricht, was wir haben möchten, sondern auch dass sie mit den anderen zusammenpasst. Ansonsten entsteht sehr abgehackte und unnatürliche Sprache. Es können dann auch beispielsweise auch ganze Wörter verwendet werden, wenn sie sich zufällig im Inventar befinden und gut an die aktuelle Stelle passen. Wenn nicht, muss man zunehmend kleinere Einheiten suchen und eventuell auch ein wenig anpassen. Ein Anwendungsbeispiel zu diesem Verfahren kann man auf https://www.wien.gv.at/ hören, wenn man einen Artikel anklickt und dann “Seite vorlesen” benutzt.
“Wo ist der Haken?”
Es wird langsam ersichtlich, dass das benötigte Inventar zunehmend größer wird. Nun kommen wir noch ein drittes Mal zu dem Betonen, Intonieren und Pausieren zurück: wir artikulieren unsere Phone beispielsweise anders, wenn wir eine Frage stellen. Mehr noch, wir betonen sie wiederum anders, wenn es eine Ja/Nein-Frage ist, im Gegensatz zu anderen Fragen. Man beachte die Tonhöhe am Schluss der Fragen: “Brauchen wir das?” versus “Was brauchen wir?” Wir verändern unsere Art zu sprechen auch mit unserem aktuellen Gemütszustand. Außerdem möchten wir vielleicht durch Betonung etwas Spezielles ausdrücken. Beispielsweise “Brauchen WIR das?” versus “BRAUCHEN wir das?” versus “Brauchen wir DAS?” hat jeweils eine etwas andere Bedeutung.
Man kann sehen, dass die notwendigen Einheiten im Inventar mit der Zahl an Faktoren exponentiell zunimmt (https://en.wikipedia.org/wiki/Curse_of_dimensionality) – und das muss dann alles für jeden Sprecher erneut aufgenommen werden und diese Datenbank auch mit dem Synthesizer ausgeliefert.
Habe ich schon erwähnt, dass wir manchmal Wörter in die Länge ziehen, oder aber kurz und geschnappt aussprechen? Wie gehen wir mit Dialekten, Soziolekten und Akzenten um? Was ist mit Lachen, Räuspern und zustimmendem Grunzen?
“Was sind die Alternativen?”
Und dies ist der Punkt, an dem wir letztendlich zu den Methoden der künstlichen Intelligenz kommen. Warum kann der Computer das alles nicht “einfach” von selber lernen? Aus der Perspektive von Machine Learning kann Sprachsynthese als Regressionsproblem betrachtet werden. Wir suchen also eine Funktion, die den Input in Form linguistischer und phonetischer Features auf den Output in Form akustischer Features abbildet.
Der Input kann also beispielsweise als ein Phon inklusive dessen Umgebung sowie verschiedener linguistischer und phonetischer Aspekte definiert werden. Dazu gehören unter anderem: Wie viele Silben hat das aktuelle Wort und in welcher Silbe befindet sich das Phon? Ist das Phon ein Konsonant oder ein Vokal? Ist es ein Vokal und stimmhaft? Wo befindet sich das Phon im aktuellen Satz? Ist der aktuelle Satz eine Frage? Soll die aktuelle Silbe betont werden?
Der Output wiederum ist üblicherweise das Sprachsignal in einer gewählten Codierung. Diese Codierung wird üblicherweise durch einen sogenannten Vocoder vorgenommen (ein Kofferwort aus Voice, Coding und Decoding) und basiert auf Methoden der Signalverarbeitung. Es ist recht wahrscheinlich, dass diese Art der Codierung in den nächsten Jahren obsolet wird, wie beispielsweise im 2017 von DeepMind präsentierten WaveNet (https://deepmind.com/blog/wavenet-generative-model-raw-audio/).
“Und dann kann eine Maschine diesen Zusammenhang lernen?”
Genau! Es gibt verschiedene Ansätze, diese Regression zu realisieren. Lange war ein Decision Tree basiertes Clustering in Kombination mit Hidden Markov Models im Fokus der Forschung, seit einiger Zeit dominiert nun aber Deep Learning. Dabei werden beispielsweise reguläre feed-forward Netzwerke verwendet um diese nicht-lineare Funktion abzubilden. Input features werden dabei oft mit der ersten und zweiten Ableitung entlang der Zeitachse augmentiert um die Dynamik der Zeitreihe zu erfassen. Bessere Ergebnisse wurden mit Recurrent Neural Networks erzielt, beispielsweise den weitverbreiteten Long Short-Term Memory (LSTM) Netzen.
Der Vorteil dieser Methoden ist vor allem die größere Flexibilität. Während ein Unit Selection System eben nur genau das wiedergeben kann, was es in seinem Inventar hat, kann ein statistisch parametrisches Modell auch weitere Zusammenhänge lernen und “Ungehörtes” sprechen. Die Parametrisierung erlaubt beispielsweise auch einfache Modifikation diverser Sprachparameter wie Sprechgeschwindigkeit und Tonhöhe als auch komplexe Methoden wie Speaker Adaptation. Bei letzterem wird mit einem kleinen Datensatz eines Sprechers gearbeitet und dieser mittels Daten anderer Sprecher augmentiert. Ähnlich wie beispielsweise in der Computer Vision mit “Average Face Models” gearbeitet wird, wird hier ein sprecherspezifisches Modell von einem “Average Voice Model” abgeleitet. Ein weiterer Vorteil besteht darin, dass die resultierenden statistischen Modelle üblicherweise mit viel weniger Speicher auskommen als ein Unit Selection Model, das eine gesamte Datenbank an Aufnahmen mit sich rumschleppen muss. Der größte Nachteil ist, dass der Lernprozess über viele Datensätze mittelt und gemeinsam mit der Charakteristik des Vocoders zu Qualitätseinbußen führt. Das Mitteln über mehrere Datensätze hat allerdings auch den Vorteile, dass sich einzelne Fehler in den Daten (wie schlechte Aufnahmebedingungen, ungenaues Alignment, falsche Transkription etc.) weniger stark auswirken.
Nicht zuletzt muss man auch hybride Modelle erwähnen, die beachtliche Ergebnisse erzielen können. Dabei wird der Unit Selection Prozess durch den Output eines statistischen Modells gesteuert.
“Und dann haben wir’s endlich?”
Nun, jetzt können wir aus einer Serie an Phonen + Meta-Informationen ein Sprachsignal erzeugen. Allerdings haben wir üblicherweise als Eingabe nur Text zur Verfügung. Entgegen der sehr verbreiteten Meinung ist die Umsetzung von geschriebenem Text zu Lauten kein 1:1 Mapping. Wir sagen “Schtange” zur “Stange”, wir sagen aber nicht “hischtorisch”. Wenn etwas modert, ist es am “modern”, es ist aber nicht “modern” im Sinne von neuartig. In “Boden” betonen wir die Silbe “Bo-“, nicht die Silbe “-den”. Wie spricht man “101” aus? “Hunderteins?”, “Hundert-und-eins?” Wir Österreicher sprechen ein “s” üblicherweise ohne Hilfe der Stimmbänder aus, in Deutschland sehr oft mit (einfach mal ausprobieren). Im Englischen ist die Aussprache nochmals weiter vom geschriebenen Text entfernt, man sehe sich dazu beispielsweise The Chaos Of English Pronunciation by Gerard Nolst Trenité – YouTube an. Man sieht also, bereits auf der Ebene der Umsetzung von Orthographie zu Phonetik gibt es viel Potential für Machine Learning und wird dort auch intensiv angewandt. Üblicherweise in Kombination mit vielen handgeschriebenen Regeln.
Des Weiteren beschäftigt sich die Forschung beispielsweise damit, wie ein optimaler Datensatz an Aufnahmen (Corpus) aussehen muss – der einfachste Ansatz ist, eine große Menge Sätzen aus Büchern phonetisch zu transkribieren und dann ein set cover Problem zu lösen, um möglichst viele Kombinationen an input features abzudecken. Oder damit, wie man ohne explizite Definition eines Inventar an Phonen auskommen könnte, wie die Daten am besten vorverarbeitet werden, wie man Vocoder besser und effizienter gestalten kann, wie man am besten mit Emotionen und Dialekten umgeht, wie man die Prosodie am besten modelliert, und viele weitere Probleme.
Und man beachte… wir haben noch gar nicht darüber gesprochen, woher der zu sprechende Text eigentlich kommt, den Siri, Alexa und Cortana so von sich geben…
Recent Comments