Synthèse vocale en Python : hors ligne, gratuite et avec des voix naturelles
Python offre plusieurs façons de transformer un texte en parole. Certaines bibliothèques lisent avec les voix robotiques du système, d'autres envoient votre texte à un service en ligne, et d'autres font tourner un modèle neuronal sur votre propre ordinateur. Ces dernières sonnent aujourd'hui presque comme un humain tout en fonctionnant sans Internet.
Ce guide compare les options, puis montre du code fonctionnel pour le moteur SuperClonica, un paquet pip fondé sur le modèle ouvert Supertonic 3 : installation, premier script, voix personnalisées, textes longs et API HTTP locale dans Docker. Le moteur est le nôtre, nous le signalons donc quand il est question de nous.
Les façons de faire de la synthèse vocale en Python
Avant de choisir une bibliothèque, tranchez deux questions : votre texte peut-il quitter l'ordinateur, et à quel point la voix doit-elle sembler naturelle ?
- pyttsx3 pilote le moteur vocal intégré au système : SAPI5 sous Windows, NSSpeechSynthesizer sous macOS et eSpeak sous Linux. Il fonctionne hors ligne et s'installe en quelques secondes, mais les voix sonnent robotiques et changent d'une machine à l'autre.
- gTTS envoie le texte au service vocal de Google Traduction et enregistre un MP3. Le son est plus clair, mais il faut Internet, on choisit des langues et des accents plutôt que des voix, et c'est une interface non officielle qui peut cesser de fonctionner.
- Les API cloud de Google, Amazon, Microsoft ou ElevenLabs sonnent très bien, mais elles demandent un compte et une clé, se paient au caractère et envoient chaque texte au fournisseur.
- Les modèles neuronaux locaux comme Supertonic 3, Kokoro et Piper tournent sur votre propre CPU ou GPU. Après un unique téléchargement du modèle, ils fonctionnent hors ligne, ne coûtent rien au caractère et sonnent bien plus naturel que les voix système. Nos pages de comparaison les détaillent.
Installer le moteur SuperClonica
Le moteur est un seul paquet pip en deux versions. Pour n'importe quel CPU sous Windows, macOS ou Linux avec Python 3.10 ou plus récent : python -m pip install superclonica-cpu. Pour un GPU NVIDIA sous Windows ou Linux avec Python 3.11 ou plus récent : python -m pip install superclonica-gpu-cuda. N'installez que l'un des deux par environnement ; tous deux fournissent le même module superclonica.
La version GPU apporte CUDA et cuDNN via pip : il suffit d'un pilote NVIDIA compatible CUDA 12, et sans GPU fonctionnel elle bascule sur le CPU. Au premier lancement, le modèle Supertonic 3, environ 385 Mo, est téléchargé une seule fois dans ~/.cache/supertonic3. Définissez SUPERTONIC_CACHE_DIR pour le placer ailleurs.
Votre premier script
Importez le moteur, synthétisez une phrase et enregistrez-la : from superclonica import Superclonica, puis tts = Superclonica(), audio, sample_rate = tts.synthesize("Bonjour, cette voix tourne sur mon propre ordinateur.", voice="F1", lang="fr", seed=7) et tts.save("bonjour.wav", audio). Le modèle est livré avec dix voix, de M1 à M5 et de F1 à F5, qui ne demandent aucun fichier supplémentaire.
Créez le moteur une fois et réutilisez-le : le chargement prend quelques secondes, chaque phrase suivante une fraction de seconde. Dans nos mesures, une phrase courte a pris en médiane 0,12 s sur une RTX 5070 Ti et 0,43 s sur un Ryzen 7 5800X avec quatre threads.
Utiliser une voix personnalisée
Une voix Supertonic 3 est un fichier JSON d'environ 0,3 Mo. Des voix gratuites avec extraits audio se trouvent dans le dépôt superclonica/supertonic-voices sur GitHub, et le catalogue SuperClonica en propose plus de 170 autres, des personnages de jeux aux narrateurs, chacune avec une démo en ligne gratuite.
Passez le fichier au lieu d'un nom de préréglage : tts.synthesize("Bonjour à tous.", voice="ciri.json", lang="fr", seed=7). En ligne de commande : superclonica --text "Bonjour à tous." --voice ciri.json --lang fr --output bonjour.wav. Chaque voix parle les 31 langues du modèle ; réglez lang sur la langue du texte, par exemple en, de, es ou ja. Le chinois n'est pas pris en charge.
Textes longs, dialogues et formats de fichier
Quelques options couvrent la plupart des projets réels.
- Un texte long, comme un chapitre, passe en un seul appel : le moteur le découpe en morceaux naturels de 160 caractères au plus, ce qui évite les mots répétés ou avalés.
- normalize=True égalise le volume à −18 LUFS, utile quand vous assemblez de nombreux fichiers.
- tts.synthesize_batch() fait parler plusieurs lignes à la fois, chacune avec sa voix, par exemple les répliques d'un dialogue ; les résultats gardent l'ordre d'entrée.
- Le même texte avec la même voix et la même graine redonne le même audio : vous pouvez refaire une ligne sans toucher au reste.
- Les nombres sont prononcés en toutes lettres, les abréviations courantes des messageries sont développées, et les emoji ou symboles inconnus sont nettoyés au lieu de provoquer une erreur.
- tts.save() écrit du WAV, du FLAC ou de l'OGG selon l'extension du fichier.
La synthèse vocale en API HTTP locale
Si le programme qui a besoin de parole n'est pas écrit en Python, lancez le moteur dans Docker : docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu, ou le tag cuda avec --gpus all sur un GPU NVIDIA. Le modèle se télécharge dans le volume au premier démarrage.
Envoyez POST /synthesize avec un JSON contenant le texte, la langue et le contenu du fichier de voix, et vous recevez un WAV. Une voix pèse environ 0,3 Mo : construisez donc la requête dans un fichier et envoyez-la avec curl -d @request.json.
Licences et usage responsable
Supertonic 3 est publié sous OpenRAIL-M, une licence libre de redevances avec une liste d'usages interdits plutôt qu'une clause non commerciale. N'utilisez pas la parole pour vous faire passer pour quelqu'un sans son consentement, pour tromper ou pour harceler, et indiquez que l'audio est généré par machine quand cela compte.
Certaines voix du catalogue s'inspirent de personnes connues. Ce ne sont pas leurs vraies voix : ne présentez donc pas cet audio comme leurs propres paroles.