File size: 9,730 Bytes
344b51c 3815937 344b51c 95111dc 344b51c 3815937 344b51c 95111dc 344b51c 3815937 344b51c 3815937 344b51c 3815937 344b51c 3815937 344b51c 3d629d4 344b51c 204cbc1 344b51c 204cbc1 344b51c 8ab2f3e 344b51c 3d629d4 95111dc 344b51c 3815937 8ab2f3e 3815937 344b51c 3815937 344b51c 3815937 8ab2f3e 3815937 8ab2f3e 344b51c 3815937 8ab2f3e 344b51c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | ---
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
---
<img src="https://huggingface.co/IvannP/Paradis-TTS/resolve/v0.1.3/assets/paradis-banner.png" alt="Paradis — Une voix française dans votre application" width="100%">
# 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. »
<audio controls src="https://huggingface.co/IvannP/Paradis-TTS/resolve/v0.1.3/fp32/samples/01.wav"></audio>
« Sophie sèche ses chaussettes sur sa chaise. »
<audio controls src="https://huggingface.co/IvannP/Paradis-TTS/resolve/v0.1.3/fp32/samples/02.wav"></audio>
« Le TGV part à 18 h 30 et le billet coûte 12,50 €. »
<audio controls src="https://huggingface.co/IvannP/Paradis-TTS/resolve/v0.1.3/fp32/samples/03.wav"></audio>
[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).
|