Qwen3-TTS en local : synthèse vocale et voix clonée
Qwen3-TTS est la famille de modèles de synthèse vocale publiée en open-weights par l'équipe Qwen d'Alibaba, sous licence Apache 2.0. Elle tient dans quelques gigaoctets, parle français parmi une dizaine de langues, et sait faire trois choses distinctes : lire un texte avec une voix prédéfinie, inventer une voix à partir d'une description, ou reproduire un timbre à partir d'un court extrait audio. Ce guide montre comment faire tourner Qwen3-TTS en local avec le paquet Python officiel, quelle variante choisir, et dans quel cadre le clonage de voix reste acceptable. Aucune mesure de qualité ou de vitesse n'est avancée ici : nous n'en avons pas réalisé, et les sources officielles sont à consulter pour les versions courantes.
#Pourquoi Qwen3-TTS plutôt qu'une voix cloud
Les services de synthèse vocale en ligne sonnent bien, mais chaque phrase que vous leur confiez quitte votre machine, est facturée au caractère, et dépend d'un compte qui peut fermer. Pour un lecteur de documents internes, un assistant domotique ou un prototype d'application, une voix qui tourne entièrement en local supprime ces trois dépendances d'un coup.
Dans l'écosystème ouvert, deux familles coexistaient jusqu'ici. D'un côté les modèles très légers comme Piper ou Kokoro : rapides sur processeur, voix fixes, pas de clonage. De l'autre des modèles plus lourds et plus expressifs, souvent centrés sur l'anglais et le chinois. Qwen3-TTS se place entre les deux : des poids compacts, mais une architecture de type LLM qui accepte des consignes de style en langage naturel, et un support explicite du français dès le lancement.
La particularité de la famille est d'être découpée en trois comportements plutôt qu'en un seul modèle à tout faire. Vous ne téléchargez que la variante correspondant à votre besoin, ce qui compte sur un GPU de 8 ou 12 Go partagé avec un LLM de texte.
#Les modèles disponibles : Base, CustomVoice, VoiceDesign
Tes vidéos courtes et carrousels fabriqués chez toi : voix off IA naturelle, sous-titres mot à mot, montage automatique et textes de publication, sans abonnement.
- Espace en ligne à vie
- PDF + fichiers
- Mises à jour à vie
Au lancement, la famille comprend deux tailles de modèle, 0,6 et 1,7 milliard de paramètres, déclinées en trois variantes fonctionnelles, plus un tokenizer audio partagé. Les identifiants Hugging Face suivent le motif Qwen/Qwen3-TTS-12Hz-<taille>-<variante>. Le « 12Hz » désigne la fréquence du codec audio : le modèle produit douze trames de jetons acoustiques par seconde de parole, ce qui explique sa frugalité en calcul par rapport à des codecs plus denses.
- CustomVoice
- Voix prédéfinies, chacune avec un timbre et une langue d'origine, pilotables par une consigne de style (« parle lentement, ton rassurant »). C'est la variante à prendre pour lire un texte sans se poser de question de voix. Disponible en 0,6B et 1,7B.
- VoiceDesign
- Vous décrivez la voix voulue en langage naturel (âge, genre perçu, énergie, accent, émotion) et le modèle l'invente. Aucun enregistrement de référence, donc aucune personne réelle imitée. Publiée en 1,7B.
- Base
- Clonage à partir d'un extrait audio de quelques secondes et de sa transcription. C'est la variante la plus puissante et la seule qui pose une question de consentement, traitée plus bas. Disponible en 0,6B et 1,7B.
- Tokenizer-12Hz
- Le codec audio qui encode et décode la parole. Il est téléchargé automatiquement par les variantes ci-dessus ; vous n'avez à le manipuler qu'en cas d'usage avancé.
Les langues annoncées sont le chinois, l'anglais, le japonais, le coréen, l'allemand, le français, le russe, le portugais, l'espagnol et l'italien, avec en plus plusieurs dialectes chinois. Le paramètre de langue accepte soit un nom explicite comme « French », soit « Auto » pour laisser le modèle détecter la langue du texte. Pour du français, forcer la valeur évite les hésitations de prononciation sur les noms propres et les anglicismes.
#Prérequis matériel et logiciel
- Système
- Linux x86_64 est la cible documentée par le dépôt. macOS et Windows sont possibles avec des réserves détaillées dans la section dédiée.
- GPU
- Une carte NVIDIA avec CUDA est la voie prévue. Une RTX 3060 12 Go suffit largement pour la 1,7B seule ; l'exécution sur processeur fonctionne pour tester une phrase mais n'est pas adaptée à un usage interactif.
- Python
- Le dépôt recommande Python 3.12 dans un environnement virtuel dédié. Évitez d'installer dans l'environnement système ou dans celui d'un autre projet audio : les versions de PyTorch et de transformers imposées par le paquet peuvent entrer en conflit.
- Espace disque
- Comptez quelques gigaoctets par variante téléchargée, dans le cache Hugging Face (~/.cache/huggingface par défaut).
- Réseau
- Uniquement au premier lancement, pour télécharger les poids. Ensuite, tout fonctionne hors ligne.
Un dernier prérequis n'est pas technique : si vous comptez utiliser la variante Base, disposez d'un enregistrement dont vous avez le droit d'exploiter la voix. Votre propre voix est le cas le plus simple et le plus sûr pour apprendre.
#Étape 1 : installer le paquet qwen-tts
Le paquet Python officiel s'appelle qwen-tts sur PyPI et s'importe sous le nom qwen_tts. Il tire PyTorch et transformers comme dépendances. L'installation ci-dessous utilise un environnement virtuel standard ; conda fonctionne aussi bien si c'est votre habitude.
Le dépôt propose en option FlashAttention 2 pour accélérer l'inférence sur GPU récents. Sa compilation est longue et échoue sur certaines combinaisons CUDA/PyTorch. Ce n'est pas indispensable : sans lui, le modèle utilise l'attention standard de PyTorch. Installez-le seulement une fois que le reste fonctionne.
Vérifiez que l'import passe et que PyTorch voit bien votre GPU avant d'aller plus loin.
#Étape 2 : générer une première phrase en français avec Qwen3-TTS
La variante CustomVoice est la plus directe pour un premier essai : pas d'enregistrement de référence, pas de description à rédiger. On charge le modèle, on choisit une voix dans la liste du dépôt, on passe le texte et la langue. Le premier appel télécharge les poids depuis Hugging Face.
Trois paramètres méritent une explication. Le champ speaker désigne une des voix prédéfinies ; la liste exacte, avec la langue d'origine et la description de chaque timbre, figure dans le README et la fiche Hugging Face du modèle CustomVoice. Toutes ces voix peuvent lire du français, mais chacune garde un accent cohérent avec sa langue native, ce qui est un choix esthétique et non un défaut. Le champ instruct est une consigne de style en langage naturel : émotion, rythme, intention. Il est facultatif. Enfin, la fonction renvoie une liste de formes d'onde et la fréquence d'échantillonnage, ce qui permet de passer plusieurs textes en lot.
#Étape 3 : concevoir une voix par description
VoiceDesign répond à un besoin fréquent : vous voulez une voix qui n'existe pas dans la liste, sans imiter personne. On décrit le résultat en une ou deux phrases et le modèle produit un timbre cohérent avec la consigne. C'est aussi la variante à préférer pour un produit, puisqu'aucune voix réelle n'est reproduite.
La description fonctionne mieux quand elle décrit des caractéristiques acoustiques (hauteur, vitesse, énergie, netteté) que des métaphores. « Voix de présentateur radio nocturne » donne des résultats moins stables que « voix masculine grave, lente, feutrée ». Une voix conçue ainsi n'est pas figée d'un appel à l'autre : si vous avez besoin de la même voix sur des centaines de phrases, générez un premier extrait qui vous convient, puis utilisez-le comme référence avec la variante Base. Vous clonez alors une voix synthétique, ce qui ne pose aucun problème de consentement.
#Étape 4 : cloner une voix, avec le consentement de son propriétaire
La variante Base reproduit un timbre à partir d'un court extrait audio et de sa transcription. Quelques secondes de parole propre suffisent pour obtenir une voix reconnaissable. C'est la fonction la plus impressionnante de la famille, et celle qui demande le plus de rigueur avant même d'écrire une ligne de code.
Pour préparer la référence, enregistrez une phrase de cinq à dix secondes dans un endroit calme, sans musique de fond ni réverbération, en parlant naturellement. Transcrivez-la mot pour mot, ponctuation comprise : c'est ce texte que le modèle aligne sur l'audio pour apprendre le timbre. Un fichier WAV mono est le format le plus sûr.
Le dépôt documente deux usages avancés utiles en production. D'abord, la possibilité de pré-calculer une « empreinte » de la voix de référence une fois pour toutes, puis de la réutiliser sur chaque phrase sans recharger l'audio : c'est ce qu'il faut pour un lecteur de documents ou un assistant qui parle en continu. Ensuite, un mode où seule l'empreinte du locuteur est utilisée, sans la transcription, plus rapide mais moins fidèle. Les noms exacts de ces paramètres figurent dans le README ; ils ont changé entre les premières versions du paquet, d'où l'importance de lire la documentation installée plutôt qu'un tutoriel daté.
- Ce qui améliore le résultat
- Une référence propre, une transcription exacte, une langue forcée plutôt que « Auto », et un texte cible ponctué (le modèle respire aux virgules et aux points).
- Ce qui le dégrade
- Du bruit de fond, une référence trop courte ou trop longue, un chuchotement, une transcription approximative, et des chiffres écrits en nombres plutôt qu'en lettres pour les cas ambigus.
- Ce qu'il faut documenter
- Qui a donné son accord, pour quel usage, à quelle date, et où est conservé l'enregistrement. Un simple fichier texte à côté de la référence suffit pour un projet personnel ; un vrai registre de traitement pour un usage professionnel.
#Étape 5 : interface web et serveur
Le paquet installe une démo Gradio en ligne de commande, pratique pour essayer les voix et les consignes sans écrire de script. Elle charge un modèle au démarrage et expose une page web locale.
Gardez l'adresse d'écoute sur 127.0.0.1 tant que la machine n'est pas protégée : Gradio n'authentifie personne par défaut, et une interface de clonage de voix exposée sur un réseau n'est pas anodine. Si vous devez y accéder depuis un autre poste, passez par un tunnel SSH ou un reverse proxy avec authentification, comme pour n'importe quel service local.
Pour une intégration applicative, l'équipe Qwen oriente vers vLLM-Omni, l'extension multimodale de vLLM, qui permet de servir le modèle avec une API HTTP et une sortie en flux (le son commence à sortir avant la fin de la génération). C'est la voie à étudier pour un assistant vocal où la latence compte ; pour une génération en lot de fichiers audio, le script Python direct suffit et évite une couche de plus.
#Apple Silicon et Windows : des pistes communautaires, signalées comme telles
Le dépôt officiel documente Linux avec CUDA. Sur les autres plateformes, ce qui suit relève de l'écosystème communautaire : nous n'avons pas vérifié ces chemins nous-mêmes, et leur état change d'un mois à l'autre.
- Mac Apple Silicon
- Le paquet officiel repose sur PyTorch ; on peut tenter device_map="mps" avec dtype float16 ou float32 (bfloat16 n'est pas toujours pris en charge par MPS), en s'attendant à des opérations non supportées. La voie la plus naturelle sur Mac est un portage MLX : le projet communautaire mlx-audio a annoncé une prise en charge de Qwen3-TTS. Vérifiez sur son dépôt quelles variantes sont couvertes et avec quel niveau de maturité avant de vous y engager.
- Windows natif
- PyTorch avec CUDA s'installe normalement, mais FlashAttention est difficile à compiler sous Windows : laissez-le de côté et utilisez l'attention par défaut. Certaines dépendances audio demandent des binaires système (ffmpeg dans le PATH, par exemple). Des installateurs « un clic » tiers circulent ; ils embarquent souvent une version figée du paquet et il faut lire ce qu'ils installent.
- Windows via WSL2
- C'est la voie la plus proche de la documentation officielle : une distribution Ubuntu sous WSL2 avec le pilote NVIDIA Windows récent voit le GPU et suit exactement les commandes de ce guide. Le coût est une couche de plus et un accès aux fichiers Windows légèrement plus lent.
#Dépannage
- CUDA out of memory au chargement
- Un autre processus occupe la carte (Ollama, un navigateur avec accélération, une session Stable Diffusion). Vérifiez avec nvidia-smi, libérez, ou basculez sur la variante 0,6B.
- Téléchargement interrompu ou dépôt introuvable
- Vérifiez l'identifiant exact du modèle sur la page Hugging Face de l'organisation Qwen ; les noms de variantes ont pu évoluer depuis la rédaction. Un téléchargement partiel se reprend en relançant le script.
- Erreur d'import liée à transformers ou torch
- Conflit de versions avec un autre projet installé dans le même environnement. Recréez un environnement virtuel propre et réinstallez uniquement qwen-tts et soundfile.
- Prononciation étrange en français
- Forcez language="French" au lieu de « Auto », écrivez les nombres en lettres quand la lecture est ambiguë, et ponctuez. Les sigles se lisent mieux séparés par des points ou des espaces.
- Clone qui ne ressemble pas à la référence
- Réenregistrez la référence dans le calme, vérifiez la transcription mot à mot, et testez la 1,7B si vous étiez en 0,6B. Un extrait trop long n'aide pas : quelques secondes de parole nette valent mieux qu'une minute bruitée.
- Silence ou fichier vide
- Vérifiez que vous écrivez bien wavs[0] et non la liste entière, et que la fréquence d'échantillonnage renvoyée par le modèle est celle passée à soundfile.
- Lenteur extrême
- Le modèle tourne probablement sur CPU. Le test torch.cuda.is_available() de l'étape 1 doit renvoyer True ; sinon, réinstallez PyTorch avec la version CUDA correspondant à votre pilote.
#Pour aller plus loin
Qwen3-TTS couvre la partie « parler » d'une chaîne vocale locale. Pour l'autre moitié, la compréhension, et pour comparer avec des modèles de synthèse plus légers, le site traite déjà plusieurs sujets voisins. Les versions des paquets et des modèles cités dans ce guide sont celles du dépôt QwenLM/Qwen3-TTS au moment de la rédaction ; en cas d'écart, le dépôt et les fiches Hugging Face font foi.
- Kokoro TTS : une voix locale convaincante et légère
- Le modèle de 82 millions de paramètres qui parle plus vite que le temps réel sur processeur, sans clonage. Le bon choix quand la frugalité prime sur l'expressivité. https://quelllm.fr/guide/kokoro-tts-voix-locale
- Assistant vocal 100 % local : Whisper + Ollama + Piper
- La chaîne complète écoute, raisonnement, réponse parlée. Qwen3-TTS peut y remplacer Piper pour la synthèse si votre GPU le permet. https://quelllm.fr/guide/assistant-vocal-local-whisper-piper
- Fiche modèle Voxtral 4B TTS
- L'autre modèle de synthèse vocale ouvert récent côté européen, pour situer Qwen3-TTS dans le paysage sans comparaison chiffrée. https://quelllm.fr/modele/voxtral-4b-tts
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.