Ich habe ein mit 9M Parametern trainiertes Modell gebaut, um chinesische Töne zu korrigieren
(simedw.com)- Um das Üben chinesischer Aussprache und Töne zu unterstützen, wurde ein CTC-basiertes Sprachmodell mit 9M Parametern selbst entwickelt und mit rund 300 Stunden Sprachdaten trainiert
- Es verwendet eine Conformer-Encoder-Struktur, um sowohl lokale Sprachmerkmale als auch globalen Kontext zu erfassen, und kann durch Tokenisierung in Pinyin+Ton-Einheiten Aussprachefehler klar unterscheiden
- Mit CTC-Loss wird auf Frame-Ebene bewertet, was der Nutzer tatsächlich ausgesprochen hat, und mit dem Viterbi-Algorithmus eine zeitliche Ausrichtung durchgeführt
- Selbst nach der Verkleinerung des Modells von 75M auf 9M gab es kaum Genauigkeitsverlust; nach INT8-Quantisierung ist es mit etwa 11 MB sogar direkt im Webbrowser ausführbar
- Die browserbasierte Demo zeigt das Potenzial eines On-Device-Systems zur Aussprachekorrektur, wobei eine Verbesserung der Datenqualität der Schlüssel für weitere Leistungssteigerungen ist
Überblick über das Modell zur Aussprachebewertung
- Um die Schwierigkeiten beim Lernen der chinesischen Aussprache zu lösen, wurde ein kompaktes Sprachmodell zum Bewerten der Aussprache selbst trainiert
- Verwendet wurden etwa 300 Stunden transkribierter Sprachdaten (AISHELL-1, Primewords)
- Bereitgestellt in einer Form, die direkt im Browser ausgeführt werden kann
- Bestehende Pitch-Visualisierungsmethoden erwiesen sich wegen Rauschen und Unterschieden in der Sprechweise als instabil; ein datenbasierter Ansatz war effektiver
- Ziel war die Umsetzung eines On-Device Computer-Assisted Pronunciation Training (CAPT)-Systems ohne kommerzielle API
Modellarchitektur und Trainingsverfahren
- Verwendet wird eine Struktur aus Conformer-Encoder + CTC-Loss
- CNN erfasst akustische Merkmale in kurzen Zeitfenstern (z. B. zh vs z)
- Transformer verarbeitet kontextuelle Tonmuster (z. B. tone sandhi)
- Das CTC-Verfahren gibt Wahrscheinlichkeitsverteilungen pro Frame aus und bewertet so direkt die tatsächlich ausgesprochenen Phoneme
- Das ``-Token wird genutzt, um Wiederholungen und Leerstellen auszurichten
- Ohne automatische Korrektur wird genau das wiedergegeben, was tatsächlich ausgesprochen wurde
Tokenisierung und Alignment
- Pinyin+Ton-Kombinationen werden als einzelnes Token definiert
- Beispiel:
zhong1undzhong4sind unterschiedliche Tokens - Der neutrale Ton wird einheitlich als Ton 5 (
ma5) behandelt - Insgesamt 1.254 Tokens +
,
- Beispiel:
- Mit dem Viterbi-Algorithmus wird der optimale Pfad zwischen Sprach-Frames und Tokens berechnet
- Beispiel: Bei der Aussprache von „Nǐ hǎo“ werden die Bereiche für
ni3undhao3getrennt
- Beispiel: Bei der Aussprache von „Nǐ hǎo“ werden die Bereiche für
Modellverkleinerung und Leistung
- Das ursprüngliche Modell mit 75M Parametern wurde auf 9M verkleinert
- 75M: TER 4,83 %, Tone Accuracy 98,47 %
- 9M: TER 5,27 %, Tone Accuracy 98,29 %
- Der Genauigkeitsverlust war minimal, was darauf hindeutet, dass es sich um eine datengebundene (data-bound) Aufgabe handelt
- Das FP32-Modell (37 MB) wurde per INT8-Quantisierung auf 11 MB reduziert
- Über
onnxruntime-webkann es direkt im Browser geladen werden
- Über
Alignment-Fehler und Korrekturen
- Stille Abschnitte verzerrten die Aussprachebewertung
- Beispiel: Vor der Aussprache von „我喜欢…“ wurde 1 Sekunde Stille fälschlich
wo3zugeordnet, was zu 0 Punkten führte
- Beispiel: Vor der Aussprache von „我喜欢…“ wurde 1 Sekunde Stille fälschlich
- Lösung: Stille Frames bei der Punktberechnung ausschließen
- Frames mit einer ``-Wahrscheinlichkeit von 0,7 oder höher werden herausgefiltert
- Nach der Korrektur verbesserte sich der Konfidenzwert der ersten Silbe von 0,0 auf 0,99
Ergebnisse und Grenzen
- Im Betatest war ein Effekt der Aussprachekorrektur spürbar
- Das Modell bewertet sehr streng
- Bei Muttersprachlern und Kinderstimmen sinkt die Genauigkeit
- Die AISHELL-Daten bestehen überwiegend aus vorgelesener Sprache, daher gibt es Unterschiede bei Tempo und Intonation
- Künftig müssen gesprochensprachliche Daten wie Common Voice ergänzt werden
- Die Web-Demo ist etwa 13 MB groß und bietet eine vollständige Aussprachekorrektur bei einer Dateigröße, die kleiner ist als die der meisten Websites
1 Kommentare
Hacker-News-Kommentare
Vielen Dank für dieses wirklich tolle Projekt
Allerdings war es seltsam, dass im Satz „我想学中文“ „wén“ als „guó“ erkannt wurde
Das wirkt so, als hätte das Modell eher Wortstrukturen als Töne gelernt. Vermutlich ist dieser Bias entstanden, weil „Zhōng guó“ in den Trainingsdaten häufig vorkam
Wie im Blogbeitrag beschrieben, scheint es kein Modell zu sein, das meine tatsächlich ausgesprochene Aussprache mitteilt, sondern eine Struktur, die aus 1254 möglichen Silben die nächstliegende zuordnet
Trotzdem gefällt mir dieser sprachzentrierte Lernansatz. Schriftbasierte Lernmethoden sind verwirrend, weil sich die Schreibweisen je nach Land unterscheiden. Für Anfänger hat selbst Pinyin viele verwirrende Zeichen
Die Idee und die UI wirkten intuitiv und waren beeindruckend
Aber selbst ich als jemand aus Peking, der Standardchinesisch perfekt beherrscht, hatte Schwierigkeiten, einfache Aufgaben zu bestehen
Im Beispiel „你好吃饭了吗“ war die Tonerkennung falsch, und „了“ müsste im Kontext „le“ statt „liǎo“ sein
Viele machen sich Sorgen über Töne, aber in der Praxis ist die Kommunikation oft trotzdem möglich, auch wenn die Töne nicht perfekt sind
Da sich die Intonation regional unterscheidet, verstehen sich die Leute meist auch dann gut, wenn sich Töne mischen. Statt sich zu sehr auf Töne zu fixieren, würde ich kontextorientiertes Lernen empfehlen
Dass Menschen trotz regionaler Dialekte miteinander kommunizieren können, liegt daran, dass 1) sich die Tonunterschiede zwischen benachbarten Regionen nicht stark unterscheiden und 2) man, wenn man sich nicht versteht, auf Standardchinesisch (Putonghua) umschaltet
Dass Chinesisch überhaupt existiert, verdankt sich dem Tonsystem. Wenn die Töne falsch sind, ist Kommunikation fast unmöglich
Ein Grund dafür, dass in China schriftzentriert kommuniziert wird, ist allerdings auch, dass sich Aussprache und Töne je nach Region unterscheiden und nur über Sprache oft keine Verständigung möglich ist
Lernende dazu zu motivieren, Töne zu ignorieren, ist riskant. Wenn Töne wirklich unwichtig wären, wären sie längst verschwunden
Wenn der Kontext eng ist, führt das zu Verwirrung, daher bleiben Töne zentral. Außerdem braucht es mehr Datenanreicherung, etwa weil „吃“ als „shi2“ erkannt wird
Als fortgeschrittener Lernender habe ich extra einen Account erstellt, um Feedback zu hinterlassen
Wenn man schnell spricht, klappt das Phonem-Tracking nicht gut und die Tonerkennung liegt daneben
Wenn ich zum Beispiel „他是我的朋友“ in natürlichem Tempo spreche, wird „我“ als „de“ erkannt oder „是“ als „si“ verarbeitet
Wenn ich langsam und deutlich spreche, wird es korrekt erkannt
Auch Phänomene wie aufeinanderfolgende Tonveränderungen des dritten Tons (Tone Sandhi) sollten berücksichtigt werden. Es braucht eine Funktion, die Aussprache in natürlicher Konversation verarbeitet
Für Sprecher europäischer Sprachen ist es sehr schwer, Chinesisch oder andere Tonsprachen zu lernen
Das Gehör ist nicht an Töne gewöhnt, daher denkt man selbst, man spreche richtig, während Muttersprachler einen nicht verstehen
Im Englischen unterscheiden sich die Vokale regional, und Unterschiede wie bei „done vs down“ oder „beat vs bit“ sind schwer zu erkennen
Spanisch war dagegen wegen seines einfachen Vokalsystems viel leichter zu lernen
Als ich den japanischen Pitch Accent gelernt habe, hörte ich anfangs überhaupt keinen Unterschied, aber durch wiederholtes Training fing ich allmählich an, ihn zu hören
Als mir klar wurde, dass es auch im Englischen Tonmuster gibt, etwa bei „uh-oh“, bekam ich ein Gefühl dafür
Besonders problematisch ist die Gewohnheit, mit englischartiger Intonation Unsicherheit auszudrücken
Töne und Grammatik sind Grundlagen, die man am Anfang lernt; in den folgenden Jahren fließt der Großteil der Anstrengung in das Memorieren von Wörtern
Die eigentliche Schwierigkeit des Chinesischen sind der Mangel an gemeinsamem Wortschatz und das nicht-phonemische Schriftsystem
Es funktioniert gut, wenn man nur einzelne Wörter spricht, aber auf Satzebene oder in natürlichem Tempo gibt es viele Fehlklassifikationen
Ich bin Muttersprachler mit einem Standardchinesisch-Zertifikat der Stufe 2A, aber selbst bei lockerer Aussprache treten Fehler auf
Das Modell kann den Unterschied zwischen Alltagssprache und formeller Aussprache nicht erkennen
Als ich in Taiwan studiert habe, habe ich zum Einprägen der Töne mit der Hand Tonkurven in die Luft gezeichnet
Das sah wohl wie ein verrückter Ausländer aus, war aber eindeutig wirksam
Da regionale Akzentunterschiede groß sind, wäre es gut, Referenzdaten nach Muttersprachlern zu sammeln
Ich bereue, ihn damals nicht nachgeahmt zu haben
Ich bin Muttersprachler, aber die Demo konnte meine Aussprache nicht erkennen
Wahrscheinlich lag es an den Hintergrundgeräuschen. Neben mir schaute meine Tochter gerade Zeichentrick
Wirklich ein tolles Projekt, aber ich würde raten, sich nicht zu sehr auf externes Feedback zu verlassen
Der Kern der Aussprachekorrektur ist Hörtraining. Auch erwachsene Lernende haben noch Neuroplastizität, daher sollte man das Gehör mit Minimalpaar-Übungen und Ähnlichem trainieren
Dadurch verbessern sich nicht nur die Aussprache, sondern auch Hörverständnis und die Geschwindigkeit beim Wortschatzerwerb deutlich
Im Vergleich zu SST war Text-Audio-Synchronisierung (im Karaoke-Stil) viel effektiver
Dass Nutzer ihre eigene Stimme über das Original legen und Unterschiede selbst erkennen, war für das Lernen sehr nützlich
Statt sich die Töne jedes Wortes einzeln einzuprägen, ist es viel natürlicher, die Aussprache von Muttersprachlern direkt nachzuahmen
Beeindruckend ist, dass alles mit ONNX Runtime Web vollständig im Browser läuft
Der Ansatz, durch Forced Alignment Bedeutungsraten auszuschließen und nur das Tonproblem zu isolieren, ist klug
In künftigen Versionen wäre es noch nützlicher für Sprechtempo-Übungen, wenn Tonveränderungen (sandhi) als Nachverarbeitungsschritt hinzukämen
Ich hätte gern einen Pinyin-Modus. Ich lerne nur das Sprechen und nicht das Lesen von Schriftzeichen
Mit meiner Flashcard-Web-App organisiere ich gerade meinen Wortschatz