Le nom « Tiny » laisse penser qu’il s’agit du choix évident pour une installation locale. Avec Ming-3.0-TTS, c’est plutôt l’inverse : commencez par le checkpoint dense 0.5B, et ne retenez Tiny que si la génération de podcasts avec plusieurs locuteurs est indispensable. Reste une inconnue importante : InclusionAI documente ses tests sur H800 et H20, sans préciser de configuration GPU grand public minimale.
Choisir son checkpoint avant de créer l’environnement
Ming-3.0-TTS propose deux checkpoints reposant sur des architectures, des dépendances et des points d’entrée distincts. Le modèle 0.5B constitue le choix le plus raisonnable pour débuter. Tiny justifie son encombrement supérieur lorsque la similarité vocale ou les dialogues à plusieurs intervenants priment sur la simplicité de déploiement.
| Critère de choix | Ming-3.0-tts-0.5B | Ming-3.0-tts-tiny |
|---|---|---|
| Architecture | Backbone dense Qwen2.5-0.5B | Ling V3 MoE, 7.9B au total / 1.3B actifs |
| Classe API officielle | ming_tts.MingTTS | ming_tiny.MingTinyTTS |
| CLI principal | infer.py | infer_tiny.py et scripts en un clic |
| Environnement de référence | PyTorch 2.6, CUDA 12.4 | Python 3.10.15, PyTorch 2.7.1+cu118 |
| Matériel documenté | H800-80GB et H20-96G testés | H800 recommandé |
| Raison spécifique de le choisir | Checkpoint dense plus compact ; meilleure précision en coréen et pour les contrôles de base dans les tests de l’éditeur | Mode podcast multi-locuteurs ; meilleure similarité vocale en chinois et en anglais dans les tests de l’éditeur |
| Empreinte publiée du checkpoint | Environ 2.96 GB, d’après la comparaison de fichiers rapportée par OrcaRouter | Environ 18 GB sur Hugging Face |
Les deux checkpoints produisent un audio à 44.1 kHz, prennent en charge sept langues et séparent leurs modes de tâche pour le clonage vocal, la création de voix, l’émotion, les dialectes et les autres contrôles. Le dépôt officiel publie les deux sous licence MIT et précise que Tiny requiert un environnement dédié, ses dépendances figées différant de celles du modèle 0.5B.
Dans Tiny, le terme « Tiny » renvoie au calcul MoE actif, et non au poids des fichiers stockés. La fiche du modèle Tiny indique 7.9B paramètres de backbone, environ 1.3B actifs par token, ainsi qu’un dépôt d’environ 18 GB.
Installation locale : du clonage à la vérification du checkpoint
Pour une installation locale fiable de Ming-3.0-TTS, gardez les deux modèles dans des environnements séparés. Clonez une seule fois le code officiel, installez uniquement les dépendances du checkpoint retenu, téléchargez ses poids, puis lancez le script de contrôle correspondant avant de charger le modèle.
Installer l’environnement 0.5B
Le chemin d’installation de base du dépôt est court :
git clone https://github.com/inclusionAI/Ming-3.0-tts.git
cd Ming-3.0-tts
conda create -n ming-tts python=3.10 -y
conda activate ming-tts
pip install -r requirements.txt
La fiche du modèle 0.5B indique un environnement de référence sous PyTorch 2.6, CUDA 12.4 et transformers==4.46.3. FlashAttention est facultatif ; PyTorch SDPA sert de solution de repli. Cette dernière assure la compatibilité, mais le projet ne chiffre pas son impact sur les performances.
La normalisation de texte FST gère les nombres, dates, unités et symboles. Installez la version figée de Pynini via Conda :
conda install -c conda-forge pynini==2.1.6
pynini ne dispose pas d’un wheel universel. L’option --no_text_normalization permet de s’en passer, mais envoie alors directement au synthétiseur les abréviations, dates, nombres et symboles bruts. Il s’agit donc d’un interrupteur de dépannage, pas d’un réglage à utiliser par défaut en production.
Installer Tiny dans un environnement distinct
N’installez pas Tiny par-dessus l’environnement 0.5B. La configuration officielle fixe Python 3.10.15, les wheels CUDA 11.8, PyTorch et torchaudio 2.7.1, ainsi que transformers==4.46.3 :
conda create -n ming-tiny python=3.10.15 -y
conda activate ming-tiny
pip install -r requirements-tiny.txt
Tiny s’appuie sur le calcul BF16, une boucle MoE portable et un état récurrent en FP32. InclusionAI recommande un NVIDIA H800 ; la documentation ne fournit aucun chemin pris en charge pour CPU, Apple Silicon, GGUF ou llama.cpp.
Télécharger et vérifier l’un ou l’autre checkpoint
La CLI Hugging Face permet de placer les poids dans un répertoire local prévisible :
pip install "huggingface_hub[cli]"
hf download inclusionAI/Ming-3.0-tts-0.5B \
--local-dir Ming-3.0-tts-0.5b
python tools/preflight.py --model_path Ming-3.0-tts-0.5b
Pour Tiny, remplacez l’identifiant du modèle et lancez son propre vérificateur :
hf download inclusionAI/Ming-3.0-tts-tiny \
--local-dir Ming-3.0-tts-tiny
python tools/preflight_tiny.py --model_path Ming-3.0-tts-tiny
Les scripts de pré-vérification contrôlent la structure du checkpoint et du tokenizer sans charger les poids. Les utilisateurs de Chine continentale peuvent à la place utiliser la commande de téléchargement ModelScope documentée dans le README du projet.
Générer un premier fichier avant d’ajouter un serveur
La première validation utile consiste à générer un WAV avec la CLI du dépôt. Pour cloner une voix avec le modèle 0.5B, fournissez le texte cible, un WAV de référence, sa transcription exacte et --use_spk_emb. La transcription fait partie du chemin de conditionnement : ce n’est pas une simple métadonnée facultative.
python infer.py \
--model_path Ming-3.0-tts-0.5b \
--task TTS \
--language_id English \
--text "The release candidate passed every audio check." \
--prompt_wav_path reference.wav \
--prompt_text "This is the exact speech in the reference recording." \
--use_spk_emb \
--output output/first.wav
Vous devez obtenir un WAV à 44.1 kHz. Si la vérification du checkpoint réussit mais que cette commande échoue, examinez la compatibilité CUDA/PyTorch et le fichier de référence avant d’ajouter une interface ou une couche serveur. Les dépôts Hugging Face distribuent les checkpoints ; les fiches des deux modèles précisent que l’inférence pratique exige le dépôt GitHub distinct.
L’enregistrement de référence doit être propre et sa transcription exacte. La documentation officielle ne donne pas de durée de référence idéale : n’érigez donc pas une règle empirique non documentée en exigence de validation stricte.
Exposer Ming-3.0-TTS via un endpoint vocal unique
SGLang-Omni peut exposer l’un ou l’autre checkpoint avec POST /v1/audio/speech sur un seul GPU. Le cookbook SGLang pour Ming-3.0-TTS place le prétraitement sur le CPU, tandis que le backbone et le décodeur AudioVAE partagent le même GPU.
Démarrez un checkpoint :
sgl-omni serve --model-path inclusionAI/Ming-3.0-tts-0.5B
Puis demandez un WAV :
curl http://127.0.0.1:8000/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "inclusionAI/Ming-3.0-tts-0.5B",
"input": "The local speech endpoint is ready.",
"response_format": "wav",
"seed": 123
}' \
--output speech.wav
Cet endpoint accepte wav, mp3, flac et pcm ; WAV est le format par défaut. Une entrée vide renvoie HTTP 400. Le champ model doit correspondre au checkpoint utilisé au démarrage du serveur.
Ne concevez pas la lecture autour d’un streaming token par token. Le cookbook SGLang précise que stream=true attend tout de même la fin de la génération et renvoie un unique corps de réponse PCM complet. Il n’accepte également qu’un seul enregistrement de référence pour le clonage ; un deuxième est refusé.
Les contrôles reposent sur des modes de tâche, pas sur des options cumulables
Les contrôles de Ming-3.0-TTS sont définis par des contrats de tâche distincts. Une requête doit sélectionner le mode adapté au résultat recherché, plutôt que d’empiler tous les contrôles disponibles dans un même appel.
| Objectif | Tâche 0.5B | Tâche Tiny | Règle d’entrée importante |
|---|---|---|---|
| Cloner une voix | TTS | seed | Audio de référence et transcription exacte |
| Allemand, espagnol, français, coréen ou japonais | MULTILINGUAL | multilingual | Référence et transcription ; langue cible explicite |
| Rires, soupirs ou respirations intégrés | TTS | paralinguistic | Chinois ou anglais ; utilisez les balises intégrées documentées |
| Consigne de jeu en langage naturel | FREEFORM | freeform | Aucune référence recommandée ; ne pas combiner avec d’autres tâches de contrôle |
| Créer une voix à partir d’un texte | VOICE_DESIGN | voice_design | Pas d’audio de référence |
| Définir l’émotion | EMOTION | emotion | Audio de référence ; sans transcription de référence |
| Régler vitesse, hauteur et volume | BASIC | basic | Fournir les trois contrôles |
| Sichuanais ou cantonais | DIALECT | dialect | Sans language_id |
| Script multi-locuteurs | Non pris en charge | podcast | Une référence et une transcription par locuteur ; chaque ligne commence par speaker_N: |
Le cookbook officiel indique explicitement que le mode libre ne peut pas être associé à la création de voix, aux voix intégrées, à l’émotion, aux dialectes ou aux attributs de base. Plusieurs événements paralinguistiques dans une même phrase sont pris en charge, mais les limites du dépôt signalent une stabilité encore inférieure à celle des événements isolés.
Ce que les scores démontrent — et ce qu’ils ne démontrent pas
Les éléments publics les plus solides font du 0.5B le choix par défaut et de Tiny une option spécialisée. Les résultats Artificial Analysis repris dans le README officiel attribuent à Ming-3.0-TTS 1,069 Controlled Voice Elo et 93.2% de robustesse de prononciation en octobre 2026, mais ces chiffres de classement concernent le modèle 0.5B et ne prouvent pas la qualité de Tiny.
Les évaluations de l’éditeur mettent en évidence un vrai compromis entre checkpoints. Sur les données d’évaluation Seed-TTS, le 0.5B affiche un WER chinois/anglais de 0.800%/1.584%, contre 0.820%/1.666% pour Tiny. Tiny obtient en revanche une meilleure similarité vocale dans les deux langues : 0.781/0.728, contre 0.758/0.691 pour le 0.5B. Ces chiffres proviennent des tableaux d’évaluation d’InclusionAI, et non d’un test local reproduit.
Tiny n’est pas systématiquement meilleur dans ses sept langues. Le tableau multilingue officiel affiche un CER coréen de 6.000% pour Tiny, contre 1.728% pour le 0.5B. Tiny est seul à prendre en charge les podcasts et annonce 2.03% de CER pour les podcasts, 0.561 de similarité vocale conditionnelle et 2.12 UTMOS. InclusionAI cite toutefois aussi la qualité prédite de l’audio de podcast parmi les axes d’amélioration.
La conclusion pratique est volontairement limitée : choisissez le 0.5B pour un premier déploiement, le coréen et une complexité opérationnelle réduite ; évaluez Tiny pour la génération de podcasts ou si sa meilleure similarité vocale mesurée en chinois et en anglais se vérifie sur vos propres références et justifie le checkpoint plus volumineux.
Valider le déploiement sur votre matériel
Une installation officielle réussie ne prouve pas la viabilité en production sur un GPU grand public. Votre critère de déploiement doit relever le pic de VRAM, le délai avant le premier WAV finalisé, le facteur temps réel, le taux d’échec et la qualité de sortie dans les conditions exactes de langue et d’audio de référence prévues par l’application.
« No GGUF/llama.cpp yet, and no consumer-GPU benchmarks. » — @TeksEdge on X
Cette observation correspond aux limites des données officielles : la documentation 0.5B cite des systèmes de test H800-80GB et H20-96G, tandis que Tiny recommande un H800. Aucune fiche officielle ne publie de résultats sur RTX 4090, RTX 3090, Windows, WSL2, macOS, la VRAM minimale ou le facteur temps réel.
Suivez cette séquence de validation :
- Exécutez le script de pré-vérification correspondant et conservez sa sortie avec la révision du checkpoint.
- Générez un WAV court via un chemin à voix intégrée ou sans locuteur, puis recommencez avec le format de référence destiné à la production.
- Mesurez le pic de VRAM et le temps écoulé pour des textes de production courts, médians et longs.
- Évaluez séparément l’intelligibilité et l’identité vocale dans chaque langue livrée.
- Testez chaque contrôle requis comme une tâche indépendante ; rejetez les configurations qui s’appuient sur des combinaisons non prises en charge.
- Testez en charge le comportement d’API à forme d’onde complète, y compris les délais d’expiration et la concurrence.
Sans ces mesures, « fonctionne en local » signifie seulement que la pile de référence peut charger le modèle et synthétiser sur le matériel de datacenter documenté.
FAQ Ming-3.0-TTS
Ming-3.0-TTS peut-il fonctionner sur une RTX 4090 ou 3090 ?
La publication officielle ne donne ni valeur minimale de VRAM ni benchmark sur GPU grand public. Le checkpoint 0.5B est le point de départ le plus plausible, mais mesurez localement le pic d’allocation et le facteur temps réel avant de vous engager sur l’une ou l’autre carte.
Ming-3.0-TTS fonctionne-t-il sous Windows ou macOS ?
Les environnements de référence officiels reposent sur des piles Linux avec CUDA. Aucun support natif de Windows, WSL2, Apple Silicon, MLX, GGUF ou llama.cpp n’est documenté dans le dépôt officiel.
Ming-3.0-TTS est-il utilisable commercialement ?
Le code et les checkpoints publiés sont sous licence MIT. Les mainteneurs interdisent l’usurpation trompeuse ou non consentie dans leurs recommandations d’usage et demandent que la parole synthétique soit signalée lorsqu’elle pourrait être confondue avec un enregistrement réel.
L’API SGLang diffuse-t-elle l’audio en temps réel ?
Non. Le comportement documenté de stream=true termine la génération avant de renvoyer un unique corps de réponse PCM ; les clients doivent donc le traiter comme une génération à réponse complète, et non comme une lecture incrémentale.
Faut-il choisir Ming-3.0-tts-0.5B ou Tiny ?
Commencez par le 0.5B pour un checkpoint plus compact, un déploiement plus simple, la synthèse en coréen et les usages classiques à un seul locuteur. Choisissez Tiny lorsque la génération de podcasts multi-locuteurs est obligatoire ou si une évaluation locale confirme que ses meilleurs scores de similarité vocale en chinois et en anglais se retrouvent sur vos voix.