Log in to leave a comment
No posts yet
Ein Blick auf die monatlichen Rechnungen von ElevenLabs oder OpenAI für TTS lässt einen oft tief durchatmen. Für Indie-Game-Entwickler sind API-Aufrufkosten fixe Ausgaben, die dem Projekt die Luft zum Atmen nehmen können. Kokoro 82M ist ein Open-Source-Modell unter der Apache 2.0-Lizenz, das in einer lokalen Umgebung Stimmen auf kommerziellem Niveau erzeugt. Wenn Sie dieses leichtgewichtige Modell mit 82 Millionen Parametern auf Ihrem eigenen PC hosten, sind Sie nicht mehr von den Richtlinienänderungen externer Server abhängig.
Die größte Sorge beim Betrieb lokaler Modelle ist das Ruckeln der Framerate im Spiel. Um die CPU-Last bei der Sprachsynthese zu vermeiden, muss die Steuerung der Rechen-Threads erzwungen werden. Da Kokoro 82M der StyleTTS 2-Struktur folgt, arbeitet es am effizientesten, wenn es mit der ONNX-Runtime betrieben wird.
SessionOptions von ONNX den Wert für intra_op_num_threads auf weniger als die Hälfte der gesamten Kerne. Bei einer 8-Kern-CPU reicht die Zuweisung von 2 bis 4 Kernen völlig aus.enable_cpu_mem_arena ein, um Speicherfragmentierung zu verhindern. Dies eliminiert minimale Verzögerungen, die auftreten, wenn Audio im Hintergrund generiert wird.asyncio-Queue, um das Audio-Gerät sofort zu füttern, sobald der erste Datenblock verfügbar ist.Mit diesen Einstellungen lässt sich die Zeit bis zur ersten Sprachausgabe (TTFA) auf unter 0,5 Sekunden senken.
Egal wie gut Kokoro 82M ist – wenn es "API" als "Api" liest oder "10%" nicht korrekt verarbeitet, geht die Immersion verloren. Da dieses Modell auf dem Internationalen Phonetischen Alphabet (IPA) basiert, ist ein Prozess zur Textnormalisierung unerlässlich.
Füttern Sie den Text nicht einfach ein, sondern erstellen Sie ein Mapping-Dictionary mit regulären Ausdrücken. r'\bAPI\b' sollte als "A-P-I" und Zahlen sollten kontextabhängig ausgeschrieben übergeben werden (z. B. "ein Stück" oder "zehn Prozent"). Speziell für koreanische Besonderheiten hilft die Verwendung von Bibliotheken wie korean-text-normalizer. Allein durch die Automatisierung dieses Schritts können Sie pro Woche etwa 5 Stunden manuelle Bearbeitungszeit sparen.
Sie müssen Ihren vorhandenen OpenAI SDK-Code nicht komplett umschreiben. Wenn Sie einen leichtgewichtigen Server mit FastAPI auf dem Localhost aufsetzen, können Sie die kostenpflichtige API durch das Ändern einer einzigen Endpoint-URL ersetzen.
/v1/audio/speech und designen Sie ihn so, dass er JSON-Daten im OpenAI-Standardformat empfängt.INT8-quantisierte Modell. Die Inferenzgeschwindigkeit ist mehr als dreimal schneller als beim Standardmodell, während der hörbare Qualitätsunterschied minimal bleibt.pydub und geben Sie diese sofort als .mp3 oder .wav zurück.Auf diese Weise behalten Sie die Codebasis bei, die zuvor von kostenpflichtigen Diensten abhängig war, und eliminieren lediglich die monatlichen Abogebühren.
Leichtgewichtige Modelle stoßen an ihre Grenzen, wenn sie lange Sätze von über 500 Zeichen auf einmal verarbeiten; die Aussprache am Ende kann undeutlich werden oder es mischen sich mechanische Geräusche unter. Um dies zu lösen, müssen Sätze intelligent unterteilt werden.
Teilen Sie Sätze basierend auf Punkten und Kommas auf und fügen Sie mit AudioSegment.silent zwangsweise Pausen von 200 bis 500 ms zwischen den Sätzen ein. Allein durch die Simulation des menschlichen Atemrhythmus verschwindet die Künstlichkeit des Modells. Der Schlüssel liegt nicht nur im Teilen des Textes, sondern in einer nahtlosen Wiedergabelogik, die die Audiostücke natürlich aneinanderfügt. Wenn dieser Prozess automatisiert wird, ist selbst bei langen Dialogen eine natürliche schauspielerische Leistung ohne Unterbrechungen möglich.