Der offensichtliche Weg zu Aussprache-Feedback: den Lernenden aufnehmen, das Audio an eine Speech-Assessment-API schicken und pro Minute für einen Score bezahlen. Ich habe das Feature ohne all das gebaut. Jeder annotierte deutsche Satz in meinem Übersetzungstutor hat jetzt einen Übungs-Button: Der Browser hört zu, während du den Satz sprichst, und jedes Wort wird als getroffen, fast oder gefehlt markiert, dazu eine Prozentzahl.
Der Trick ist, ehrlich zu benennen, was das Feature wirklich braucht. Ich brauche keine Akustik auf Phonem-Ebene. Ich muss einem Lernenden sagen, welches Wort er verschluckt, verbogen oder getroffen hat — und das leistet ein Recognizer plus ein Diff bereits:
Der Browser erkennt. Die Web Speech API transkribiert den Versuch im Deutsch-Modus. Chrome leitet das Audio über Googles Server, Safari verarbeitet es auf dem Gerät — beides steht direkt daneben, und keins von beidem berührt meinen Server oder mein Portemonnaie.
Ein Diff-Algorithmus benotet. Erwarteter Satz und Transkript werden normalisiert (Kleinschreibung, Interpunktion raus, Umlaute gefaltet, sodass „schoen" gleich „schön" ist) und mit Needleman–Wunsch aligniert — demselben Dynamic-Programming-Alignment, mit dem Biologen Gensequenzen vergleichen — mit Levenshtein-Ähnlichkeit pro Wort als Substitutionskosten. Ein Wort passt sauber: getroffen. Es passt auf etwas Ähnliches („Hunt" statt „Hund"): fast — meistens hat der Recognizer da ein echtes Ausspracheproblem gehört. Es passt auf nichts: gefehlt. Füllwörter kosten keine Punkte.
Der Score ist ehrlich über seine Grenze. STT normalisiert einen Teil dessen weg, was ein Phonetik-Coach hören würde; das ist der Preis für 0,00 €. Der Bewerter erwischt verschluckte Artikel, falsche Wortstellung und die Wörter, die der Recognizer nicht in das Gemeinte auflösen konnte — und das ist für jemanden, der Sätze drillt, der Großteil des Feedbacks, das zählt.
Alles ist deterministisch und läuft im Client. Die Tests sind simple Unit-Tests, das Feature braucht fast kein Netz, und die Datenschutz-Geschichte ist einen Satz lang. Meine Analytics sehen nur einen Score-Bucket mit vier möglichen Werten.
Die übertragbare Lektion: „Wir brauchen einen KI-Bewerter" zerfällt oft in „wir brauchen einen Recognizer, den wir schon haben, plus einen Alignment-Algorithmus von 1970". Gib das Modell-Budget dort aus, wo nur ein Modell es kann — die Bewertungsschleife hier hat exakt null Tokens gebraucht.