Log in to leave a comment
No posts yet
On soupire souvent en consultant les factures mensuelles d'ElevenLabs ou d'OpenAI pour le TTS. Pour un développeur de jeux indépendants, les coûts d'appel API représentent une dépense fixe qui étouffe le projet. Kokoro 82M est un modèle open-source sous licence Apache 2.0 qui produit une voix de qualité commerciale dans un environnement local. En installant ce modèle léger de 82 millions de paramètres sur votre PC, vous n'avez plus à subir les changements de politique des serveurs externes.
L'inquiétude majeure lors de l'exécution d'un modèle local est la chute du nombre d'images par seconde (FPS) dans le jeu. Pour éviter la charge CPU générée lors de la synthèse vocale, il faut contrôler strictement les threads de calcul. Kokoro 82M suit la structure StyleTTS 2 et s'avère extrêmement efficace lorsqu'il est piloté par l'exécution ONNX.
SessionOptions d'ONNX, limitez intra_op_num_threads à moins de la moitié du total de vos cœurs. Pour un processeur 8 cœurs, en allouer 2 à 4 est suffisant.enable_cpu_mem_arena pour éviter la fragmentation de la mémoire. Cela permet d'éliminer les micro-lags qui surviennent lors de la génération audio en arrière-plan.asyncio pour envoyer les premières données vers le périphérique audio dès qu'elles sont disponibles.Grâce à cette configuration, vous pouvez abaisser le temps de réponse initial (TTFA) en dessous de 0,5 seconde.
Même si Kokoro 82M est excellent, s'il lit « API » comme « api » ou s'il ne traite pas correctement « 10% », l'immersion est brisée. Ce modèle ayant été entraîné sur la base de l'Alphabet Phonétique International (IPA), le processus de normalisation du texte d'entrée est indispensable.
Ne vous contentez pas d'insérer du texte brut ; créez un dictionnaire de mappage par expressions régulières. r'\bAPI\b' doit être transmis comme « 에이피아이 », et les nombres doivent être transcrits en coréen selon le contexte, comme « 한 개 » ou « 일 퍼센트 ». Les règles de liaison propres au coréen peuvent être résolues en utilisant une bibliothèque complémentaire comme korean-text-normalizer. Vous pouvez ainsi économiser 5 heures par semaine auparavant consacrées à l'édition manuelle des fichiers audio.
Il n'est pas nécessaire de modifier tout votre code utilisant le SDK OpenAI. En lançant un serveur léger avec FastAPI sur localhost, vous remplacez l'API payante en modifiant simplement une ligne d'adresse de point de terminaison (endpoint).
/v1/audio/speech conçu pour recevoir des données JSON au format OpenAI.INT8 de 92,4 Mo. La vitesse d'inférence est plus de 3 fois supérieure à celle du modèle standard, alors que la différence de qualité sonore à l'oreille est infime.pydub pour les renvoyer instantanément en format .mp3 ou .wav.De cette manière, vous conservez votre base de code qui dépendait des services payants tout en supprimant proprement les frais d'abonnement mensuels.
Les modèles légers ont pour limite une prononciation qui s'emmêle ou l'apparition de bruits mécaniques en fin de phrase lorsqu'ils traitent des segments longs de plus de 500 caractères. Pour résoudre ce problème, il faut segmenter intelligemment les phrases.
Divisez le texte en vous basant sur les points et les virgules, puis utilisez AudioSegment.silent pour insérer de force un silence de 200 à 500 ms entre les phrases. Le simple fait de simuler le cycle respiratoire humain fait disparaître le côté artificiel du modèle. L'essentiel n'est pas seulement de diviser le texte, mais d'utiliser une logique de lecture fluide (seamless) qui relie naturellement les morceaux d'audio. En automatisant ce processus, même les dialogues longs deviennent fluides et naturels.