plt_gel_lr_bas / README.md
mimba's picture
carte du modele
76f0d6d verified
|
Raw
History Blame Contribute Delete
7.25 kB
---
language:
- mg
license: cc-by-nc-sa-4.0
pipeline_tag: text-to-speech
tags:
- text-to-speech
- tts
- voice-cloning
- zero-shot
- malagasy
- plt
- low-resource
- onnx
- bluetts
base_model: notmax123/blue-v2
datasets:
- mimba/multivoice-plt
---
# BlueTTS — Malagasy (`plt`), clonage zero-shot preserve
Finetune de [BlueTTS](https://github.com/maxmelichov/BlueTTS) (base `notmax123/blue-v2`)
pour parler **malgache (Plateau Malagasy, `plt`)** **sans perdre** la capacite de
**clonage vocal zero-shot** du modele de base.
Chaque checkpoint est publie avec son **bundle ONNX** (inference CPU), ses **audios
d'evaluation** et ses **metriques** — rien n'est efface, tu peux choisir le tien.
## Le probleme resolu
Finetuner un TTS de clonage sur **peu de locuteurs** detruit l'espace locuteur : le modele
oublie le clonage et **repete des syllabes**. Un run precedent sur **4 voix** l'a montre
sans ambiguite : `sim_ecapa` s'effondrait de **0.45 a 0.22 en 1 000 steps**.
La parade retenue : entrainer sur **524 voix distinctes** parlant un malgache a accent natif
([`mimba/multivoice-plt`](https://huggingface.co/datasets/mimba/multivoice-plt), 26 200 clips),
pour que le modele apprenne a **separer le contenu du locuteur**. La diversite remplace le gel.
## Evolution
![evolution](assets/evolution.png)
| step | loss | sim moy | min | max | vues | inedites |
|---:|---:|---:|---:|---:|---:|---:|
| 0 | 0.304 | **0.314** | 0.130 | 0.494 | 0.349 | 0.280 |
| 1000 | 0.269 | **0.408** | 0.305 | 0.542 | 0.406 | 0.410 |
| 2000 | 0.266 | **0.406** | 0.316 | 0.533 | 0.404 | 0.408 |
| 3000 | 0.265 | **0.400** | 0.280 | 0.553 | 0.401 | 0.399 |
| 4000 | 0.264 | **0.395** | 0.280 | 0.520 | 0.390 | 0.401 |
| 5000 | 0.263 | **0.384** | 0.284 | 0.519 | 0.372 | 0.396 |
| 6000 | 0.263 | **0.403** | 0.320 | 0.524 | 0.385 | 0.420 |
| 7000 | 0.263 | **0.398** | 0.276 | 0.537 | 0.387 | 0.409 |
| 8000 | 0.263 | **0.388** | 0.291 | 0.543 | 0.375 | 0.401 |
| 9000 | 0.261 | **0.390** | 0.264 | 0.529 | 0.389 | 0.391 |
| 10000 | 0.262 | **0.393** | 0.280 | 0.510 | 0.389 | 0.396 |
| 11000 | 0.261 | **0.385** | 0.288 | 0.500 | 0.371 | 0.399 |
| 12000 | 0.261 | **0.390** | 0.242 | 0.495 | 0.386 | 0.393 |
| 13000 | 0.261 | **0.387** | 0.275 | 0.531 | 0.382 | 0.392 |
- **sim moy** — similarite locuteur ECAPA-TDNN (`speechbrain/spkrec-ecapa-voxceleb`),
cosinus entre l'audio genere et l'audio de reference, moyenne sur 4 references x N phrases.
- **vues / inedites** — phrases d'evaluation initiales vs phrases **jamais vues** a
l'entrainement (mesure de generalisation).
Au step 13000, les phrases **inedites** obtiennent **0.392** contre **0.382** pour les phrases d'evaluation initiales : l'ecart (+0.010) montre que le modele **generalise** et ne recite pas son corpus.
## Ecoute — checkpoint 13000
4 voix de reference x plusieurs phrases malgaches, generees via le bundle ONNX de ce checkpoint.
**voix1_p1**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix1_p1.wav"></audio>
**voix1_p2**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix1_p2.wav"></audio>
**voix1_p3**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix1_p3.wav"></audio>
**voix1_p4**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix1_p4.wav"></audio>
**voix2_p1**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix2_p1.wav"></audio>
**voix2_p2**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix2_p2.wav"></audio>
**voix2_p3**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix2_p3.wav"></audio>
**voix2_p4**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix2_p4.wav"></audio>
**voix3_p1**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix3_p1.wav"></audio>
**voix3_p2**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix3_p2.wav"></audio>
**voix3_p3**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix3_p3.wav"></audio>
**voix3_p4**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix3_p4.wav"></audio>
**voix4_p1**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix4_p1.wav"></audio>
**voix4_p2**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix4_p2.wav"></audio>
**voix4_p3**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix4_p3.wav"></audio>
**voix4_p4**
<audio controls src="https://huggingface.co/mimba/bluetts-plt_gel/resolve/main/eval/step_13000/voix4_p4.wav"></audio>
## Recette d'entrainement
| | |
|---|---|
| Base | `notmax123/blue-v2` (AE `blue_codec.safetensors`) |
| Dataset | `mimba/multivoice-plt` — 26 197 clips, **524 locuteurs** (50 chacun) |
| Texte | IPA pre-phonemise (`text_phonemized`), `plt` |
| Duration Predictor | reentraine **de zero** sur les 524 voix, 15 000 steps (loss 1.3 -> 0.059) |
| TTL | finetune, batch 7 x accumulation 8 (batch effectif 56) |
| LR | 2.5e-4, reduit a **1.25e-4** apres plateau de loss + baisse de `sim_ecapa` |
| Checkpoints | tous les 1 000 steps, exportes en ONNX et evalues automatiquement |
**Pourquoi le DP est reentraine** : c'est lui qui portait le begaiement du run 4-voix
(il est conditionne par le locuteur). Sur 524 voix, il apprend un rythme robuste.
## Utilisation (ONNX, CPU)
```python
from huggingface_hub import snapshot_download
d = snapshot_download("mimba/bluetts-plt_gel", allow_patterns=["eval/step_13000/onnx/*"])
# -> text_encoder / vector_estimator / vocoder / duration_predictor
# + codec_encoder / style_encoder / duration_style_encoder (clonage zero-shot)
```
Parametres de production (worker Mimba) : `total_step=8..16`, `speed=0.95`,
`cfg_scale=4.0`, `pace_blend=0.30`. Normaliser la sortie avant ecriture
(RMS 0.08 / peak 0.95) : le vocodeur sort a un pic ~1.5 et s'ecrete sinon.
Le vocabulaire BlueTTS ne contient pas les marqueurs de prenasalisation malgaches
`m` en exposant et `n` en exposant : les remplacer par `m` / `n` avant encodage.
## Limites
- **Fidelite de clonage inferieure a la base** : `sim_ecapa` passe de ~0.35 (step 0)
a ~0.32 apres finetune. La degradation a ete **stoppee** (LR reduit), pas annulee.
- **Variable selon la voix** : certaines references se clonent nettement moins bien
(voir l'ecart min/max du tableau) — tester avec ses propres references.
- **Monolingue** : entraine pour le malgache uniquement.
- **Donnees synthetiques** : le corpus multi-voix est genere (OmniVoice + OpenVoice),
seul l'accent provient de locuteurs natifs reels.
## Licence
`cc-by-nc-sa-4.0` — usage non commercial. Verifier independamment les licences de
BlueTTS, OmniVoice et OpenVoice avant tout usage commercial.
##### *Contact : [@Mimba](baounabaouna@gmail.com)*