mimba commited on
Commit
df72799
Β·
verified Β·
1 Parent(s): 18d31fd

carte du modele

Browse files
Files changed (1) hide show
  1. README.md +216 -0
README.md ADDED
@@ -0,0 +1,216 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - mg
4
+ license: cc-by-nc-sa-4.0
5
+ pipeline_tag: text-to-speech
6
+ tags:
7
+ - text-to-speech
8
+ - tts
9
+ - voice-cloning
10
+ - zero-shot
11
+ - malagasy
12
+ - plt
13
+ - low-resource
14
+ - onnx
15
+ - bluetts
16
+ base_model: notmax123/blue-v2
17
+ datasets:
18
+ - mimba/multivoice-plt
19
+ ---
20
+
21
+ # BlueTTS β€” Malagasy (`plt`), clonage zero-shot preserve
22
+
23
+ Finetune de [BlueTTS](https://github.com/maxmelichov/BlueTTS) (base `notmax123/blue-v2`)
24
+ pour parler **malgache (Plateau Malagasy, `plt`)** **sans perdre** la capacite de
25
+ **clonage vocal zero-shot** du modele de base.
26
+
27
+ Chaque checkpoint est publie avec son **bundle ONNX** (inference CPU), ses **audios
28
+ d'evaluation** et ses **metriques** β€” rien n'est efface, tu peux choisir le tien.
29
+
30
+ ## Le probleme resolu
31
+
32
+ Finetuner un TTS de clonage sur **peu de locuteurs** detruit l'espace locuteur : le modele
33
+ oublie le clonage et **repete des syllabes**. Un run precedent sur **4 voix** l'a montre
34
+ sans ambiguite : `sim_ecapa` s'effondrait de **0.45 a 0.22 en 1 000 steps**.
35
+
36
+ La parade retenue : entrainer sur **524 voix distinctes** parlant un malgache a accent natif
37
+ ([`mimba/multivoice-plt`](https://huggingface.co/datasets/mimba/multivoice-plt), 26 200 clips),
38
+ pour que le modele apprenne a **separer le contenu du locuteur**. La diversite remplace le gel.
39
+
40
+ ## Evolution
41
+
42
+ ![evolution](assets/evolution.png)
43
+
44
+ | step | loss | sim moy | min | max | vues | inedites |
45
+ |---:|---:|---:|---:|---:|---:|---:|
46
+ | 0 | β€” | **0.349** | 0.230 | 0.494 | 0.349 | β€” |
47
+ | 1000 | β€” | **0.401** | 0.316 | 0.487 | 0.401 | β€” |
48
+ | 2000 | 0.233 | **0.371** | 0.278 | 0.451 | 0.371 | β€” |
49
+ | 3000 | 0.231 | **0.365** | 0.293 | 0.448 | 0.365 | β€” |
50
+ | 4000 | 0.230 | **0.358** | 0.265 | 0.468 | 0.358 | β€” |
51
+ | 5000 | 0.230 | **0.335** | 0.255 | 0.415 | 0.335 | β€” |
52
+ | 6000 | 0.229 | **0.348** | 0.267 | 0.418 | 0.348 | β€” |
53
+ | 7000 | 0.228 | **0.345** | 0.210 | 0.409 | 0.345 | β€” |
54
+ | 8000 | 0.226 | **0.321** | 0.191 | 0.415 | 0.321 | β€” |
55
+ | 9000 | 0.226 | **0.300** | 0.176 | 0.366 | 0.300 | β€” |
56
+ | 10000 | 0.226 | **0.324** | 0.144 | 0.426 | 0.300 | 0.335 |
57
+ | 11000 | 0.227 | **0.326** | 0.125 | 0.432 | 0.318 | 0.331 |
58
+ | 12000 | 0.225 | **0.324** | 0.138 | 0.448 | 0.305 | 0.333 |
59
+ | 13000 | 0.224 | **0.325** | 0.146 | 0.449 | 0.312 | 0.332 |
60
+ | 14000 | 0.225 | **0.323** | 0.148 | 0.434 | 0.301 | 0.333 |
61
+
62
+ - **sim moy** β€” similarite locuteur ECAPA-TDNN (`speechbrain/spkrec-ecapa-voxceleb`),
63
+ cosinus entre l'audio genere et l'audio de reference, moyenne sur 4 references x N phrases.
64
+ - **vues / inedites** β€” phrases d'evaluation initiales vs phrases **jamais vues** a
65
+ l'entrainement (mesure de generalisation).
66
+
67
+ Au step 14000, les phrases **inedites** obtiennent **0.333** contre **0.301** pour les phrases d'evaluation initiales : l'ecart (+0.032) montre que le modele **generalise** et ne recite pas son corpus.
68
+
69
+ ## Ecoute β€” checkpoint 14000
70
+
71
+ 4 voix de reference x plusieurs phrases malgaches, generees via le bundle ONNX de ce checkpoint.
72
+
73
+ **voix1_p1**
74
+
75
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix1_p1.wav"></audio>
76
+
77
+ **voix1_p2**
78
+
79
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix1_p2.wav"></audio>
80
+
81
+ **voix1_p3**
82
+
83
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix1_p3.wav"></audio>
84
+
85
+ **voix1_p4**
86
+
87
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix1_p4.wav"></audio>
88
+
89
+ **voix1_p5**
90
+
91
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix1_p5.wav"></audio>
92
+
93
+ **voix1_p6**
94
+
95
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix1_p6.wav"></audio>
96
+
97
+ **voix2_p1**
98
+
99
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix2_p1.wav"></audio>
100
+
101
+ **voix2_p2**
102
+
103
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix2_p2.wav"></audio>
104
+
105
+ **voix2_p3**
106
+
107
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix2_p3.wav"></audio>
108
+
109
+ **voix2_p4**
110
+
111
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix2_p4.wav"></audio>
112
+
113
+ **voix2_p5**
114
+
115
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix2_p5.wav"></audio>
116
+
117
+ **voix2_p6**
118
+
119
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix2_p6.wav"></audio>
120
+
121
+ **voix3_p1**
122
+
123
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix3_p1.wav"></audio>
124
+
125
+ **voix3_p2**
126
+
127
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix3_p2.wav"></audio>
128
+
129
+ **voix3_p3**
130
+
131
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix3_p3.wav"></audio>
132
+
133
+ **voix3_p4**
134
+
135
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix3_p4.wav"></audio>
136
+
137
+ **voix3_p5**
138
+
139
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix3_p5.wav"></audio>
140
+
141
+ **voix3_p6**
142
+
143
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix3_p6.wav"></audio>
144
+
145
+ **voix4_p1**
146
+
147
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix4_p1.wav"></audio>
148
+
149
+ **voix4_p2**
150
+
151
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix4_p2.wav"></audio>
152
+
153
+ **voix4_p3**
154
+
155
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix4_p3.wav"></audio>
156
+
157
+ **voix4_p4**
158
+
159
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix4_p4.wav"></audio>
160
+
161
+ **voix4_p5**
162
+
163
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix4_p5.wav"></audio>
164
+
165
+ **voix4_p6**
166
+
167
+ <audio controls src="https://huggingface.co/mimba/bluetts-plt/resolve/main/eval/step_14000/voix4_p6.wav"></audio>
168
+
169
+
170
+ ## Recette d'entrainement
171
+
172
+ | | |
173
+ |---|---|
174
+ | Base | `notmax123/blue-v2` (AE `blue_codec.safetensors`) |
175
+ | Dataset | `mimba/multivoice-plt` β€” 26 197 clips, **524 locuteurs** (50 chacun) |
176
+ | Texte | IPA pre-phonemise (`text_phonemized`), `plt` |
177
+ | Duration Predictor | reentraine **de zero** sur les 524 voix, 15 000 steps (loss 1.3 -> 0.059) |
178
+ | TTL | finetune, batch 7 x accumulation 8 (batch effectif 56) |
179
+ | LR | 2.5e-4, reduit a **1.25e-4** apres plateau de loss + baisse de `sim_ecapa` |
180
+ | Checkpoints | tous les 1 000 steps, exportes en ONNX et evalues automatiquement |
181
+
182
+ **Pourquoi le DP est reentraine** : c'est lui qui portait le begaiement du run 4-voix
183
+ (il est conditionne par le locuteur). Sur 524 voix, il apprend un rythme robuste.
184
+
185
+ ## Utilisation (ONNX, CPU)
186
+
187
+ ```python
188
+ from huggingface_hub import snapshot_download
189
+ d = snapshot_download("mimba/bluetts-plt", allow_patterns=["eval/step_14000/onnx/*"])
190
+ # -> text_encoder / vector_estimator / vocoder / duration_predictor
191
+ # + codec_encoder / style_encoder / duration_style_encoder (clonage zero-shot)
192
+ ```
193
+
194
+ Parametres de production (worker Mimba) : `total_step=8..16`, `speed=0.95`,
195
+ `cfg_scale=4.0`, `pace_blend=0.30`. Normaliser la sortie avant ecriture
196
+ (RMS 0.08 / peak 0.95) : le vocodeur sort a un pic ~1.5 et s'ecrete sinon.
197
+
198
+ Le vocabulaire BlueTTS ne contient pas les marqueurs de prenasalisation malgaches
199
+ `m` en exposant et `n` en exposant : les remplacer par `m` / `n` avant encodage.
200
+
201
+ ## Limites
202
+
203
+ - **Fidelite de clonage inferieure a la base** : `sim_ecapa` passe de ~0.35 (step 0)
204
+ a ~0.32 apres finetune. La degradation a ete **stoppee** (LR reduit), pas annulee.
205
+ - **Variable selon la voix** : certaines references se clonent nettement moins bien
206
+ (voir l'ecart min/max du tableau) β€” tester avec ses propres references.
207
+ - **Monolingue** : entraine pour le malgache uniquement.
208
+ - **Donnees synthetiques** : le corpus multi-voix est genere (OmniVoice + OpenVoice),
209
+ seul l'accent provient de locuteurs natifs reels.
210
+
211
+ ## Licence
212
+
213
+ `cc-by-nc-sa-4.0` β€” usage non commercial. Verifier independamment les licences de
214
+ BlueTTS, OmniVoice et OpenVoice avant tout usage commercial.
215
+
216
+ ##### *Contact : [@Mimba](baounabaouna@gmail.com)*