Paradis-TTS · modèles v0.1.3
Une voix française compacte, utilisable sur CPU et hors ligne. 8,08 millions de paramètres · ONNX FP32 / INT8 · audio mono 24 kHz · post-traitement activé par défaut.
« À ma connaissance, l'un des plus petits modèles open source de synthèse vocale en français avec une voix naturelle. » — Ivann
Créé en solo par Ivann, avec 0 € de budget d'entraînement, et entraîné principalement en local sur un laptop RTX 3060. Budget hors matériel et électricité.
GitHub · Package Python v0.1.4 · Documentation
Écouter
Les exemples ci-dessous sont de vrais WAV générés avec les poids FP32 de cette release et le profil de post-traitement par défaut.
« Bonjour, voici la voix française de Paradis. »
« Sophie sèche ses chaussettes sur sa chaise. »
« Le TGV part à 18 h 30 et le billet coûte 12,50 €. »
Exemples EMA FP32 · Exemples EMA INT8
Utilisation Python
Python 3.10–3.12 ; pas de GPU, PyTorch ou teacher à installer.
python -m pip install paradis-tts
from paradis_tts import ParadisTTS
tts = ParadisTTS() # post_traitement=True par défaut
audio = tts("Bonjour tout le monde.")
tts.save(audio, "bonjour.wav")
Au premier lancement, le modèle FP32 est téléchargé depuis Hugging Face, à une révision
figée et son SHA256 est vérifié. Les appels suivants peuvent fonctionner hors
ligne. Pour utiliser les fichiers de ce dépôt sans téléchargement automatique :
décompresser une archive puis passer model_folder="chemin/vers/fp32".
tts = ParadisTTS(variant="int8")
tts = ParadisTTS(weight_kind="raw") # poids bruts finaux, sans moyenne EMA
tts = ParadisTTS(post_traitement=False)
Le package est disponible sur PyPI.
Les distributions wheel/sources restent également disponibles sur GitHub.
La progression du téléchargement et les étapes de chargement s'affichent par
défaut ; ParadisTTS(verbose=False) les désactive. La v0.1.4 réutilise
les modèles v0.1.3 et leur cache.
Télécharger
| Variante | Archive | Graphes ONNX | Usage |
|---|---|---|---|
| EMA FP32 | 30.21 Mo | 32,82 Mo | Version par défaut |
| EMA INT8 | 8.21 Mo | 9,19 Mo | Téléchargement plus compact |
Les poids bruts finaux sont aussi proposés : FP32 · INT8.
Les deux variantes ont 8 082 881 paramètres : 4 231 828 pour le texte et 3 851 053 pour le décodeur. Trois graphes (texte, prosodie, décodeur) s'exécutent avec ONNX Runtime CPU. L'excitation, la phonémisation et les filtres utilisent NumPy/Python et eSpeak. L'INT8 concerne le stockage des poids ; ils sont déquantifiés pour le calcul flottant. Aucun gain de vitesse INT8 n'est garanti.
Post-traitement inclus
Filtre de phase 97, restauration de présence plafonnée à 2,5 dB et adoucissement
du haut du spectre à 1,5 dB. L'adoucissement dynamique est désactivé depuis
la 0.1.3 après comparaison d'écoute. Les réglages
d'attaques, de syllabes fortes et de lissage restent à zéro. Le fichier
postprocessing.json permet de les personnaliser. Le traitement est appliqué
automatiquement une seule fois par synthèse.
Vitesse sur CPU — français
40 phrases françaises × 4 passages par moteur, CPU Ryzen 7 5800H, Windows, 2 threads. Poids EMA finaux à 10 000 étapes ; filtres optimisés de la 0.1.3.
| Modèle | Calcul pour 10 s de voix ↓ | Vitesse |
|---|---|---|
Piper français siwis-medium |
0.570 s | 17.5× |
| Paradis FP32* | 0.695 s | 14.4× |
| Paradis INT8* | 0.695 s | 14.4× |
Kokoro français ff_siwis |
5.924 s | 1.7× |
* Avec un léger post-traitement, inclus dans les temps mesurés.
Appels texte → audio complets, phonémisation et traitements natifs inclus ; chargement et écriture WAV exclus. ONNX Runtime pour Paradis/Piper, PyTorch pour Kokoro. Les durées audio diffèrent entre moteurs ; la vitesse ne classe pas la qualité. Le candidat mesuré et la release utilisent les mêmes calculs audio et poids. Protocole, mesures par phrase et incertitudes.
Qualité : évaluation historique — v0
Les scores ci-dessous correspondent aux anciens poids bruts à 6 500 étapes, pas aux poids EMA de v0.1.3. Les nouveaux exports passent les contrôles de parité et de fonctionnement ; l'évaluation complète sur 300 phrases n'a pas été relancée.
300 phrases inédites, articles séparés du corpus de distillation. CPU AMD Ryzen 7 5800H, Windows, deux threads configurés dans ONNX Runtime/PyTorch.
| Moteur | WER ↓ | DNSMOS global ↑ | RTF médian ↓ | Pic RSS |
|---|---|---|---|---|
| Paradis FP32 | 12.51 % | 3.36 | 0.175 | 374 Mio |
| Paradis INT8 | 12.70 % | 3.35 | 0.183 | 355 Mio |
| Kokoro ff_siwis | 12.33 % | 3.42 | 0.719 | 4405 Mio |
| Piper siwis medium | 16.47 % | 3.25 | 0.119 | 497 Mio |
WER : taux d’erreurs de mots mesuré par Whisper Small en français. DNSMOS P.835 est un proxy parole/bruit, pas une note d’écoute humaine ni une mesure suffisante de naturalité. RTF < 1 signifie une génération plus rapide que la lecture. Les mesures ont eu lieu sur un portable partagé avec un entraînement GPU et d’autres tâches CPU ; elles ne constituent pas un classement en conditions isolées. Protocole, scores par phrase et limites.
Architecture et entraînement
Adaptation française de Paradee,
architecture texte s+mlp et décodeur A_full_phase. Distillation de
Kokoro-82M, voix française ff_siwis,
révision f3ff3571791e39611d31c381e3a41a3af07b4987.
Corpus texte : Wikipédia française 20231101.fr, révision
b04c8d1ceb2f5cd4588862100d08de323dccfbaa, phrases courtes, filtrées et
normalisées. Splits : 12 000 train / 500 validation / 500 test. Les cibles sont
des représentations intermédiaires et de l'audio synthétique du teacher.
Les enregistrements originaux SIWIS n'ont pas été utilisés directement.
La v0.1.3 fige le modèle texte à 8 000 étapes et la moyenne EMA finale du décodeur
à 10 000 étapes de continuation GAN (décroissance 0,999), après entraînement
spectral, GAN et affinages précédents. Les poids bruts finaux sont disponibles
en alternative. L'identité et les hashes
du snapshot sont fournis dans provenance.json et les manifests. Le dépôt public
contient le runtime et les outils d'évaluation ; les expériences d'entraînement
restent dans le dépôt de développement privé. Ce checkpoint n'est pas présenté comme le
meilleur choix perceptuel parmi toutes les variantes.
Limites et provenance
Une seule voix, français uniquement. Un grain peut rester audible sur certaines consonnes. La normalisation des nombres, heures, unités, sigles et liens simples est couverte ; les formats complexes et les langues mixtes peuvent être mal lus. Les erreurs, limites et biais de la voix teacher peuvent se transmettre au modèle. La première release reste expérimentale ; aucune évaluation humaine agrégée n'est revendiquée. Ce modèle ne permet pas le clonage de voix.
Code et poids : Apache-2.0. Paradee : Sahil Mahendrakar, Apache-2.0. Teacher :
hexgrad/Kokoro-82M, Apache-2.0. Origine déclarée de ff_siwis : SIWIS,
CC BY 4.0 — Yamagishi, Junichi ; Honnet, Pierre-Edouard ; Garner, Philip ;
Lazaridis, Alexandros (2017), The SIWIS French Speech Synthesis Database, 2016,
University of Edinburgh, DOI.
Les contributeurs de Wikipédia sont attribués par phrase dans les métadonnées du dépôt GitHub ; les textes ont leurs propres licences CC BY-SA. Les sorties audio de démonstration sont synthétiques. Le G2P installé séparément inclut des composants GPL ; aucune bibliothèque eSpeak native n'est embarquée dans ces archives. Licences et inventaire.