--- license: apache-2.0 language: - fr pipeline_tag: text-to-speech library_name: onnxruntime tags: - onnx - french - audio - distillation - quantized - cpu - paradis-tts base_model: - hexgrad/Kokoro-82M datasets: - wikimedia/wikipedia --- Paradis — Une voix française dans votre application # 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](https://github.com/IvannP39/Paradis-TTS-release) · [Package Python v0.1.4](https://github.com/IvannP39/Paradis-TTS-release/releases/tag/v0.1.4) · [Documentation](https://github.com/IvannP39/Paradis-TTS-release/blob/main/docs/PYTHON_PACKAGE.md) ## É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](https://huggingface.co/IvannP/Paradis-TTS/tree/v0.1.3/fp32/samples) · [Exemples EMA INT8](https://huggingface.co/IvannP/Paradis-TTS/tree/v0.1.3/int8/samples) ## Utilisation Python Python 3.10–3.12 ; pas de GPU, PyTorch ou teacher à installer. ```bash python -m pip install paradis-tts ``` ```python 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"`. ```python 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](https://pypi.org/project/paradis-tts/). 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](https://huggingface.co/IvannP/Paradis-TTS/resolve/v0.1.3/paradis_tts_fp32.zip?download=true) | 30.21 Mo | 32,82 Mo | Version par défaut | | [EMA INT8](https://huggingface.co/IvannP/Paradis-TTS/resolve/v0.1.3/paradis_tts_int8.zip?download=true) | 8.21 Mo | 9,19 Mo | Téléchargement plus compact | Les poids bruts finaux sont aussi proposés : [FP32](https://huggingface.co/IvannP/Paradis-TTS/resolve/v0.1.3/paradis_tts_raw_fp32.zip?download=true) · [INT8](https://huggingface.co/IvannP/Paradis-TTS/resolve/v0.1.3/paradis_tts_raw_int8.zip?download=true). 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](https://github.com/IvannP39/Paradis-TTS-release/tree/main/evaluation/speed_20261016). ## 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](https://github.com/IvannP39/Paradis-TTS-release/tree/main/evaluation). ## Architecture et entraînement Adaptation française de [Paradee](https://github.com/sahilmahendrakar/paradee), architecture texte `s+mlp` et décodeur `A_full_phase`. Distillation de [Kokoro-82M](https://huggingface.co/hexgrad/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](https://doi.org/10.7488/ds/1705). 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](RELEASE_LICENSES.md).