Inflect v2 : TTS local texte-vers-forme d'onde à 3,96 M et 9,36 M de paramètres
Inflect v2 offre un TTS anglais complet à 24 kHz dans deux modèles compacts (3,96 M et 9,36 M de paramètres) sans vocodeur externe. Explorez l'architecture, l'évaluation et le déploiement sur CPU.
Inflect v2 : TTS local texte-vers-forme d'onde à 3,96 M et 9,36 M de paramètres
La synthèse vocale a longtemps été dominée par des API cloud et des modèles lourds nécessitant des clusters de GPU. Mais que diriez-vous de pouvoir exécuter un système TTS complet et naturel entièrement sur un CPU, avec une empreinte suffisamment petite pour être intégrée dans n'importe quelle application ? C'est exactement ce que propose Inflect v2.
Inflect v2 est un modèle open-weight de synthèse texte-vers-forme d'onde de bout en bout qui génère de la parole anglaise mono à 24 kHz à partir de texte brut. Il est disponible en deux variantes : Inflect-Micro-v2 (9 356 513 paramètres, 37,53 Mo FP32) et Inflect-Nano-v2 (3 966 721 paramètres, 15,97 Mo FP32). Les deux partagent la même API Python et la même interface en ligne de commande, vous pouvez donc passer de l'un à l'autre sans modifier votre code.
Pourquoi Inflect v2 est important
La plupart des systèmes TTS modernes reposent sur un vocodeur séparé (comme HiFi-GAN) pour convertir les spectrogrammes mel en formes d'onde. Inflect v2 intègre directement le décodeur de forme d'onde dans le modèle, éliminant ainsi le besoin d'un vocodeur externe ou de tout composant d'inférence hébergé. Cela signifie :
- Vraie inférence locale — pas d'appels cloud, pas de latence, pas de problèmes de confidentialité.
- Dépendances minimales — juste PyTorch (ou ONNX Runtime) et quelques bibliothèques standard.
- Sortie déterministe — les graines contrôlent la génération, ce qui la rend reproductible pour les tests et l'évaluation.
Pour les développeurs créant des assistants vocaux, des outils d'accessibilité ou des applications de périphérie, c'est un changement de jeu. Vous pouvez livrer un pipeline TTS complet en moins de 40 Mo de poids.
Architecture : un générateur compact de la famille VITS
Inflect v2 suit l'architecture de la famille VITS (Variational Inference with adversarial Training for end-to-end Text-to-Speech), mais avec un accent sur l'efficacité. Le chemin de synthèse comprend :
- Normalisation anglaise et frontend phonémique — convertit le texte brut en phonèmes.
- Encodeur de texte Transformer — encode la séquence de phonèmes.
- Prédicteur de durée stochastique — prédit les durées des phonèmes avec contrôle de variation.
- Alignement monotone — aligne le texte sur les représentations latentes de la parole.
- Génération de parole à variables latentes — génère une séquence de parole latente.
- Flux de couplage résiduel — affine la représentation latente.
- Décodeur 24 kHz à alias réduit — produit directement la forme d'onde finale.
Micro alloue plus de capacité aux largeurs cachées et du décodeur, tandis que Nano préserve le même contrat de déploiement avec un réseau plus étroit. Les deux modèles produisent une voix masculine anglaise fixe, avec des graines déterministes, une vitesse de parole et des contrôles de variation de livraison.
Évaluation : qualité et empreinte, mesurées séparément
Inflect v2 rapporte des métriques qui répondent à différentes questions, plutôt que de les regrouper en un seul score. Voici les données principales :
| Modèle | Préférence communautaire ↑ | UTMOS22 ↑ | WER sémantique double-ASR ↓ | Poids FP32 ↓ |
|---|---|---|---|---|
| Inflect-Micro-v2 | 66,2 % | 4,395 | 3,99 % | 37,53 Mo |
| Inflect-Nano-v2 | 63,9 % | 4,386 | 4,21 % | 15,97 Mo |
- Préférence communautaire provient d'écoutes comparatives randomisées anonymes, normalisées par les apparitions des modèles, avec les égalités comptant comme une demi-victoire. C'est une preuve descriptive, pas un MOS formel.
- UTMOS22 est un prédicteur de qualité appris, évalué sur 500 invites inédites appariées par voix.
- WER sémantique est la moyenne au niveau du corpus à poids égal de Qwen3-ASR et Nemotron 3.5 sur 400 invites inédites appariées. Whisper large-v3 est exclu du titre en raison de défaillances lourdes d'insertion sur une partie de l'ensemble de comparaison.
Profil de déploiement CPU
Sur une référence gérée Hugging Face CPU Upgrade (8 vCPU, 32 Go de RAM) avec quatre threads de framework, 100 invites fixes Modern400 et trois passes (en excluant la première passe de construction du cache), Inflect a mesuré :
- Micro : RTF 0,1593 (6,28x temps réel)
- Nano : RTF 0,0933 (10,72x temps réel)
Cela signifie que Nano peut synthétiser une phrase de 10 secondes en moins d'une seconde sur un CPU typique — impressionnant pour un modèle entièrement local.
Pour commencer : exécutez-le localement
Cloner le dépôt et exécuter votre première synthèse est simple :
git clone https://github.com/owenawsong/Inflect.git
cd Inflect
python -m pip install -r requirements.txt
python examples/download_and_speak.py \
--model micro \
--text "Une voix locale complète peut tenir presque n'importe où." \
--output inflect.wav
La première exécution télécharge et met en cache le modèle sélectionné depuis Hugging Face. Passez de --model micro à --model nano sans changer l'interface.
Vous pouvez également rendre les deux modèles avec la même invite et la même graine pour comparaison :
python examples/compare_models.py \
--text "La même phrase, rendue par les deux modèles Inflect." \
--output-dir comparison
Utilisation de l'API Python
Depuis un dépôt de modèle, vous pouvez utiliser la classe InflectTTS directement :
from inference import InflectTTS
tts = InflectTTS(".", device="cpu")
sample_rate, waveform = tts.synthesize(
"Le modèle renvoie une forme d'onde complète.",
speed=1.0,
variation=0.667,
seed=7,
)
tts.save("Le même runtime peut écrire un WAV directement.", "sample.wav", seed=7)
Les entrées longues sont divisées aux limites sensibles à la ponctuation, synthétisées morceau par morceau, et jointes avec des pauses contrôlées. Cela limite l'utilisation de la mémoire ; ce n'est pas une passe planifiée globalement ou un streaming acoustique.
Portée et limites
Inflect v2 est une version open-weight, mais il est important de savoir ce qu'il fait et ne fait pas.
Pris en charge :
- Inférence locale PyTorch FP32 sur CPU et CUDA
- Inférence ONNX Runtime pour les packages ONNX publiés
- Une voix masculine anglaise fixe par modèle
- Graines déterministes, vitesse de parole et variation de livraison
- Découpage de texte long sensible à la ponctuation
- Génération complète de forme d'onde via l'API Python et la CLI
Non revendiqué :
- Clonage de voix, locuteurs sélectionnables, voix féminines ou parole multilingue
- Streaming acoustique ou temps mesuré jusqu'au premier audio
- Exports GGUF, Core ML, TFLite, FP16 ou quantifiés en entiers
- Utilisation pour la communication médicale, légale, d'urgence ou critique pour l'accessibilité
Documentation et communauté
Le dépôt comprend une documentation complète : un guide de déploiement, une méthodologie d'évaluation, des détails d'architecture, un rapport technique et un guide pour l'adaptation linguistique et à voix fixe (y compris la préparation des données, l'entraînement et l'exportation).
Inflect v2 est sous licence Apache-2.0, avec des composants tiers inclus conservant leurs propres avis. Il a été conçu et développé indépendamment par Owen Song, et la communauté peut rejoindre via le Discord Inflect.
Réflexions finales
Inflect v2 prouve qu'un TTS de haute qualité ne nécessite pas de modèles massifs ni d'infrastructure cloud. Avec 3,96 M de paramètres et un débit CPU 10,72x temps réel, c'est un excellent choix pour les développeurs qui souhaitent intégrer une parole naturelle dans leurs applications sans sacrifier les performances ou la confidentialité.
Que vous construisiez un assistant vocal, un outil d'accessibilité ou que vous expérimentiez simplement avec le TTS moderne, Inflect v2 vaut la peine d'être essayé. Clonez le dépôt, exécutez les exemples et écoutez par vous-même ce qu'un modèle compact peut faire.