MaskCue ist mein kostenloser Voice Changer für Windows. Er verändert die eigene Stimme live, während man spricht, und ist für Discord, Streams und Roleplay-Server wie FiveM und RedM gedacht. Dazu gehört ein Soundboard. Die App steht unter der GPL-3.0 und ist auf maskcue.com zu finden, die KI-Stimmen liegen im öffentlichen Repository auf GitHub.
Klassische Effekte wie Tonhöhe, Hall oder Roboterstimme waren schnell gebaut. Schwieriger war die KI-Stimme: Man spricht mit der eigenen Stimme ins Mikrofon, und heraus kommt eine ganz andere Person. In diesem Beitrag geht es um genau diesen Teil und darum, warum Deutsch dabei das eigentliche Problem war.
MaskCue in Aktion: das Promo-Video
Beim Abspielen lädt das Video von YouTube. Dabei gehen Daten an Google. Mehr dazu in der Datenschutzerklärung.
Warum Beatrice 2
Für Echtzeit-Stimmumwandlung gibt es zwei verbreitete Ansätze. RVC klingt gut und trifft die Aussprache sauber, braucht aber eine Grafikkarte. Wer gleichzeitig spielt, hat die Grafikkarte schon voll ausgelastet. Beatrice 2 aus dem Project Beatrice (MIT-Lizenz) läuft dagegen auf dem Prozessor und hat eine sehr kurze Verzögerung.
Für MaskCue habe ich Beatrice 2 in Rust neu umgesetzt, damit die App ohne Python auskommt. In MaskCue liegt die Verzögerung der KI-Stimme bei etwa 75 ms. RVC kam in meinen Tests auf rund 125 ms.
Der Haken: Beatrice 2 ist für Japanisch und Englisch trainiert. Deutsch versteht das Modell nur ungefähr. Umlaute wie ö und ü, das „pf“ in „Apfel“ oder das „qu“ in „bequem“ kamen verwaschen oder falsch heraus. Aus „König“ wurde etwas, das eher nach „Frünich“ klang.
Die Stimme von Thorsten Müller
Eine KI-Stimme braucht Trainingsdaten, und die Rechte daran müssen sauber sein. Thorsten Müller hat mit Thorsten-Voice seine eigene Stimme als freien Datensatz veröffentlicht, unter CC0. Das sind über 10.000 deutsche Sätze, gut 10 Stunden, sauber aufgenommen. Für ein deutsches Stimmmodell gibt es kaum eine bessere Grundlage.
Mit diesen Aufnahmen habe ich Beatrice auf Deutsch trainiert. Startpunkt war das vortrainierte Beatrice-Modell. Trainiert wurde auf einer RTX 3060 Ti mit 8 GB. Ein Durchlauf mit 60.000 Schritten dauert etwa sechseinhalb Stunden.
Inzwischen hat MaskCue zwei KI-Stimmen: Thorsten und eine Frauenstimme. Die Frauenstimme stammt aus gemeinfreien Hörbüchern von LibriVox, knapp 9 Stunden, und wurde nach demselben Rezept trainiert.
Die Laut-Erkennung ist das Nadelöhr
Beatrice besteht aus drei Teilen: einer Laut-Erkennung, einem Tonhöhen-Schätzer und dem Teil, der die neue Stimme erzeugt. Die Laut-Erkennung hört zu und entscheidet, welcher Laut gerade gesprochen wird. Sie war englisch und japanisch geprägt, also habe ich sie auf deutscher Sprache neu trainiert, mit 372 Stunden aus dem Datensatz Multilingual LibriSpeech.
Die erste deutsche Version lernte Buchstaben statt Laute. Dadurch teilten sich verschiedene Laute ein Zeichen: das „ch“ in „ich“ und in „ach“ zum Beispiel, oder das „s“ in „Soße“ und in „Fuß“. Die nächste Version lernte deshalb deutsche Lautschrift, erzeugt mit eSpeak NG, mit 60 Lauten aus über 213.000 Sätzen. Das Ergebnis wurde etwas besser, aber nicht so viel wie erhofft.
Eine zweite Idee war ein Blick in die Zukunft. Die Laut-Erkennung von Beatrice sieht nur die Vergangenheit. Ich habe ihr 30 ms Vorlauf gegeben: Sie hört ein kleines Stück weiter, bevor sie entscheidet. Das kostet genau diese 30 ms Verzögerung. Mit 80 ms habe ich es auch versucht. Messbar war das kaum besser, hörbar gar nicht, also bin ich bei 30 ms geblieben.
Wie misst man Aussprache?
Am Anfang habe ich die Ausgabe mit Whisper prüfen lassen. Das war ein Fehler. Whisper ergänzt Wörter aus dem Satzzusammenhang und versteckt damit genau die Lautfehler, die ich finden wollte.
Besser funktionierte ein deutsches Spracherkennungsmodell (wav2vec2), das ohne Textvorgabe und ohne Sprachmodell aufschreibt, was es hört. Gezählt werden falsche Buchstaben. Als Testmaterial habe ich 48 Wörter mit schweren Lauten eingesprochen, dazu 15 Sätze.
Ich selbst komme dabei auf 5 % Fehler bei Einzelwörtern und 3 % bei Sätzen. Das beste Thorsten-Modell liegt bei 26 % für Wörter und 10 % für Sätze. In ganzen Sätzen ist Thorsten also gut zu verstehen. Einzelne Wörter ohne Zusammenhang bleiben schwierig.
Die Zahlen sind trotzdem nur ein Hilfsmittel. Bei 48 Wörtern zählt ein Wort etwa zwei Prozentpunkte, kleine Unterschiede können Zufall sein. Entschieden habe ich am Ende mit den Ohren, in Hörvergleichen.
Was nicht geholfen hat
Ein großer Teil der Arbeit waren Versuche, die nichts gebracht haben:
- länger trainieren: Über 60.000 Schritte hinaus wurde das Modell schlechter
- zwei Stunden Zusatztraining nur mit Sätzen voller Problemlaute: Der Klang wurde besser, die Aussprache nicht
- Sätze an Wortgrenzen zerschneiden und Pausen einfügen
- größere Codebücher und andere Gewichtungen im Training
- ein Klang-Equalizer vor der KI
Geholfen hat dagegen eine Kleinigkeit im Ablauf. Rauschunterdrückung und Noise Gate liefen zuerst vor der KI und schnitten dabei leise Wortanfänge ab. Seit sie hinter der KI laufen, sind die Fehler bei der Wortliste von 48 % auf 38 % gefallen, ohne neues Training.
Die Grenze
Ein paar Laute bleiben bei allen Modellen gleich falsch: ö und ü, „qu“, „pf“, das „r“ am Wortanfang und das stimmhafte „s“ wie in „Soße“. Aus „Pferd“ wird „Färt“, aus „Soße“ eher „Jose“. Daran hat keine Stellschraube etwas geändert.
Die Ursache liegt sehr wahrscheinlich in der Laut-Erkennung selbst. Sie ist klein, damit sie live auf dem Prozessor läuft, und sie verliert Information, bevor die neue Stimme überhaupt erzeugt wird. RVC nutzt eine viel größere Laut-Erkennung und braucht dafür eben die Grafikkarte.
Trotzdem habe ich mich für Beatrice entschieden und RVC wieder aus der App genommen. RVC machte zwar weniger Aussprachefehler, klang in meinem Test aber nicht gut genug und hätte jedem Spieler die Grafikkarte weggenommen. Für Discord und Roleplay, wo in ganzen Sätzen gesprochen wird, reicht Thorsten in seiner jetzigen Form.
MaskCue ausprobieren
MaskCue ist kostenlos und läuft unter Windows. Die App gibt es auf maskcue.com, die KI-Stimmen auf GitHub. Die KI-Stimmen lädt die App beim ersten Einsatz nach.
Wer selbst mit Beatrice und deutscher Sprache arbeitet: Ich plane, die Trainingsskripte und Messwerkzeuge zu veröffentlichen. Rückmeldungen, vor allem zu den schwierigen Lauten, nehme ich gerne entgegen.