So, dann herzlich willkommen zurück.
Wir machen da weiter, wo wir letzte Woche aufgehört haben, bei der
kontextabhängigen Modellierung.
Und da hatten wir uns angeschaut, wie man jetzt Polyfone clustern
kann, mit Hilfe der sogenannten gewichteten Entropie-Distanz.
Wir hatten da kennengelernt ein Top-Down-Cluster- Regression-Tweaks,
in deren Knoten haben wir immer Fragen gestellt über die Polyfone, die
in der aufzuspaltenen Klasse enthalten waren.
Diese Fragen waren motiviert durch linguistische Fragen, wie wir sie
aus der Phonetik her kennen, indem man gefragt hat, bestimmte
Eigenschaften der Phoneme, die im Kontext dieses Polyfons stehen, ob
das also Stimmhafte, Stimmlose, Vokale, Konsonanten, Frikative,
Plurlusive etc.
etc.
waren.
Das war so der Satz an Fragen, den wir in unserem Classification- und
Regression -Tweak anwenden konnten.
Und dann mit Hilfe der gewichteten Entropie-Distanz konnten wir immer
die optimale Aufteilung finden und dann lokal optimale Aufteilung und
dann einen Baum clustern, der halt die Eigenschaft hatte, dass egal
welches Polyfon wir oben in den Baum reingeben, egal ob wir es im
Training gesehen hatten oder nicht, wir kommen irgendwo bei einem
Blatt an und dieses Blatt steht eben für die Modellierungseinheit, die
wir verwenden, um jetzt ein Polyfon zu modellieren.
Und diese Modellierungseinheiten hatten wir dann eben gerade
generalisierte Polyfone genannt.
Alternativ zum Clustern mit der gewichteten Entropie-Distanz findet
man manchmal auch ein Verfahren, das basiert auf der sogenannten
Likelihood -Distanz.
Bei der Likelihood-Distanz basiert man die Distanz auf den
Wahrscheinlichkeiten, mit denen die Menge, die Daten, die zu ihr
gehören, hervorgebracht haben.
Man nimmt die Distanz eben als das Produkt der beiden
Wahrscheinlichkeiten der separat gehaltenen Klassen und teilt das
ganze durch die Wahrscheinlichkeit, die man erhalten würde, wenn man
die beiden Klassen zusammenlegt.
Jetzt muss man diese Wahrscheinlichkeiten halt schätzen und das machen
wir wieder auf entsprechend auf Daten, auf den Daten, die dazugehören.
Und man hat halt das Problem, dass man da auch dann noch die schätzen
muss, die Wahrscheinlichkeit, wenn man diese Daten jetzt zusammenlegt.
Ein Problem ist, dass wir hier eine Kreuzvalidierungsmenge brauchen,
weil wir sollten nicht die Wahrscheinlichkeiten ausrechnen auf den
Daten, auf denen wir auch die Parameter jetzt der Wahrscheinlichkeiten
geschätzt haben, sondern man sollte separat eine Menge haben.
Also auf der einen Menge schätzt man die Wahrscheinlichkeiten und auf
der anderen Seite rechnet man dann die Wahrscheinlichkeiten aus, die
man für die Distanzberechnung verwendet.
Das bedeutet natürlich, dass wir weniger Daten zum Rechnen haben.
Dann haben wir das Problem, dass wir natürlich immer die Parameter
berechnen müssen für diese Wahrscheinlichkeiten.
Das kann man halt dadurch ein bisschen schneller machen, indem man
halt mit Label-Training arbeitet, statt mit Forward-Backward- Training
oder Viterbi-Training.
Und diese Aufteilung aller möglichen oder die Berechnung aller
möglichen Distanzen ist wieder sehr aufwendig.
Deswegen kann man zum Beispiel wieder mit diesen Fragen arbeiten und
damit versuchen, dann das Ganze zu machen.
Das Ganze kann man dann durchaus mal durchprobieren.
Das ist dann halt rechnerisch sehr, sehr, sehr aufwendig und es hat
sich herausgestellt, dass es, wenn überhaupt, nur minimale
Verbesserungen gegenüber der gewichteten Entropiedistanz erhält.
Wie gesagt, wenn überhaupt.
Sobald genügend Daten zur Verfügung sind, findet man diese
Verbesserung auch nicht mehr.
Deswegen wird das hier jetzt noch der Vollständigkeit halber erwähnt.
Aber das, was sich jetzt in der Praxis durchgesetzt hat, ist immer das
Clustern mit der gewichteten Entropiedistanz.
Noch ein paar Anmerkungen zu diesen Kontextfragen, die wir dann
verwenden, wenn wir diesen Classification- und Regression-Dreh
aufbauen.
Die Frage ist ja immer, wo kommen diese Kontextfragen her?
Was wir bisher gesehen haben, wir haben gesehen, dass wir es
wissensbasiert machen.
Wir nehmen das Wissen aus der Phonetik, das wir haben, und alles, all
die Eigenschaften, die wir wissensbasiert einem Phonem zuordnen
können, indem wir zum Beispiel in die IPA-Tabelle reinschauen,
verwenden wir als mögliche Fragen, die wir dann in diesem Baum stellen
können.
Eine andere Möglichkeit wäre, dass man das versucht, datengetrieben zu
machen.
Und das hat insbesondere dann Vorteile, wenn wir zum Beispiel nicht
mehr mit Phonemen als Modellierungseinheiten arbeiten.
Damit ich mit Phonemen arbeiten kann, muss ich in der Lage sein, ein
Wort in seine Phoneme zu zerlegen.
Und wenn ich jetzt mit einer sehr neuen Sprache arbeite, auf der noch
nicht viel gearbeitet wurde, dann kann es durchaus sein, dass ich
sowas, diese Wissensquelle, Abbildung, Wort, auf seiner Aussprache gar
nicht zur Verfügung habe.
Solche Aussprache-Wörterbücher sind teilweise sehr teuer und sehr
schwierig zu erstellen und unter Umständen eine Ressource, die ich
nicht zur Verfügung habe, wenn ich ein Spracherkennungssystem bauen
möchte.
Oder ich habe manchmal das Problem, dass ich das auch gar nicht sicher
kann.
Zum Beispiel, wenn ich mir anschaue, so Sprachen, die mit Abschatz
geschrieben werden, da sind in der Regel keine Vokale
niedergeschrieben.
Das heißt, ich bekomme aus der Schreibweise nur die Konsonanten
heraus, aber ich weiß nicht, welche Vokale da drin sind.
Das muss sozusagen der Leser selber machen, mit seinem eigenen Wissen.
Das heißt, da habe ich häufig Schwierigkeiten, überhaupt erst mal so
ein Aussprache-Wörterbuch zu finden, beziehungsweise dann auch diese
Abbildung zu machen von geschriebenem Wort auf Schriftsprache.
Und was man da macht, ist, dass man häufig halt auf andere
Modellierungseinheiten zurückfällt, im einfachsten Fall auf sogenannte
Grafeme, Vulgo-Buchstaben.
Und wenn ich dann so etwas habe, dann habe ich Schwierigkeiten, solche
wissensbasierten Kontextfragen zu stellen.
Weil, wenn ich jetzt schon noch nicht mal weiß, was ist die Aussprache
eines Wortes, dann ist es natürlich auch schwierig, dann solche Fragen
zu stellen zu den Buchstaben.
Ist es ein Plosiv oder ein Frikativ und so weiter und so fort.
Das habe ich unter Umständen nicht zur Verfügung.
Und für solche Fälle kann man zum Beispiel versuchen, das Ganze
datengetrieben zu machen.
Die erste, das erste Verfahren, das man da ausprobiert hatte, war so
ein Botten-ab-Verfahren, das wieder mit der Entropie-Distanz
gearbeitet hat.
Und was man da macht, man beginnt erst mal mit einer Klasse pro
Monophon, die man hat.
Und dann clustert man diese Monophone-Botten ab, mithilfe der
gewichteten Entropie-Distanz zum Beispiel, bis eine einzige Klasse
übrig bleibt.
Ich mache also den vollständigen Baum von unten nach oben und cluster
den hoch.
Und diese einzelnen Cluster-Zusammenlegungen, die ich mache,
beziehungsweise, wenn ich den Baum von unten nach oben dann, von oben
nach unten betrachte, die einzelnen Aufspaltungen, das sind nichts
anderes als irgendwelche abstrakt gehaltenen Fragen.
Das ist, in jedem Knoten wird die Frage beantwortet, hat das Phoneme
-Eigenschaft und Eigenschaft XY ja oder nein.
Die Phoneme, die in der einen Klasse sind, die haben halt die
Eigenschaft und die Phoneme, die in der anderen Klasse sind, haben
diese Eigenschaft nicht.
Und was jetzt genau die Eigenschaft bedeutet, wissen wir nicht.
Es hat halt irgendwie über die Entropie-Distanz zu einer Aufspaltung
gegeben.
Aber das ist letztendlich nichts anderes als eine abstrakte Frage.
Eine Frage in so einem Classification-and-Regression-Tree, so eine
binäre Frage, kann ich auch einfach dadurch darstellen, indem ich
aufliste, für welche Einheiten wird das Ganze mit Ja beantwortet und
für welche wird das mit Nein beantwortet, ohne dass ich die Frage
jetzt explizit hinschreiben muss, wonach denn da gefragt wird.
Hauptsache, ich weiß für jedes einzelne Phoneme, ob die Antwort zu
dieser versteckten Frage Ja oder Nein ist.
Und wie gesagt, das machen halt gerade diese, diese Zerteilung, die
man da findet.
In der, in dem Cluster-Baum.
Und dann nimmt man halt eben diese Menge aller Knoten als Fragesatz.
Und dann kann man sich noch überlegen, dass man da wieder das Problem
hat, dass man halt nicht optimal clustert, wie wir das besprochen
hatten.
Ist so ein Bottom-up, Top-down Cluster-Verfahren ja kein global
optimales Verfahren.
Das ist ein Guidi-Verfahren, das in jedem einzelnen Schritt nur lokal
optimiert.
Man kann nicht global optimieren, weil die Menge aller möglichen
Cluster, die man dann ausrechnen müsste und für die man die Güte
ausrechnen müsste, einfach zu groß ist.
Was man aber machen kann, ist, wenn ich jetzt mal angefangen habe, von
unten nach oben zu clustern, dann habe ich ja schon mal so eine
Grundzusammenlegung.
Und irgendwann komme ich an einen Punkt, wo die Anzahl der möglichen
Klassen, die übrig bleiben, so klein sind, dass ich von jetzt an die
optimale, das optimale Clustern ausprobieren könnte, ausrechnen
könnte.
Indem ich einfach alle Möglichkeiten, die es gab, durchrechne.
Und das ist halt die Idee dahinter bei diesem hybriden das man halt
sagt, okay, ich fange halt an mit diesem Top-Bottom-Up-Clustern und
wenn halt die Anzahl der Klassen klein genug ist, dann mache ich die
vollständige, vollständige Partitionierung, also nicht nur die
Zusammenlegung von zwei separaten Klassen, sondern ich mache die
vollständige Partitionierung, so dass ich das Ganze dann in zwei
maximal separate Klassen C1 und C2 einteilen kann und wiederhole das
Ganze rekursiv, mache also auch wieder nur eine Partitionierung in
zwei, dass ich so zwei separate Cluster habe und für jedes einzelne
dieser Cluster wiederhole ich das Ganze rekursiv und bekomme jetzt
also eine, auch wieder hierarchische, endgültige Partitionierung
heraus und nehme dann jeweils immer diese endgültigen
Partitionierungen, die ich beim vollständigen Clustern erhalten habe,
dann als mögliche Fragen dazu.
Was ich das anschaue, das ist zum Beispiel sowas in der Art hier, ich
mache erst dieses einfache Clustern, bei dem ich immer zwei Klassen
zusammenlege.
Irgendwann werden also, wachsen diese Klassen immer, werden immer
größer.
Irgendwann habe ich nur noch eine relativ kleine Anzahl an Klassen,
kann dann hierfür diese maximale Suche machen und erhalte dann zwei
Cluster und kann das jetzt jeweils nochmal innerhalb dieser einzelnen
Klassen, die ich da erhalten habe, indem ich da die Unterklassen mir
anschaue, nochmal das Ganze wieder durchfahren.
Dann gibt es noch eine dritte Möglichkeit, wenn ich nicht mehr weiter
weiß, was ich machen kann und das ist, ich nehme einfach zufällige
Fragen.
Ich nehme mir also zufällig eine gewünschte Anzahl an Fragen her und
die besteht halt aus einer zufälligen Aufteilung des Phonemensatzes
immer in zwei verschiedene Mengen.
Dann kann ich damit ganz normal wieder meinen Classification and
Regression Tree bauen, dann überprüfe ich, trainiere ich den
Spracherkenner, messe wie gut er ist und dann mache ich nicht einen so
einen zufälligen Baum, sondern mache ich vielleicht zehn solcher
Bäume, evaluiere die alle und nehme am Ende den Baum, der mir die
beste Leistung gegeben hat.
Sowas kann man sagen, ist ein relativ primitiver Monte-Carlo
-Algorithmus, der läuft in endlicher Zeit, in vordeterminierter Zeit,
in konstanter Zeit, aber führt nicht unbedingt zum optimalen Ergebnis.
Nur das Erschreckende ist, wenn man das so macht und das ausprobiert,
dann ist man nicht schlechter, als wenn man halt mit diesen phonetisch
motivierten Fragen arbeitet, sondern wenn man halt zehn verschiedene
Bäume zufällig durchprobiert hat, die man auf die Art und Weise
bekommt, also zehn zufällige Fragensätze, über die ich dann einen Baum
klastere.
Das, was am Ende herauskommt, ist erstaunlich gut.
Mit anderen Worten, diese gewichtete Entropiedistanz kann relativ viel
gerade ziehen, solange ich irgendwie nur eine Aufteilung habe der
Klassen, die irgendwie halbwegs vernünftig ist.
Wenn man sich jetzt noch anschaut, wie sehen denn die Fragen in dem
Baum, die gestellt werden, aus und insbesondere nach welcher Position
im Polyphon wird denn gefragt?
Da hat man, kann man sich hier das in der Art und Weise anschauen,
dass man hier auf der Achse abträgt die Kontexte, nach denen gefragt
wird, also wird nach dem Center-Phonem gefragt, eins links, zwei
links, drei links, eins rechts, zwei rechts, drei rechts und so
weiter.
Auf der Achse trägt man auf, wie viele Fragen wurden denn gestellt,
die nach dem Phonem eins rechts, zwei links und so weiter fragen.
Und hier trägt man auf die Tiefe des Baumes, also bis zur Hälfte des
Baumes, wenn man durchgeht von oben, wie viele Fragen wurden denn
gestellt nach dem Phonem zwei rechts oder nach dem Phonem drei links
und so weiter und so fort.
Und dann kann man folgendes interessantes Verhalten sehen, das auch
relativ einem intuitiv fragt.
Ganz oben am Anfang des Baumes werden erstmal vermehrt die Fragen
gestellt, die das Phonem eins links, eins rechts betreffen.
Die werden auch absolut gesehen am häufigsten gestellt, aber
insbesondere auch, wenn ich noch so in der ersten in der ersten Hälfte
des Baumes sind, ist das eigentlich im Prinzip die einzigen Fragen,
nach denen gestellt werden.
Und erst, wenn ich wirklich tief reingehe, werden überhaupt mal Fragen
gestellt, die so nach zwei links, zwei rechts überhaupt fragen.
Und die Fragen, die halt den ganz extremen linken und ganz extrem
rechten Kontext im Polyphon betreffen, die spielen absolut überhaupt
keine Rolle.
Und das ist jetzt erstmal intuitiv auch leicht verständlich, nämlich
davon, wie das Polyphon jetzt variiert, ausgesprochen wird, das wird
hauptsächlich davon abhängen, welches Phonem direkt in der
Nachbarschaft, also entweder direkt davor oder direkt danach kommt.
Und ein Phonem, das jetzt vor fünf Positionen weiter nach links liegt,
wird natürlich, wenn überhaupt, einen sehr, sehr geringen Einfluss
darauf haben, wie das aktuelle Phonem ausgesprochen werden wird.
Und dieses andere Verhalten, dass diese Fragen nach dem weiteren
Kontext erst weiter tief unten in dem Baum zu finden sind, hängt halt
mit der Intuition zusammen, dass man ganz am Anfang, wenn man von Top
-Down -Clustert, man natürlich erstmal die groben Aufteilungen
raussucht.
Und diese groben Aufteilungen hängen da auch hauptsächlich wieder
zusammen mit den Phonemen, die direkt links und rechts davon stehen.
Und erst, wenn ich diese ganz groben Aufteilungen hinter mir habe,
dann fange ich an, die etwas feineren Nuancen herauszuarbeiten, die
sich dann unter Umständen durch die Fragen nach weiter entfernt
liegendem Kontext überhaupt ergeben.
Jetzt ist hier auf der Folie noch die Frage, warum ist da in der Mitte
ein Tal?
Also warum wird nie eine Frage gestellt zu dem Kontext Null, zu dem
Phonem, das in der Mitte steht?
Gut, relativ einfach.
Das ist diese Sache von Kai Folie, die sich halt auch da durchgesetzt
hat.
Der hat gesagt hat, dass nur Phoneme sich Parameter teilen können, die
dasselbe Zentrumsphoneme haben.
Dass wir also immer die Einschränkung machen, wenn wir clustern, dann
clustern wir nicht nur einen Baum, sondern in Wirklichkeit clustern
wir ganz viele Bäume, nämlich so viele Bäume, wie ich Phoneme habe.
Und nur Polyphone, die dasselbe Zentrumsphoneme haben, dürfen
überhaupt Parameter sich gegenseitig teilen und alle anderen
Polyphone, deren Parameter halte ich separat, so dass ich also pro
Phoneme einen eigenen Clusterbaum habe.
Eine andere auch relativ interessante Statistik ist, wenn man sich
anschaut, wie viele Polyphone gibt es überhaupt und welche Polyphone
decken überhaupt ein ganzes Wort komplett ab.
Dieser Graph ist einfach mal eine Aufteilung dessen, wie viel Prozent
der Wörter sind denn wie viele Phoneme lang.
Und zwar nicht der Wörter im Sinne von Vokabular, sondern das Wörter
im Sinne von, wie häufig kommen sie denn vor.
Das ist diese schwarze dicke Linie, also wie viel häufig kommen die
vor.
Und wenn man sieht, wenn man auf zwei Phoneme geht, dann ist fast ein
Viertel aller Wörter, die man jetzt in so Fleece-Text beobachtet, zwei
Phoneme lang und die meisten, meisten Wörter sind eher relativ kurzer
Länge, also nach mehr als vier Phonemen wird es schon deutlich weniger
und es gibt nur relativ wenige Wörter, die zehn oder noch mehr Phoneme
überhaupt lang sind.
Wenn man sich das Ganze jetzt anschaut im Aussprachelexikon, also
nicht mehr, wie häufig kommen die Wörter vor, sondern wenn ich einfach
alle Wörter, die ich habe, sobald es einmal vorkommt, schreibe ich es
halt einmal hin.
Wenn man sich also im Aussprachewörterbuch das anschaut, dann sieht
man, dass zwar diese Wörter mit den wenigen Phonemen relativ selten
vorkommen, sondern die meisten Phoneme haben sowas wie sieben, acht,
meisten Wörter haben sowas wie sieben, acht Phoneme Länge.
Ganz lange Wörter gibt es auch eher selten, aber diese kurzen, davon
gibt es nur sehr wenige, macht ja auch Sinn.
Ich meine, es gibt nur eine geringe Anzahl an Wörtern, die ich halt
aus zwei Phonemen oder aus einem Phonem überhaupt bauen kann, aber
diese Wörter mit den wenigen Phonemen, die kommen halt im Text relativ
häufig vor.
Wenn man sich das im Englischen anschaut, das sind halt sowas wie die
Artikel, viele Präpositionen, Pronomen etc., die sind sowas wie ein,
zwei oder drei Phoneme lang und die machen halt praktisch ein Viertel
oder noch mehr des Textes, den man so im Allgemeinen liest, aus.
Es macht ja auch Sinn, dass Wörter, die sehr häufig vorkommen, auch
kodiert werden mit einer möglichst kurzen Phonemenfolge und dass man
denen nicht noch eine möglichst lange Phonemenfolge gibt.
Und das ist auch das, was häufig vorkommt.
Insofern, wenn man sich jetzt die Wörter anschaut, drei Prozent aller
Wörter werden durch einen Monophon komplett abgedeckt, bestehen also
aus einem, werden also, die vorkommen im Fließtext, werden halt durch
das Monophon abgedeckt.
Das ist im Englischen im Großen und Ganzen das Ä als Artikel und
vielleicht noch hier und da der einzeln gesprochene Buchstabe.
Und die, die man durch so ein Biphon, also durch zwei Phoneme schon
komplett abdecken kann, da ist man bei schon über einem Viertel und
irgendwann, je höher das geht, desto mehr Wörter werden halt
abgedeckt.
Wenn man sich das jetzt angeschaut hat, dann leuchtet einem auch
relativ leicht ein, welche Verbesserungen man dann im Sinne von
Wortfehlerrate erhalten kann, ob man jetzt mit Triphonen, Quintphonen,
Sepphonen oder Achtphonen entsprechend arbeitet.
Und das sind einfach Spracherkennungssysteme mit Triphonen,
Quintphonen und so weiter trainiert.
Einmal auf englisch gelesenen Zeitungstexten und Verbmobil sind
deutsche gesprochene Konversationen zur Terminvereinbarung.
Wenn man sich jetzt die Wortfehlerraten ansieht, sieht man, dass man
so vom Triphon zum Quintphon nochmal einen deutlichen Gewinn sieht,
aber sobald es dann höher wird, werden irgendwann die, saturieren
irgendwann die Gewinne und da ist zum Beispiel der Schritt vom
Sechsphonen zum
Achtphonen, da der ist zum Beispiel relativ gering im Englischen und
im Deutschen wird es sogar schlechter, wahrscheinlich durch zu wenig
Trainingsmaterial.
Heutzutage ist es so, meistens verwendet man nach wie vor, wenn
überhaupt, Quintphonen zur akustischen Modellierung.
Einige verwenden auch nach wie vor nur Triphonen aus Komplexitäts- und
Rechenzeitgründen.
Allerdings mit Quintphonen kommt man auch schon relativ weit, denn die
Gewinne, die man danach noch erwarten kann, ist eigentlich eher
gering.
Und grundsätzlich, ob sich Triphonen oder Quintphonen lohnen, hängt
halt ab von den Daten, die man hat, insbesondere von, wie groß ist das
Vokabular, welche Trainingsdaten habe ich zur Verfügung und
insbesondere, wie wird auch gesprochen, kann ich mit viel
Ausspracheeffekten rechnen, mit viel umgangssprachlichen
Ausspracheeffekten oder ist es eher gelesene, ruhige Sprache.
Wir hatten ja bisher gesagt, so eine Aussprache eines Phonem hängt
offensichtlich davon ab, in welchem phonetischen Kontext es steht, von
wo die Artikulatoren kommen und wohin sie gehen.
Abgesehen vom phonetischen Kontext kann man auch noch jede Menge
anderer Einflussfaktoren für die Aussprache von Phonemen festmachen.
Zum Beispiel von der aktuellen Sprechgeschwindigkeit.
Wenn ich schneller spreche, spreche ich wahrscheinlich eher undeutlich
und die Art und Weise, wie sich die Phoneme im Signal bemerkbar
machen, wird anders sein.
Sie hängt ab von der Signalqualität, also Signalrauschverhältnis, wie
hängt das Mikrofon, wie ist das Hintergrundrauschen, kann sich auch
innerhalb einer Äußerung jederzeit ändern.
Das Mikrofon kann sich drehen, ich kann den Kopf drehen, wenn ich ein
stationäres Mikrofon habe, ändert sich die Signalqualität.
Irgendeine Lärmquelle kann anspringen oder aufhören Geräusche zu
machen und so weiter und so fort.
Dann Akzente, Dialekte des Sprechers, also je nachdem, wo ich in
Deutschland aufgewachsen bin, werde ich mein Deutsch anders sprechen
und werde halt entsprechend einen Dialekt oder einen Akzent haben.
Je nachdem, ob ich Muttersprachler bin oder Nicht-Muttersprachler,
werde ich einen anderen Akzent haben und das alles hat irgendwie einen
Einfluss darauf, wie sich das Signal für so ein Phonem halt verhält,
wie das aussieht.
Auch das Geschlecht des Sprechers, also Mann oder Frau, macht einen
Unterschied.
Auch die Länge des Vokaltraktes macht auch einen Unterschied, wie sich
jetzt halt entsprechend das Signal verhält, wenn ein Phonem gesprochen
wird.
Einige Sachen hatten wir schon versucht wegzunormalisieren, wie zum
Beispiel entsprechend die Lautstärke.
Dadurch, dass wir in den Kepstralbereich gehen, sind die Merkmale
Lautstärke normalisiert, aber andere Dinge wie halt
Sprechgeschwindigkeit, Akzent, Dialekt werden natürlich durch die
Vorverarbeitung nicht komplett raus gefiltert.
Und da ist die Idee, dass man jetzt, wenn man halt genügend
Trainingsdaten zur Verfügung hätte, man das Clustern der Modelle nicht
nur abhängig macht von dem phonetischen Kontext, in dem die Modelle
vorkommen, sondern auch von all diesen anderen Modalitäten, die man da
identifizieren kann.
Das Wichtigste dabei ist halt, dass ich diese Fragen, die ich dann im
Classification und Regression Tree stelle, natürlich auch beantworten
kann.
Das heißt, ich muss in der Lage sein, zu wissen, welchen Akzent oder
Dialekt hat denn der Sprecher.
Ist es Mann oder Frau?
Wie ist die aktuelle Signalqualität und wie ist die aktuelle
Sprechgeschwindigkeit?
Wenn ich in der Lage bin, das zu machen, dann bekomme ich halt so eine
Cluster -Tür aus.
Der hat halt noch zusätzliche Fragen.
Der hat die üblichen Fragen, wie zum Beispiel steht rechts vom
aktuellen vornehmenden Vokal und steht zwei links beim Stop-Laut und
der hat dann noch andere und der hat auch diese positionsabhängigen
Fragen, wie bin ich jetzt am Wortende oder nicht und der hat halt auch
solche Modalitäten Fragen, wie ist denn die aktuelle
Aussprachgeschwindigkeit, ist ein Akzent vorhaben, wie ist das Signal
-zu -Grausch-Verhältnis, hat der Sprecher ein Dialekt und so weiter
und so fort.
Jetzt habe ich das Problem, dass ich diese Modalitätsfragen ja
beantworten muss und die habe ich nicht unbedingt jedes Mal zur
Verfügung.
Die muss ich sozusagen während der Erkennung dynamisch erkennen,
dynamisch herausfinden.
Eine Sache, die man da halt machen kann, ist, dass man versucht,
erstmal den Fragenbaum so zu modifizieren, dass ich diese Entscheidung
darüber, wie die Modalität jetzt aussieht, wie zum Beispiel gerade das
Signal -Rausch-Verhältnis ist, dass ich das, diese Frage so möglichst
weit nach hinten schiebe.
Das heißt, ich transformiere meinen Clusterbaum, indem ich diese Frage
nach dem Signal-Rausch-Verhältnis ganz runter ans Ende schiebe.
Und wenn sich das halt so aufteilt, dann muss ich halt das Wissen,
hier ist der Signal-Rausch-Abstand kleiner als 20 dB und hier ist er
größer gleich 20 dB, halt entsprechend in die Blätter runterschieben.
Und kann dann erst die Entscheidung darüber, was ich jetzt sozusagen
machen soll, möglichst spät, spät treffen.
Frage, bringt das was?
Da gab es halt mal eine Diplomarbeit damals noch dazu, die halt
gezeigt hat, dass man da durchaus Gewinne mit erzielen kann.
Wenn man sich zum Beispiel jetzt anschaut, Geschlecht, Signal-Rausch
-Verhältnis oder Sprechrate, Geschlecht muss man halt entweder
wissensbasiert machen, also man muss irgendwie angeben, der Sprecher,
der jetzt kommt, ist ein Mann oder eine Frau.
Es muss in den Trainingsdaten drin sein.
Wenn man das nicht hat, muss man einen automatischen Detektor halt
bauen.
Braucht man wieder einen Klassifikator, der einem die Frage
automatisch beantwortet.
Das ist natürlich theoretisch erstmal wieder eine mögliche
Fehlerquelle, die halt, wenn es den falschen Sprecher, die falsche
Sprechergeschlecht bestimmt, unter Umständen halt die falschen Modelle
raussuchen wird.
Und dann kann es unter Umständen schief gehen.
Allerdings Frau versus Mann ist eigentlich relativ gut zu
klassifizieren.
Da kann man das machen.
Signal-zu-Rausch-Verhältnis kann man auch relativ gut bestimmen, wenn
man ungefähr so stille Passagen im Signal erkennen kann.
Also Phasen, wo halt keine Sprache ist, sondern der Rest.
Dann kann man auf diesen stillen Signalen die Energie des Rauschens
rechnen und dann gegen die nicht stille Phasen sozusagen ins
Verhältnis setzen.
Dann bekommt man relativ leicht eine relativ gute Schätzung des Signal
-zu -Rausch-Abstandes und bei der Sprechrate kann man halt auch mit
dem aktuellen Erkennungsergebnis arbeiten und sagen, ja gut, das ist
halt die Schätzung für die aktuelle Sprechrate, wie viele Worte pro
Sekunde ich denn im Augenblick spreche.
Und wenn man das macht, dann sieht man halt, dass man hier drei
unterschiedliche Dinge gegeneinander hat laufen lassen, zum Beispiel
für die Frage nach dem Geschlecht des Sprechers.
Man hat einmal sogenannte geschlechterabhängige Modelle gehabt.
Bei geschlechterabhängigen Modellen trainiere ich halt ein akustisches
Modell, das wird nur auf Frauen trainiert und das andere akustische
Modell wird nur auf Männern trainiert.
Bekommt eine Wortfehlerrate von 13,3 Prozent.
Wenn ich es so mache, dass ich halt Geschlecht nicht beachte, sondern
die Trainingsdaten für Männer und Frauen werden in einen Topf
geworfen.
Ein Satz von Modellen wird trainiert, unabhängig vom Geschlecht.
Es wird auch nicht während des Cluster-Baums die Frage nach dem
Geschlecht des Sprechers gestellt.
Dann bekomme ich eine Wortfehlerrate von 14,5 Prozent.
Das heißt, das ist schon mal deutlich schlechter.
Also so ein 1,2 Prozent absolut, das sind ungefähr zehn Prozent
relativ, die der Spracherkenner dadurch schlechter wird, dass ich also
das nicht ins Schau.
Wenn man sich jetzt mal anschaut, wie verhält es sich das denn
zwischen Männern und Frauen, wenn man jetzt sowohl die
geschlechterabhängigen als auch die geschlechtervöllig unabhängigen
Modelle sieht, dann sieht man da einen schönen Trend, dass männliche
Sprache grundsätzlich zu einer höheren Wortfehlerrate führt als
weibliche Sprache.
Da sieht man jetzt so eine... sieht man das halt schön, dass Frauen,
also meine fünf Prozent absolut, das sind sowas wie, ja es sind nicht
ganz 50 Prozent, aber sind sowas 30 bis 40 Prozent höhere
Wortfehlerrate für Männer als für Frauen.
Die Frage, warum das so ist, ist immer schwierig zu beantworten.
Die Theorie dahinter lautet, eigentlich müsste es anders sein.
Normalerweise würde man sagen, dass Frauen eigentlich, weibliche
Sprache schwerer zu erkennen ist, weil sie von den Frequenzen her in
den höheren Frequenzbändern angesiedelt ist.
Und das sollte eigentlich die Erkennung erschweren.
Ich komme halt oben in den Bereich, schneller in den Bereich rein, wo
ich halt Schwierigkeiten habe, dann die Formanten voneinander zu
trennen und die Formanten sind halt in relativ hohen Bereichen.
In der Praxis ist es aber so, dass halt männliche Sprache schwerer zu
erkennen ist und die Vermutung dahinter ist, dass Frauen wohl eine
Tendenz haben, deutlicher zu artikulieren als Männer.
Männer scheinen wohl eher zum Grunzen zu neigen, was so das Sprechen
angeht und das ist dann entsprechend halt schwerer zu erkennen.
Und die Idee, wenn man jetzt diesen Clusterbaum mit den Modalitäten
hernimmt, wäre, im Idealfall sollte man nicht schlechter sein als die
geschlechterabhängigen Modelle, denn der Clusterbaum kann genauso die
geschlechterabhängigen Modelle lernen, indem er einfach als erste
Frage immer stellt, Mann oder Frau, und dann verzweigt er halt.
Das wäre dann dasselbe, als wenn ich die akustischen Modelle separat
halten sollte.
Und im Idealfall sollte er trotzdem noch Synergien zwischen der
männlichen und der weiblichen Sprache irgendwie herausfinden können.
Und jetzt sieht man, das ist leider nicht ganz der Fall, so mit 13,4
Prozent ist man also minimal schlechter.
Wahrscheinlich ist der Unterschied auch nicht wirklich statistisch
signifikant, aber was man halt sieht, ist, dass interessanterweise
dieser geschlechterabhängige Baum relativ gut, also für die Männer
besser funktioniert, als dieser geschlechterabhängige Baum.
Bei den Frauen ist es leider umgekehrt, da wird es ein bisschen
schlechter und in der Summe wird es halt ungefähr gleich gut.
Das heißt also, der rote Balken funktioniert für Männer besser als der
schwarze Balken, aber leider halt für Frauen schlechter als der
schwarze Balken.
Ein Grund dafür könnte sein, dass man unter Umständen eine Imbalance
hat in der Anzahl der Männer und Frauen in den Trainingsdaten.
Das es also durchaus sein kann, dass es vielleicht deutlich mehr
Männer als Frauen gibt in den Trainingsdaten und dass deshalb, wenn
man bei dieser Ausnutzung dann irgendwelche Effekte hat, dass dann
halt das Modell für die Frauen einfach schlechter wird.
Hier hat man mal abgetragen, wie viele Modelle sind denn überhaupt
abhängig von der Montalität.
Geschlecht hat man für mehrere Phoneme.
Für jedes Phonem gibt es ja, das ist so ein Zentrumsphonem, gibt es
einen Clusterbaum, halt aufgetragen.
Wenn ich 1000 Modelle klastere, wenn ich 2000 Modelle klastere, wenn
ich 30.000 Modelle klastere, wie viele von den Fragen, die dann
dahinter herauskommen, wie viel Prozent sind denn dann
modalitätenabhängig.
Und da sieht man halt, für manche Modelle sind bei tausend Bäumen die
Modell, ist die Modalitätenfrage völlig uninteressant.
Zum Beispiel bei dem S-Laut ist erstmal die Modalitätenfrage relativ
uninteressant und erst wenn ich anfange 2000, 3000 Modelle zu
klastern, wird die Modalitätenfrage überhaupt gestellt.
Das ist also ein Zeichen dafür, dass im Clusterbaum diese
Modalitätenfrage relativ weit unten kommt, also relativ spät erst
ausgewählt wird nach dem Entropie-Distanz-Kriterium.
Aber das, wenn ich mal sozusagen mit meinem Latein am Ende bin, wie
kann ich denn jetzt noch die einzelnen Modelle anhand der übrigen
Fragen, die ich habe, auseinander halte, dass dann tatsächlich die
Modalitätenfrage relativ häufig gestellt wird.
Und offensichtlich ist sie halt für Vokale wichtiger als für bestimmte
Konsonanten.
Das macht halt auch Sinn, so ein Frikativ S, der ist ja stimmlos, der
ist nicht abhängig von der Länge des Vokaltraktes in dem Sinne, weil
ich da halt nicht diese Resonanzen der Grundfrequenz habe.
Ich habe auch keine Grundfrequenz, die unterschiedlich sein könnte,
während so stimmhafte Vokale natürlich eher abhängig davon sind, mit
welcher Grundfrequenz wird in der Vokaltrakt angeregt, wie genau sehen
denn die Resonanzen, die ich da erhalte, aus.
Dann das nächste Beispiel war halt mit Signal-zu-Rausch-Abstand.
Normales, wo gemischt wurde, gegen eins, wo mit Modalitäten gearbeitet
wurde.
Und man sieht halt, der Schwellwert war jetzt hier 17 Dezibel.
Man sieht halt, dass in der sauberen Sprache habe ich eine
Wortfehlerrate von 12,7 Prozent beziehungsweise 11,7 Prozent und
sobald halt Geräusch behaftet wird, steigt halt die Wortfehlerrate, so
wie man das halt auch erwarten würde.
Und dadurch, dass man diese Modalitätenfragen verwendet, kann man
einen Gewinn schaffen gegenüber dem Fall, wo ich einfach
Trainingsdaten von Geräusch behaftet und nicht Geräusch behaftet
zusammenwerfe.
Und da sieht man wieder so Vornehme, die besonders betroffen sind
durch diese Modalitätenfragen.
Da sieht man halt auch wieder, dass hier dann solche Sachen wie
Frikative schon relativ spät erst überhaupt angefragt werden.
Aber dann, wenn sie angefragt werden, zum Teil deutlich deutlicher
angefragt werden, als so solche Plus-Leaf-Laute wie das B und das D.
Was man sich auch dadurch erklären kann, dass halt gerade solche
stimmlose Konsonanten besonders anfällig sind gegenüber Rauschen, das
halt das Spektrum dann beeinflusst und dass da halt viele
Informationen, die man jetzt für die Unterscheidung der einzelnen
Modelle bräuchte, halt verloren gehen würde.
Und dann das letzte Beispiel ist halt die Sprechrate und da sieht man
halt auch das gleiche Verhalten, dass wenn man halt die Sprechrate als
Modalität mit hinzunimmt, man am Ende in der Lage ist, da die
Wortfehlerrate ein bisschen zu verbessern und dass, sagen wir mal, das
Verhalten über die einzelnen Phoneme hinweg relativ ungefähr gleich
ist, dass man also erst so ab 2.200 Modellen überhaupt diese Frage
sieht und erst bei 3.000 Modellen die Fragen dann relativ häufig
vorgenommen werden.
Und das Letzte, was man halt gemacht hat, ist, dass man sich mal
deutsche Dialekte angeschaut hat.
Wenn man halt mit Phonetikern und Linguisten spricht, die würden halt
den deutschen Sprachraum in diese vielen Kategorien unterteilen, die
man dann wieder in diese farbigen Cluster zusammenfassen kann.
Man hat da also so diesen süddeutschen Raum, man hat da diesen
ostdeutschen Raum zusammen, der so eine Art mitteldeutschen Raum
bildet und dann gibt es halt so diesen norddeutschen Raum, der halt
auch ein bisschen aufgeteilt ist, je nachdem von wo man jetzt
herkommt.
Dieses E, dieses Hannover, das ist im Prinzip das, was man
normalerweise als das Standardhochdeutsche definieren würde.
Das Deutsch, das so im Raum Hannover gesprochen wird, fällt also mit
mehr so in die norddeutschen Dialekte rein und dann sieht man ja
schon, geht es relativ hier noch im Westfälischen und dann kommt
irgendwann der Übergang ins Rheinland, ins Hessische.
Da hat man dann den Übergang ins Mitteldeutsche und alles hier
unterhalb Donau, Main und so weiter, das kommt dann alles in diesen
süddeutschen Bereich rein.
Und wenn man da jetzt halt auch wieder anschaut, was ist, wenn ich
jetzt danach frage, wo ist der Sprecher aufgewachsen, also welchen
Dialekt spricht er, dann sieht man, dass man da halt auch entsprechend
Gewinne hat gegenüber dem, wir trainieren einfach auf allem.
Und man sieht insbesondere, dass dieses norddeutsche, insbesondere
auch dieses referenzhochdeutsche am besten noch besser zu erkennen
ist, weniger Wortfehlerraten hat, als wenn ich in den süddeutschen
Raum gehe oder halt in diesen mitteldeutschen Raum mit den
sächsischen, hessischen oder auch pfälzischen Dialekten oder wie
gesagt halt hier im süddeutschen Raum mit den entweder fränkischen
oder auch alemannischen Dialekten, die man dann hier so in der
Rheinschiene da haben würde.
Es könnte, könnte in der Tat damit zusammenhängen.
Die Daten, worauf das trainiert wurde, war schon relativ balanciert,
wenn ich das richtig in Erinnerung habe.
Das ist also eine Datenbasis, die wurde in München an der LMU bei den
Phonetikern gesammelt.
Da ist, die haben schon versucht, möglichst die Dialekte alle
gleichmäßig abzudecken.
Das Problem, das man hier hat, wird wahrscheinlich eher mit der
Aussprache zusammenhängen, die man findet, wenn man ins
Aussprachewörterbuch reinschaut.
Wenn man jetzt in ein Aussprachewörterbuch reinschaut, ein
offizielles, das offizielle Aussprachewörterbuch richtet sich halt
nach dem Deutsch, das da in der Region Hannover gesprochen wird.
Das ist halt der prototypische Raum für das Hochdeutsche und das
definiert sozusagen, wie ein Wort mehr oder weniger ausgesprochen
wird.
Während das, was jetzt, sagen wir mal, das Fränkische oder auch
Bayerische, Niederbayerische, Hochbayerische, das irgendwo dann in dem
Bereich geschrieben wird, das wird sich allein von der Phonemenfolge
deutlich von dem unterscheiden, was der Sprecher aus dem Bereich
Hannover Sprache sagen würde.
Und dann habe ich halt das Problem, dass ich halt ein Mismatch habe
zwischen dem, was im Wörterbuch drin steht und dem, was tatsächlich
gesagt wurde.
Und das bringt mich dann in Schwierigkeiten rein.
Und das bringt mich dann in Schwierigkeiten, dass ich, wenn ich also
solche falschen Aussprachen im Wörterbuch drinstehen habe, dass ich
zwei Arten von Fehlern machen werde.
Zum einen wird es so sein, dass ich im Training ein Modell mit Daten
trainiere, die nicht passen.
Das heißt, ich also verschmutze sozusagen das Modell mit Daten, die
eigentlich zu einem anderen Modell gehören würden.
Wenn ich in Gaussglocken denke, werden die Gaussglocken von ihrer
Varianz her plötzlich breiter, obwohl sie schärfer sein könnten.
Das heißt, sie denken plötzlich mehr, müssen mehr aus dem Merkmalsraum
abdecken, als sie eigentlich abdecken sollten, können dann halt
dementsprechend auch weniger gut diskriminieren gegenüber anderen
Modellen, anderen Gaussglocken.
Und der zweite Fehler ist halt, dass selbst wenn ich richtig trainiert
habe, wenn ich jetzt einen Fehler im Aussprache-Wörterbuch habe, ich
dann für die Bewertung, für die Auswertung, für die Berechnung der
Wahrscheinlichkeit eines Wortes das falsche Modell heranziehe.
Und das wird natürlich dann die Wahrscheinlichkeit entsprechend
unterschätzen.
Weil halt das falsche Modell angewandt wird, wird halt sagen hier,
dass eine Wahrscheinlichkeit, die relativ gering ist, weil das passt
ja nicht und ich sozusagen unterschätze dann die Wahrscheinlichkeit,
dass es dieses Wort tatsächlich war und unter Umständen gewinnt halt
ein anderes Wort bei der Wahrscheinlichkeitsschätzung.
Und weil halt diese beiden Fehler passieren können, ist halt die
Qualität des Aussprache-Wörterbuches, wenn ich jetzt so ein
akustisches Modell trainiere, von ganz grundlegender Bedeutung.
Fehler im Aussprache-Wörterbuch können halt ganz schnell zu deutlichen
Verschlechterungen in der Erkennungsleistung führen, weil halt durch
diese zwei Fehler halt die Leistung des akustischen Modells massiv
nach unten geprügelt wird.
Das Interessante ist, dass es gar nicht mal unbedingt so wichtig ist,
dass ich da der reinen phonologischen Lehre folge, das in meinem
Aussprache -Wörterbuch wirklich das rein phonologische Richtige drin
steht, sondern das Allerwichtigste ist, dass das, was da drin steht,
konsistent ist.
Dass ich also mit Modellierungseinheiten arbeite, die mir immer
konsistent auf die auf die gleiche Art von Daten, auf das gleiche Art
von Signal angewandt werden.
Und das zu machen, ist durchaus eine gewisse Kunst, ein bisschen ein
Hexenwerk und eine unangenehme Aufgabe, wenn ich halt ein
Spracherkennungssystem bauen möchte.
Wenn ich jetzt so Aussprache-Wörterbücher niederschreibe, habe ich
halt verschiedene Arten und Weisen, wie ich da vorgehen kann.
Das Aufwendigste wäre, dass ich für jedes Wort, das ich habe, halt per
Hand niederschreibe, wie ist seine Aussprache aus, aus welchen
Phonemen setzt es sich zusammen.
Das ist natürlich bei so Vokabularien von mehreren hunderttausend
Wörtern ist das extrem aufwendig und extrem teuer und da Experten für
zu finden, die das in richtiger, erträglicher Zeit machen, ist halt
extrem schwierig.
Was man stattdessen häufiger macht, ist, dass man versucht mit Regeln
zu arbeiten.
Dass man irgendwie manuell hinschreibt, einen Satz von Regeln, der mir
aus der Art und Weise, wie das Wort geschrieben wurde, dann eine
Phonemenfolge macht.
Diese manuellen Regeln sind natürlich empfindlich gegenüber Ausnahmen.
Also wenn ich halt Ausnahmen in der Aussprache habe, werden die durch
die Regel meistens nicht abgedeckt und dann werden diese Wörter unter
Umständen falsch in Phonemsequenzen umgewandelt.
Und das ist dann insbesondere unangenehm, wenn man noch bedenkt, dass
die Wörter, deren Aussprache eine Ausnahme ist und nicht den
eigentlichen Regeln folgen, meistens die Wörter sind, die am
häufigsten vorkommen.
Und dann die dritte Möglichkeit wäre, dass man halt versucht,
automatisch zu lernen aus Trainingsmaterial.
Das heißt, ich brauche irgendwas, ein Wörterbuch, wo mir halt eine
Menge von Trainingsdaten niedergeschrieben wurde, Wort und
Phonemenfolge.
Und daraus lerne ich jetzt automatisch zu generalisieren, das heißt
Aussprachen zu generieren, von Wörtern, die ich in meinen
Trainingsdaten noch nicht gesehen habe.
Und da gibt es dann verschiedene Lernmodi.
Man kann, unterscheidet doch häufig, sogenanntes Inkrementelles versus
Batchlernen.
Beim automatischen Lernen kann man auch entweder versuchen,
automatisch Regeln zu lernen oder man kann mithilfe von statistischen
Modellen arbeiten.
Manchmal hat man sowas wie interaktives Lernen und häufig, wenn man
automatisch gelernt hat, setzt man manchmal auch noch Experten dran,
die dann eine manuelle Kontrolle der gelernten Aussprachen durchführen
und die dann unter Umständen noch mal korrigieren.
Das, was man meistens macht, wenn man jetzt mit
Spracherkennungssystemen auf großen, bekannten Sprachen arbeitet, dass
man mit existierenden Wörterbüchern arbeiten kann.
Also wenn man für sowas wie Englisch zum Beispiel arbeitet, dann wird
man da relativ umfangreiche elektronische Aussprache-Wörterbücher
finden, in denen für viele Wörter die Aussprache in Phonemen
entsprechend niedergeschrieben ist.
Das hier sind jetzt mal zwei Beispiele aufgelistet.
Das eine für amerikanisches Englisch, das andere für britisches
Englisch.
Für amerikanisches Englisch gibt es da das sogenannte Carnegie Mellon
Dictionary, das CMU Dictionary, das über Generationen hinweg an der
CMU von den Linguisten und Computerlinguisten entwickelt wurde,
arbeitet mit einem Phonemensatz, der hat sowas wie 39 Phoneme und hat
inzwischen, ich glaube die 125.000 Wörter sind veraltet, wir sind
glaube ich inzwischen deutlich über 200.000 Wörter in der in der
neuesten Version.
Alternativ dazu gibt es im britischen Englischen das sogenannte Beeb
Dictionary.
Was die gemacht haben ist, die haben halt viele unterschiedliche
Quellen von Aussprache-Wörtern, Büchern aus dem britischen Raum
hergenommen und dort die Aussprachen vereinheitlicht, insbesondere in
einen vereinheitlichten Phonemensatz überführt, weil was man nämlich
häufig findet ist, wenn man unterschiedliche Quellen in einer
Sprachehand findet mit Listen von Aussprachen, dann arbeiten die
häufig mit unterschiedlichen Phonemensätzen, weil Phonetiker und
Linguisten sich grundsätzlich nicht einig werden können, was überhaupt
der Phonemensatz einer Sprache jetzt ist.
Da gibt es halt zig widerstrebende Meinungen.
Der eine sagt halt, das sei ein Phonem, der andere sagt nicht und der
andere sagt, wir brauchen noch zusätzlich dieses Phonem und der andere
will es nicht haben und dann weiß man auch nicht, für wann man welches
Phonem bei welcher Aussprache anwendet und so weiter und so fort.
Das heißt, wenn man also so existierende Dinge hernimmt, dann haben
die unterschiedliche Phonemensätze und dann muss man sich irgendwie
überlegen, wie man das Ganze jetzt in einen einheitlichen Phonemensatz
vereinen kann und meistens gehen da Informatiker halt sehr pragmatisch
vor.
Für die ist halt nicht interessant, ob das Ganze wirklich irgendeiner
schönen phonologischen oder phonetischen Theorie folgt, sondern die
wollen hinterher, dass das Spracherkennungssystem vernünftig
funktioniert und dementsprechend versucht man da auch eher den
Phonemensatz klein zu halten, damit man möglichst viel Trainingsdaten
pro Phonem hat.
Man schaut, solange es ähnlich genug klingt, kann man es zusammenlegen
und das Interessante ist, viele Dinge, die man hinterher hat, die kann
man durch den Clusterbaum, durch die kontextabhängigen Einheiten eh
gerade ziehen lassen.
Ich kann dann hinterher auf den Trainingsdaten mit Hilfe der Gewichte
in Entropiedistanz und mit Hilfe des Clusterbaums auf den
kontextabhängigen Einheiten eh noch so einzelne Variationen oder
Ausnahmen datengetrieben lernen.
Wenn man jetzt so Ausspracheregeln lernen möchte, dann braucht man in
der Regel ein Alignment zwischen den Zeichen des Wortes, den Graphemen
und den Phonemen, die dazugehören.
Wenn man jetzt also dieses englische Wort checked zum Beispiel
hernimmt, dann hat man oben die Zeichenfolge und unten hat man die
Phonemenfolge.
Und jetzt muss man sich überlegen, wie kann ich jetzt die Zeichen, die
Grapheme, den Phonemen zuordnen.
Und da hat man halt das Problem, dass man Fälle haben kann, in denen
ein Graphem auf ein Phonem abgebildet wird, ein Graphem auf gar kein
Phonem.
Es kann sein, dass zwei Grapheme auf ein Phonem abgebildet werden.
Das heißt also, ich habe die Möglichkeit, dass ich ein One-to-one, ein
One -to-many oder Many-to-one Alignment haben kann.
Das sind immer sehr unschöne Alignments, damit zu arbeiten, weil sowas
kann man zum Beispiel schlecht als Abbildung überhaupt noch
hinschreiben, weil es in dem Sinne keine Abbildung mehr ist, sondern
sowas ist dann irgendwann nur noch eine Relation.
Und damit man hinterher doch noch bei einer Abbildung bleibt, hat man
dann halt hier die Konvention, dass es halt so Zeichen gibt, die halt
auf nichts abgebildet werden.
Dass man also nicht sagt, dieses C und H werden beide auf das C
abgebildet.
Das ist eigentlich eher was, was unschön ist, was man zu vermeiden
versucht.
Diese Alignments kann man halt automatisch finden, mit Hilfe von
statistischen Methoden, zum Beispiel auch mit Methoden aus der
statistischen Übersetzung.
Wenn ich mal so ein Alignment habe, dass ich also eine Zuordnung habe,
dieses Grapheme wird auf folgendes vonnehmen oder auf nichts
abgebildet, dann kann ich anfangen, da zum Beispiel einen Regelbaum zu
lernen.
Der halt als Eingabe bekommt, das ist das aktuelle Zeichen und dann,
welche Zeichen stehen links davon, welche Zeichen stehen rechts davon,
also in welchem Kontext befindet sich das Zeichen.
Und dann kann man versuchen, Regeln abzuleiten, so wie beim
Classification and Regression Tree für das kontextabhängige akustische
Modell und kann dann versuchen, so einen Regelbaum zu haben, der, wenn
ich dem jetzt ein neues Zeichen in seinem Kontext reinschiebe, dann
sagt er mir, welches vonnehmen dabei herauskommen wird.
Und je nachdem, welche Sprache ich verwende, kann das mal mehr oder
mal weniger gut funktionieren.
Hier mal so ein paar Beispiele über Sprachen hinweg.
Das eine wurde trainiert für britisches Englisch auf dem Oxford
Dictionary, dann für amerikanisches Englisch auf dem CMU Dictionary,
für französisch ist das Brülex, so ein relativ bekanntes, für deutsch
gibt es halt das deutsche Selex und dann für Thai wurde halt irgendein
Thai -Lexikon hergenommen.
Und dann wurden halt solche Regelbäume gelernt auf Trainingsdaten.
Man hat halt immer gemacht, 80 Prozent Training, 20 Prozent
Development -Daten und 10 Prozent des Wörterbuchs sind halt Testdaten.
Und dann hat man halt trainiert und danach geguckt, wie gut sind die
Aussprachen, die dabei herauskommen.
Und wenn man dann jetzt die Aussprachen bewerten will, hat man halt
zwei Fehlermaßen.
Man hat einmal geguckt, wie viele Phoneme wurden korrekt vorhergesagt
und dann hat man noch geschaut, wie viele Wörter wurden denn zu 100
Prozent korrekt generiert, also enthielten keinen Fehler in ihrer
Aussprache.
Und dann sieht man halt, dass das zum Beispiel für britisches Englisch
eine relativ schöne Phonemenkorrektheitrate, Akkuratheit von 95, 96
Prozent bekommt, dass bei den Wörtern man aber mit 75 Prozent korrekte
Wörter doch eher schlecht liegt.
Dann bei diesem CMU-Dictionary sieht man schon da die
Phonemenfehlerrate noch mal ein klein bisschen geringer und vor allem
die Rate der 100 Prozent korrekt generierten Aussprachen für Wörter
schlecht, also schon deutlich unter 60 Prozent.
Während man bei Französisch relativ gut liegt, also die
Phonemenkorrektrate ist relativ hoch, die Anzahl der Wörter ist über
90 Prozent, das ist schon mal nicht schlecht.
Und dann beim Deutschen, das liegt irgendwo so zwischen dem Englischen
und dem Französischen, da kriegt man so auch 98, 99 Prozent der Wörter
und irgendwie knapp nicht ganz 90 Prozent, der Phoneme und nicht knapp
90 Prozent der Wörter richtig.
Und bei Thailändisch wird es halt schon deutlich schwieriger, da ist
halt so ähnlich wie beim Englischen 95 Prozent der Phoneme korrekt und
am Ende so was wie 68 Prozent der Wörter korrekt.
Wenn man sich jetzt so was anschaut, kann man da so ein paar Sachen
ableiten.
Es gibt Sprachen, für die funktioniert diese Schrift-zu-Aussprache
-Konventierung leichter und es gibt Sprachen, für die funktioniert es
schlechter.
Für Englisch funktioniert es wohl relativ schwierig, für Französisch
funktioniert es erstaunlich gut, für Deutsch funktioniert es auch so
mittelmäßig gut und zum Beispiel für so eine Sprache wie Thai ist das
dann doch wieder ein bisschen schwieriger.
Wenn man sich zurückerinnert, was wir gesagt hatten an die
Schriftsysteme, die wir hatten.
Englisch, Französisch und Deutsch verwenden alle eine Alphabetschrift.
Das heißt, in der Theorie sollte jedes Zeichen entweder einem
Konsonanten oder einem Vokal entsprechen und die Aussprache abzuleiten
sollte eigentlich relativ leicht sein.
Aber wir hatten damals schon gesagt, dass irgendwann mal die Schrift
festgelegt wurde und von da an haben sich die Schrift und die
Aussprache voneinander wegentwickelt, haben angefangen zu divergieren.
Und im Englischen ist das halt wohl insbesondere deutlicher passiert
als zum Beispiel im Deutschen, was unter anderem ein Indiz dafür ist,
dass das Englische wohl schon deutlich länger geschrieben wird als zum
Beispiel das Deutsche.
Und das Französische hat da noch mal relativ, hat auch ein ähnliches
Verhalten.
Und beim Französischen ist es halt so, dass die Regeln mit aus dem,
oder dass man relativ gut mit Regeln aus der Schrift immer noch die
Aussprache ableiten kann, auch wenn sie nicht unbedingt immer was
direkt mit den hingeschriebenen Zeichen auf den ersten Blick zu tun
hat, gibt es doch relativ gute darunter liegende Regeln, mit denen man
dann jedes beliebige französische Wort relativ zuverlässig doch
aussprechen und lesen kann.
Und das Deutsche ist halt so ein bisschen schlimmer als das
Französische, aber deutlich besser als das Englische.
Herr Weibel erzählt an dieser Stelle immer diesen, so einen schönen
Standardwitz.
Da geht es immer um einen Deutschen, einen Franzosen und eine Britte
treffen sich auf der Straße und alle drei kommen miteinander ins
Gespräch und fangen an zu erzählen.
Und dann sagt irgendwann der Deutsche, ja, bei mir zu Hause, ich habe
auch einen Hund.
Ah, ist ja super, du hast einen Hund.
Wie heißt er denn?
Ja, mein Hund, der heißt Fifi.
Ah, Fifi, das ist ja lustig.
Wie schreibt man das denn?
Ja, das ist ganz einfach.
F-I-F-I.
Wollen wir mal noch den Französischen?
Ah, das ist schön.
Ich habe zu Hause auch einen Hund.
Ah, du hast auch einen Hund.
Und wie heißt er denn?
Der heißt Fifu.
Ah, Fifu, ja, das ist ein schöner Name.
Wie schreibt man denn?
Ah, das ist ganz einfach.
Schreibt man F-I-F-O-U-U.
Dann sagt der Engländer, ja, ja, ja, ich habe zu Hause auch einen
Hund.
Ah, du hast auch einen Hund.
Und wie heißt der?
Mein Hund, der heißt Fido.
Und wie schreibt man den?
Fido, ganz einfach.
P-H-Y-D-O-U-G-H.
Und das ist halt diese Sache, das macht es einem extrem schwierig,
fürs Englische so schöne regelbasierte Aussprache-Wörterbücher zu
machen.
Das ist immer was, wenn man englische Spracherkennungssystem bauen
möchte, vernünftiges Aussprache-Wörterbuch für die Wörter, die man
jetzt gerade braucht, zu generieren, ist extrem schwierig, weil egal
wie groß das Wörterbuch, mit dem man arbeitet, ist, die Wörter, die
man jetzt gerade braucht für das Spracherkennungssystem, die stehen
unter Garantie nicht drin.
Da wird man wieder irgendwie eine Aussprache für ableiten müssen.
Auch wenn ich ein CMU-Diktionär mit 200.000 und ein BIP-Diktionär mit
250.000 Wörtern habe, die Wörter, die ich jetzt brauche, stehen nicht
drin.
Und dann sitze ich da wieder drei Tage und muss per Hanty aussprachen,
so leidenhaft irgendwie zusammenzumachen.
Well, the British is actually, it is the oldest one, so it should be
way before either the German or the French writing.
Thai should be the oldest?
Yes, but with Thai the problem is, it's not an alphabet.
Thai is a syllabic script, which makes it already more difficult,
because I have more, more, more, more graphemes to take care of.
It is, it is pretty good, but the fact that it is a syllabic script
might actually make it a little bit more difficult, because you have
to learn, learn more.
You have, you have a larger set of input units, so to speak, and that
might actually bring you at some point into data sparsity problems, et
cetera, et cetera.
I mean, there's also one completely inconsistent result, and that is,
if you compare the British English with the American English.
Even though the American English is much younger, et cetera, et
cetera, et cetera, the difference shouldn't be that big.
It should be more or less approximately the same sort of error rate as
you would have for British English.
Even though the pronunciations are different, it shouldn't be such
divergence, it shouldn't be so much more difficult.
Es sollte nicht so viel schwieriger sein, amerikanische Englisch als
Aussprache zu generieren als britisches Englisch.
Einer der Gründe, warum das hier so schlecht aussieht, ist, weil das
CMU Dictionary so schlecht ist.
Das CMU Dictionary hat einen relativ schlechten Ruf unter Phonetikern,
und der Grund hat mit Konsistenz zu tun.
Das Wörterbuch wurde halt von Generationen, von Studenten der
Computerlinguistik aufgebaut.
Das heißt, da hat nicht einer dran gesessen und hat Aussprachen
aufgebaut, sondern es hat mal der ein bisschen dran gesessen, und dann
ging es weiter an den nächsten, und dann wieder der Nächste dran
gesessen.
Der eine war mal gut, der andere war nicht so gut darin, weil es
relativ schwierig ist, eine Aussprache gut hinzuschreiben.
Ich muss ja erst mal wissen, wie wird das Wort ausgesprochen, und dann
muss ich es in der Lage sein, richtig von nebenhin zu schreiben.
Und unterschiedliche Transkribierer sind halt unterschiedlicher
Meinung.
Und auch wenn man sich die Konsistenz innerhalb eines Transkribierers
anschaut, ist die nicht notwendigerweise immer gegeben.
Also man macht da sehr schnell Fehler, und mal tendiert man eine
bestimmte Zeit dazu, dann tendiert man später wieder dazu und macht
das.
Das heißt also, das Wörterbuch selber, das CMU-Dictionary selber, ist
in sich relativ inkonsistent.
Also das Sachen, die, sagen wir mal, gleich ausgesprochen werden,
unterschiedlich in Phonemen annotiert sind, kommt im CMU-Dictionary
relativ häufig vor.
Und wenn ich jetzt also inkonsistente Trainingsdaten reinschiebe und
auf inkonsistenten Testdaten teste, dass ich da keine besonders gute
Leistung erreichen kann, sollte auch klar sein.
Das heißt, deswegen ist das so mit einer der Belege dafür, dass also
das CMU-Dictionary auch gewisse Probleme mit sich bringt und deswegen
auch unter Phonetikern nur einen eher mittelmäßigen Ruf genießt.
Wobei, wenn man es für Spracherkennungssysteme verwendet, funktioniert
es erstaunlicherweise relativ gut.
Da sind die Selbstlernenden, die maschinellen Lernenden, Anteile der
Spracherkennungssysteme kommen damit mit dieser vermuteten
Inkonsistenz innerhalb des Wörterbuches wohl anscheinend relativ gut
zurecht.
Beim Französischen hat man eher ein anderes Phänomen, das einem viele
Kopfschmerzen bereitet.
Also wenn man gehässig wäre, könnte man sagen, eine Aussprache eines
französischen Wortes abzuleiten, ist sowieso ganz einfach, weil es
wird eh alles gleich ausgesprochen.
Und das ist halt im Französischen so, dass es da extrem viele
Homophone gibt.
Also es gibt sehr viele Wörter, die haben alle die gleiche Aussprache.
Also ich spreche nicht gut Französisch, eigentlich gar kein
Französisch, aber wenigstens sowas wie sans.
Da, wenn man ins Wörterbuch reinguckt, wenn man die Aussprache zurück
abbildet, da kommen da irgendwie sowas wie 20, 30 Wörter raus, die es
jetzt hätten sein können.
Und das macht es natürlich einfach, wenn man was vorhersagen will,
weil man hat nicht so viel zwischen dem und sich entscheiden muss,
aber macht es natürlich hinterher schwierig, wenn man Spracherkennung
betreiben will, wenn eh alles gleich klingt und man das sich aus dem
Kontext herleiten soll.
Wenn man jetzt sowas lernen möchte, was man halt häufig macht, damit
man irgendwie in erträglicher Zeit auf einen grünen Zweig kommt, wenn
man also komplett für eine neue Sprache Aussprachen lernen möchte, ist
eine Möglichkeit, das Ganze inkrementell zu machen.
Die Idee ist, naja, ich möchte möglichst schnell eine möglichst gute
Abdeckung der gesamten Sprache bekommen, also nehme ich mir erstmal
die häufig vorkommenden Wörter her, keine Ahnung, 200, 500, irgendwas,
was ich mir leisten kann, dass ich die komplett per Hand hinschreibe.
Dann aus diesen per Hand hingeschriebenen Trainingsdaten lasse ich
halt meine Regeln lernen und dann nehme ich die nächsten 100 Wörter,
lasse dafür Aussprachen generieren, habe einen Menschen, der guckt die
an und sagt, okay, wenn korrekt generiert wurde, ins Trainingsdaten
hinzu, wenn falsch, dann korrigiere ich es halt und dann kommt es zu
den Trainingsdaten hinzu.
Und das macht man so lange, bis die Vorhersagegenauigkeit, die man
jetzt noch bekommt bei den neuen Badges, so einen gewünschten Wert
erreicht.
Auf die Art und Weise muss ich halt nicht mehr per Hand manuellen
annotieren, als unbedingt notwendig ist, um halt Regeln zu lernen.
Diese Idee mit, ich nehme die 200 bis 500 am häufigst vorkommenden
Wörter, ist zwar erst mal ganz intuitiv, wenn man sagt, man will eine
möglichst große Abdeckung machen, aber wie gesagt, gerade die Wörter,
die am häufigsten vorkommen, sind gerade häufig die Wörter, die halt
nicht der regelbasierten Aussprache folgen, sondern die irgendwelchen
Ausnahme -Sonderfällen genügen.
Deswegen, was man häufig macht, ist, man nimmt die ersten 100 oder so
Wörter her, die häufigsten, die 100 häufigsten Wörter, macht manuell
die Aussprache, tut die ins Wörterbuch, aber auf denen lernt man keine
Regeln, weil die entsprechen nicht die Regeln, sondern entsprechenden
Ausnahmen, die verwässern mir meine Regeln, sondern ich fange erst an,
die Regeln zu lernen ab den, was sehe ich, 200, 300 häufigst
vorkommenden Wörtern oder so.
Was man halt auch häufig hat, ist, dass aufgrund von Dialekten und
regionalen Besonderheiten oder auch aufgrund von sprachimminenten
Besonderheiten Wörter unterschiedlich ausgesprochen werden können, zum
Beispiel wegen des Kontextes, in dem sie vorkommen, wegen der
Dialekte.
Manchmal gibt es halt auch alternative Alternativen, das
auszusprechen, also Chemie oder Chemie wird sowohl das eine als auch
das andere für mehr oder minder als richtig erachtet.
Und je nachdem, was ich zum Beispiel im Deutschen, das Super versus
Super, ist eigentlich beides korrekt, denn solche Sachen wie im
Deutschen, dass stimmhafte Konsonanten am Ende eines Wortes stimmlos
werden, das machen zwar viele, aber manche machen es halt auch nicht.
Es kann also durchaus vorkommen, dass man Wörter hat, für die es
mehrere mögliche Aussprachen gibt und wir wollen ja auch nicht die
deutsche Bühnensprache lernen, sondern wir wollen das haben, was so
gesprochen wird, wenn irgendein Mensch Deutsch spricht und ich das
erkennen möchte und dann macht man das eben so, dass man halt für
Wörter unter Umständen mehrere Aussprachen ins Wörterbuch mit
einnimmt.
Das nennt man dann eine Aussprachevariante und wie wir das schon
gesehen hatten in den Beispielen, macht man halt das dann so, dass man
die möglichen Aussprachen dann im HMM als alternative Pfade
modelliert.
Das heißt im HMM ich entweder durch den einen Pfad durchgehen kann,
der der einen Aussprachevariante entspricht oder halt eben durch den
anderen Pfad, der der anderen Aussprachevariante entspricht.
Wenn man sich das anschauen kann, wenn man jetzt ein Wort nimmt wie
25, dann kann man zum Beispiel jetzt, je nachdem wie unsauber das
ausgesprochen wird, man verschiedene unterschiedliche
Aussprachevarianten drauf hinschreiben, die halt unterschiedliche
Sachen modellieren.
Genauso wie sowas wie ja und jo und halt in die Umgangssprache gibt
oder das ein wird manchmal abgekürzt als n oder das s halt als und so
weiter und so fort, dass man das halt alles als Aussprachevarianten
mit aufnimmt.
Und hier sieht man schon so ein potenzielles Problem, wenn man gerade
solche deutschen Wörter hat, die sich aus mehreren Teilwörtern
zusammensetzen, dann kann ich, wenn ich mir jetzt alle
Aussprachevarianten der Teilwörter anschaue und die dann in ein großes
zusammengesetztes Wort zusammenkombiniere, kann es passieren, dass ich
unter Umständen sehr viele Aussprachevarianten für dieses Wort
bekommen könnte.
Jetzt ist die Frage, wie findet man sinnvolle Aussprachevarianten?
Da gibt es wieder das übliche, ich frage entweder einen Linguisten,
der schreibt alles auf, nur meistens ist er zu gründlich, der schreibt
zu viele Feinheiten auf, die mich eigentlich für den
Spracherkennungsexperten gar nicht interessieren.
Dann kann man den Spracherkennungsexperten hernehmen, der weiß, wie
ungefähr so ein Spracherkennungssystem auf Aussprachevarianten
reagiert.
Der weiß, was Sinn macht, als unterschiedliche Phonemenfolge zu
modellieren und was nicht modelliert werden muss, sondern was die
Modelle, die man verwendet bei der akustischen Modellierung lernen
können, funktioniert für die Spracherkennung meistens am besten, ist
halt auch das, was am teuersten ist.
Oder ich kann halt wieder versuchen, Regeln zu sammeln und dann diese
Regeln anzuwenden.
Also ich, wenn ich sowas wie einen IG am Ende habe, dann kann das
entweder die Form der Endung IG haben oder ICH.
Hat das Problem, dass diese Regeln häufig übergenerieren, dass sie zu
viele Aussprachevarianten generieren, weil sie an zu vielen Stellen
dann angewandt werden können, wo sie dann doch nicht Sinn machen.
Oder ich kann das Ganze halt versuchen, datengetrieben zu machen,
indem ich mir halt möglichst automatisch anschaue, in den
Trainingsdaten, die ich da habe, in den akustischen Daten, welche
Aussprachevarianten scheinen denn vorhanden zu sein, indem ich halt
Phonemerkennung durchführe auf den Trainingsdaten und dann schaue, wo
weiche ich denn ab von der Standardvariante und wenn das häufig
passiert, dann nehme ich es halt als Aussprachevariante mit auf.
Das Problem ist, dass man es mit Aussprachevarianten sehr leicht
übertreiben kann und das dann aus Gut, Gemein, schlecht gemacht wird.
Wenn ich mir zum Beispiel sowas anschaue, wie das Wort EINEN, das kann
halt vorkommen als EINEN, EINEN, UND, HABEN, WIR, kann man halt
NORMAL, HABEN, WIR oder manchmal wird er auch häufig genug als HAMMER
ausgesprochen, EINMAL wird häufig als MAL ausgesprochen und wenn man
das dann macht und für jedes Wort insbesondere sehr kurze
Aussprachenvarianten findet, dann kommt am Ende meistens MURKS raus.
Wenn also sowas wie NIMM MAL EINEN HAMMER, wenn der sagt NIMM MAL
EINEN HAMMER gesprochen wird, wenn ich dann das Ganze ohne
Aussprachevarianten erkennen würde, dann würde daraus NIMM MAL HAMMER.
Dann fällt das EINEN sozusagen weg, weil dieses hinten dran getackerte
NEN, das hat so wenig Signalenergie, das wird irgendwie drüber
gebügelt.
Wenn ich jetzt aber diese ganzen, insbesondere diese kurzen
Aussprachenvarianten rein tue, dann schlagen die an jeder Stelle an.
Also dieses EINEN mit diesem kleinen N, das also nur aus diesem NEN
-Laut bestehen soll, das kann ich im Prinzip an jeder möglichen und
unmöglichen Stelle erkennen und reinführen, sodass ich am Ende unter
Umständen nur noch vollständigen Stuss rausbekomme.
Also zu viele kurze Varianten können, führen schnell zu
Erkennungsfehlern, sollte man versuchen zu vermeiden.
Und das andere Problem ist halt das Problem dieser kombinatorischen
Explosion, dass wenn ich also solche zusammengesetzten Sachen habe,
wenn ich da alle sämtlichen Varianten der Teilwörter dann
kombinatorisch zusammensetze, dann bekomme ich plötzlich viel zu viele
Varianten heraus und dann habe ich sehr, sehr viele alternative Pfade
im HMM, dann wird es rechnerisch sehr aufwendig und auch die Gefahr
der Verwechslung mit anderen Wörtern steigt halt auch sehr stark an.
Ein Problem ist auch die Sache mit den Übergängen.
Wir hatten ja gesagt, wir machen das so als parallele Pfade.
Wenn ich das Ganze jetzt im Training mache, ist das ja noch okay, nur
die Frage ist, was mache ich jetzt während der Erkennung?
Wenn ich jetzt also hier zum Beispiel auf Phonenebene unterschiedliche
parallele Aussprachevarianten hinzufüge, was mache ich da mit den
Übergangswahrscheinlichkeiten?
Eine Möglichkeit wäre, dass ich halt dann die
Übergangswahrscheinlichkeit halbiere durch die Anzahl der möglichen
Phoneme, in die ich jetzt übergehen kann.
Eine andere Möglichkeit, aber eine andere Sache sollte aber auch sein,
dass nicht jede dieser Aussprachevarianten auch gleich wahrscheinlich
ist, sondern es wird Aussprachevarianten geben, die werden häufiger
vorkommen und es wird Aussprachevarianten geben, die werden nicht so
häufiger vorkommen.
Da will man dann nicht machen 0,5 durch n, sondern der eine soll halt
eher einen höheren Wert bekommen und der andere soll halt eher einen
kleineren Wert bekommen.
Und nach der reinen Theorie sollen sich die ganzen Übergänge trotzdem
hinterher wieder zu 1 addieren.
Hat halt den Nachteil, dass dann unter Umständen, wenn ich dann
hinterher das an Wortübergängen habe, ich dann unter Umständen eine
Benachteiligung habe der Wörter mit vielen Aussprachevarianten am
Anfang des Wortes, weil dann die Übergangswahrscheinlichkeit deutlich
kleiner wird.
Und das will man natürlich auch versuchen zu vermeiden.
Und da kann man dann unter Umständen dahin gehen, dass man halt sagt,
okay, ich pfeife es darauf, dass sich die
Übergangswahrscheinlichkeiten dazu einsummieren.
Die können von mir aus auch einen Wert haben größer als 1, weil ich
möchte am Ende sowieso nicht eine Wahrscheinlichkeit rausbekommen,
sondern ich möchte am Ende sowieso nur sagen können, welche Wortfolge
war denn wahrscheinlicher als die andere Wortfolge.
Das sind so ein paar typische Aussprachevarianten fürs Deutsche.
Man sieht schon, also viele haben damit zu tun, dass man halt entweder
hinten kanonisch nach offizieller Aussprache das ig als ich
ausspricht, oder es gibt halt auch viele, die sagen es trotzdem als
ig, die also dieses stimmhaft wird so stimmlos eben nicht mitmachen,
oder dass man halt auch so Auslassungen von vonneben hat, insbesondere
in Endsilben, wenn man so diese en-Endsilbe hat, dass man dann das e
relativ schnell raus lässt oder halt auch solche Sachen wie ben dann
zu so was wie einem m verschleift und so weiter und so fort.
Das sind also so typische Ausspracheregeln, auch mit so regionalen
Effekten darin, ob man jetzt hier ein stimmhaftes oder ein stimmloses
Zischlaut hat und so weiter und so fort.
Das wären so typische Sachen, die man halt im Deutschen hat.
Wenn man das Ganze in Regeln fassen will, hat man halt diese, am
häufigsten sicherlich diese sogenannten Schwa-Ellisionen.
Normalerweise hat man hier ein e, das ist kein hundertprozentig
ausgeprägtes e, sondern das so ein bisschen reduziertes e und dieses
reduzierte e wird sehr häufig dann eben gerade komplett weggelassen.
Oder dass man halt solche rs gerade so am Ende, dass aus dem schönen
feinen r da sowas wird, was irgendwo zwischen dem Vokal und dem
eigentlichen r drin steht.
Das hier, es sind so regionale Sachen, gerade bei Dialekten, die
Qualitäten, die Art und Weise, wie die Vokale ausgesprochen werden und
wo genau die jetzt im Vokalfiereck anzusiedeln sind.
Das verändert sich halt relativ stark durch die Regionalität.
Und wie schon gesagt, diese stimmhaft, stimmlos Austauschung, da sind
wir im Deutschen halt relativ kreativ drin, dass wir uns da häufig
nicht an das Kanonische halten, sondern das eigene machen.
Wenn man jetzt datengetrieben Aussprachevarianten finden möchte, dann
ist das prinzipiell eine gute Idee, weil Experten tendieren halt, wie
gesagt, dazu zu viele sehr unwichtige, selten vorkommende, nicht so
für die Spracherkennung interessante Aussprachevarianten
hinzuzunehmen.
Regeln haben halt den Nachteil, dass sie häufig anschlagen, wo sie
eigentlich nicht anschlagen sollten.
Das werden also übertrieben viele Aussprachevarianten generiert.
Und so ein datengetriebener Algorithmus wäre eigentlich das, was wir
gerne hätten, was eigentlich schön funktionieren sollte.
Und die Idee dahinter ist, dass man halt einen Erkenner verwendet, der
halt nicht Wörter erkennt, sondern der Phoneme erkennt.
Und dann kann man aus den häufig vorkommenden Phonemensequenzen
nachschauen, welche Aussprachevarianten kommen denn häufig vor.
Die Sache hat einen Nachteil, woran sie meistens dann soweit
scheitert, dass man sie in der Praxis doch nicht so gerne nimmt, und
das ist, dass Phonemerkennung einfach nicht gut funktioniert.
Wenn man sich anschaut, so die Fehlerraten bei Phonemerkennung sind
nicht selten 50 Prozent und höher.
Also wir können nicht einfach so einzelne Phoneme gut erkennen,
sondern meistens kommt man da mit relativ schlechten
Erkennungsleistungen raus.
Das heißt, das, was man rausbekommt, ist insbesondere ziemlich stark
verrauscht.
Das heißt, wenn man da Aussprachevarianten rausfischen will, dann kann
man sich nur auf die Sachen verlassen, die man wirklich sehr, sehr,
sehr häufig gesehen hat.
Wenn man da dann von ausgehen kann, dass das jetzt nicht mal so ein
vereinzelter Phonemerkennungsfehler ist, sondern dass da tatsächlich
wohl Konsistenz etwas vorkommt, was auch, wenn man das Ganze
verrauscht mit Erkennungsfehlern, wohl doch modelliert werden sollte.
Das hat man vor einiger Zeit auch mal ausprobiert, noch im Rahmen
einer Dissertation.
Und wenn man da versucht, automatisch so Aussprachevarianten zu finden
und zu gucken, was kommt denn vor, dann sieht man zum Beispiel, dass
für dieses Wort ein, kam halt relativ häufig die Aussprachevariante
ein raus, aber auch interessanterweise relativ häufig sowas wie einen.
Das heißt, der Mensch spricht manchmal auch falsch oder verspricht
sich, wenn er Daten vorliest oder wenn er was spricht.
Oder andersrum, wenn man das jetzt dieses Können anschaut, dann wird
das relativ häufig schnell verkürzt und dann hat man hier hinten eher
was, was wie ein M klingt, aber nicht unbedingt wie ein M.
Klingt halt auch mit der Art und Weise zusammen, wie die Artikulatoren
da bewegt werden.
Und wenn man dann solche Aussprachevarianten, also auch insbesondere
welche, wo man gar nicht dran gedacht hätte, also für einen wird man
nie darauf auf die Idee kommen, einen mit reinzunehmen und für Können
wird ein Linguist, die sagen ja, das kann auch Können heißen, wenn man
die mit reinnimmt, hat das trotzdem dann die Fehlerrate von so
Spracherkennungssystemen relativ stark reduziert.
Und eine Möglichkeit, solche Aussprachevarianten dann zu finden, ist
auch, dass man statt mit Phonemen mithilfe von Silben arbeitet.
Da ist die Idee dahinter, dass man halt gerade im Deutschen in der
Lage ist, auch einen relativ vollständigen Silbenautomaten zu bauen,
der die gesamte deutsche Sprache abdeckt.
Dadurch, dass also nicht alle Silben möglich sind und nicht alle
Silben unbedingt vorkommen, kann man mit relativ wenig Silben einen
relativ kompakten Automaten bauen, der alle Silben abdenkt, der dann
sowas wie 5.000 Zustände.
Und wenn man damit dann das Ganze mal schaut, ob man damit Aussprachen
finden kann, dann kann man immerhin sowas wie jetzt 10% bis ein
Drittel der Wörter, die man nicht im Aussprache-Wörterbuch drin hat,
aber in den Daten, über die man drübergelaufen ist, damit wieder
rausfiltern.
Das Problem ist, man muss halt immer auch aufpassen, dass man keine
falschen Wörter mit rausnimmt.
Und eine Sache, die man halt auch machen kann, ist, dass man im
Training versucht, möglichst flexibel zu sein, wenn es darum geht, zum
Beispiel sowas wie ein Viterbi-Alignment zu berechnen.
Dass man also für so eine Wortsequenz relativ viele Regeln für
Aussprache -Varianten zulässt.
Dann bekommt man einen relativ komplizierten Graphen.
Mit dem betreibt man dann aber keine Spracherkennung, sondern was man
macht, ist, dass man auf den Trainingsdaten, mit schon relativ gut
trainierten akustischen Modellen, dann ein Forced-Alignment, also ein
Viterbi -Fad, durchberechnet.
Und dann macht man das über alle Trainingsdaten hinweg und guckt,
welche Aussprache-Varianten sehe ich überhaupt in den Trainingsdaten
und welche Aussprache-Varianten sehe ich nicht.
Und dann behält man nur die Aussprache-Varianten zurück, die ich in
den Trainingsdaten behalte.
Und alle anderen Aussprache-Varianten, die man halt mit diesen Regeln
oder woher auch immer so übergeneralisiert hat, die lässt man halt
wegnehmen.
Das kann man, also diese Idee gibt es dann immer wieder, das kann man
teilweise so weit treiben, dass man versucht, komplett unüberwacht zu
lernen, dass man also irgendeine Quelle von menschlicher Sprache
nimmt, Radio, Fernsehen, was auch immer, irgendwas, wo menschliche
Sprache rauskommt.
Das wird in den Erkenner reingestöpselt, der Erkenner kennt irgendwas.
Ich filtre das, was ich meine zuverlässig erkannt zu haben.
Auf den Sachen, auf den Transkriptionen trainiere ich dann mein
akustisches Modell weiter, erkenne weiter, werde hoffentlich mehr
erkennen und so weiter und so fort, sodass man am Ende dahin geht,
dass man sozusagen ein komplett autonom lernendes System hat.
Funktioniert noch nicht so hundertprozentig in der Art und Weise.
Was aber funktioniert ist, dass wenn man schon ein Erkennungssystem
hat, das relativ gut ist und man jetzt neue Daten bekommt, die aus
einer etwas anderen Domäne sind und zum Beispiel schlecht annotiert
sind, dass man dann mithilfe so eines ähnlichen Verfahrens da trotzdem
aus diesen nicht annotierten oder schlecht annotierten Daten dann
brauchbare Trainingsdaten rausfiltern kann, um dann sein
Spracherkennungssystem für diese neue Domäne, auf die ich dann gehen
möchte, zum Beispiel zu adaptieren.
Und was auch erstaunlich gut funktioniert ist, dass man sowas wie
Emotionserkennung mit Aussprachevarianten machen kann.
Das war auch mal ein Experiment, das im Rahmen einer Diplomarbeit
gelaufen ist.
Wenn man sich halt anschaut, wie das Ja ausgesprochen wird, dann kann
man halt sagen, ja, wenn er normal spricht, also ausgeglichen ist,
dann sagt er halt Ja.
Und wenn er deprimiert und traurig ist, sagt er vielleicht Ja.
Und kann man halt so ein paar Sachen für unterschiedliche Aussprachen
mal sich definieren.
Und dann kann man gucken, zwei Dinge.
Erstmal, wie ist überhaupt die Wortfehlerrate auf unterschiedlichen
emotionalen Zuständen.
Und dann sieht man, so auf neutraler Sprache wird eine Wortakkuratheit
von 72 Prozent erreicht.
Und dann geht es, je nachdem welcher emotionale Zustand das ist, geht
es weiter runter bis ganz traurig.
Bei traurig dann noch sowas wie 45 Prozent Wortakkuratheit.
Dann kann man das zum Beispiel als Modalität mit aufnehmen.
Oder man kann halt Aussprachevarianten sammeln und hat dann
unterschiedliche Aussprachewörterbücher für unterschiedliche
Emotionen.
Oder man nimmt halt alles als Aussprachevariante auf und guckt halt
bei der Erkennung, welche Aussprachevariante kommt denn vor.
Und dann macht man damit zum Beispiel eine Emotionserkennung.
Wenn man Emotionserkennung hat, dann macht man sowas wie 60 bis 80
Prozent, kann man die Emotionen korrekt erkennen.
Hängt immer davon ab, welche Kategorie man sich da anschaut.
Und wenn man diese Aussprachevarianten mit rein nimmt und das Ganze
auch noch mit Emotionen als Modalität trainiert, dann sieht man, dass
man damit die Wortakkuratheiten, insbesondere auf den schwierigen
Fällen, da wo es vorher schlecht war, schon deutlich nach oben mit
bewegen kann, nach oben boosten kann.
Und wenn man das alles, was man so betrachtet hat, irgendwie in ein
Ablaufdiagramm einzeichnen möchte, dann kommt man zu diesem Schema zur
Generierung von Aussprachewörterbüchern von Martin Adadeka und Lori
Lammell, die halt da so ein Kochrezept vorgegeben haben.
Und die Idee ist halt, angenommen ich habe eine Liste von Wörtern, für
die möchte ich eine Aussprache generieren.
Dann gucke ich als erstes nach den vorhandenen
Aussprachewörterbüchern.
Die geben mir die kanonische, also die offizielle Lehrmeinung der
Aussprache wieder.
Dann, unter Umständen, muss ich halt auch noch mit regelbasierten
Systemen arbeiten, um neue Aussprachen zu generieren, die noch nicht
im Wörterbuch drin sind.
Gegebenenfalls Lücken manuell füllen.
Und dann habe ich erstmal die Grundaussprachen nach der offiziellen
Lehr - und Regelmeinung.
Dann brauche ich irgendein System, das mir Varianten generiert.
Zum Beispiel Regeln, die durch Menschen definiert wurden.
Ich kann irgendeines der automatischen Verfahren hernehmen, die ich
habe.
Dann kommen die ganzen Ausspracheverianten mit hinzu, unter Umständen
deutlich mehr, als eigentlich hinterher sinnvoll wären.
Und habe dann erstmal ein Wörterbuch, mit dem ich arbeiten kann.
Was ich damit zum Beispiel machen kann, ist, dass ich ein akustisches
Modell trainiere und dann hinterher mir mit Hilfe von Soviterbi
-Alignments anschaue, welche Ausspracheverianten kommen denn überhaupt
vor.
Und dann behalte ich aus diesem großen aufgeblähten Wörterbuch nur
noch die Ausspracheverianten übrig, die ich überhaupt während des
Trainings gesehen habe.
Trainiere damit dann mein akustisches Modell nochmal durch und habe
dann am Ende ein Ausspracheverterbuch, das ich auch hinterher
verwenden kann, um zum Beispiel zu testen.
Das heißt, das ist insofern besonders konservativ bei den
Ausspracheverianten.
Wenn ich eine Ausspracheveriante nicht im Training gesehen habe, dann
kommt sie auch nicht in das Wörterbuch hinterher rein, mit dem ich
testen möchte.
Insbesondere werde ich also Ausspracheverianten auch nur für Wörter
generieren, die ich während des Trainings überhaupt gesehen habe und
alle anderen Wörter, die ich hinterher zwar erkennen möchte, aber die
ich im Training nicht gesehen habe, für die werde ich immer nur die
kanonische, die sozusagen die Standard-Aussprache nehmen.
Was aber auch deshalb Sinn macht, weil das meistens dann sehr selten
vorkommende Wörter sind und das sind dann Wörter, die meistens den
Regeln der kanonischen Aussprache auch folgen, bei denen ich nicht so
häufig Ausspracheverianten sehen werde.
Genau.
So viel dazu erstmal heute.
Nächstes Mal machen wir dann noch ein bisschen mehr zu den
Ausspracheverterbüchern und gehen danach, dann verlassen danach dann
den Bereich des akustischen Modells und gehen dann über und schauen
uns an, wie das Ganze mit dem Sprachmodell überhaupt funktionieren
wird.
Dann also bis Mittwoch.