File size: 6,532 Bytes
eb119ac
 
4024256
 
 
 
 
 
eb119ac
e20ea5a
eb119ac
73827c4
e4016e7
a3016e5
e4016e7
 
eb119ac
1a19517
 
 
 
90f7156
 
 
 
 
5d6347c
10c2ed5
 
2903747
be483a3
11d0f15
8e3a5a9
 
 
 
 
777efba
 
8e3a5a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2903747
 
 
 
 
8e3a5a9
b793679
b5dfa85
2903747
 
 
 
 
 
 
8e3a5a9
6456881
 
2903747
8e3a5a9
 
2903747
8e3a5a9
 
2903747
8e3a5a9
2903747
8e3a5a9
2903747
8e3a5a9
2903747
8e3a5a9
2903747
 
8e3a5a9
 
b5dfa85
830316f
8e3a5a9
830316f
 
8e3a5a9
 
b793679
b5dfa85
8e3a5a9
 
 
 
 
 
 
2903747
8e3a5a9
 
 
 
 
b5dfa85
b793679
8e3a5a9
 
 
2903747
8e3a5a9
 
 
 
 
2903747
8e3a5a9
2903747
8e3a5a9
 
 
 
 
2903747
b5dfa85
8e3a5a9
b5dfa85
8e3a5a9
 
 
2903747
8e3a5a9
b5dfa85
8e3a5a9
b5dfa85
8e3a5a9
 
 
 
bff5bf9
8e3a5a9
859943d
8e3a5a9
859943d
 
 
 
2903747
8e3a5a9
b5dfa85
2903747
 
 
561f322
2903747
 
 
 
b5dfa85
2903747
b5dfa85
2903747
 
 
 
 
 
 
 
 
 
 
8e3a5a9
 
 
 
1e31017
 
 
 
8e3a5a9
 
 
1b9b59b
8ee8d25
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
193
194
195
196
197
198
199
---
library_name: transformers
license: apache-2.0
language:
- wo
base_model:
- parler-tts/parler-tts-mini-multilingual-v1.1
pipeline_tag: text-to-speech
---
<img src="https://huggingface.co/spaces/CONCREE/Adia_TTS/resolve/main/adia.png" alt=" Adia TTS Logo" width="800" style="margin-left:'auto' margin-right:'auto' display:'block'"/>

# Adia_TTS Wolof

<a target="_blank" href="https://huggingface.co/spaces/CONCREE/Adia_TTS">
  <img src="https://huggingface.co/datasets/huggingface/badges/raw/main/open-in-hf-spaces-sm.svg" alt="Open in HuggingFace"/>
</a>

# ADIA_TTS : Modèle de synthèse vocale en Wolof

## Table des matières
1. Introduction
2. Caractéristiques techniques
3. Installation
4. Utilisation
5. Configuration avancée
6. Exemples
7. Limitations
8. Références
9. Licence

## Introduction
ADIA_TTS est un modèle de synthèse vocale (Text-to-Speech) open source en wolof, développé par CONCREE. Basé sur le modèle parler-tts-mini-multilingual-v1.1, il représente une avancée significative dans la synthèse vocale pour la langue wolof.

## Points clés
* Entraîné sur 40 heures de données vocales en wolof
* Affiné pendant 100 epochs (~168 heures d'entraînement)
* Qualité vocale naturelle et fluide
* Voix unique avec contrôle des caractéristiques vocales via description


## Caractéristiques techniques

### Spécifications du modèle

* Architecture : parler-tts-mini-multilingual-v1.1
* Taille du modèle : 1.88 GB
* Format du modèle : PyTorch
* Fréquence d'échantillonnage : 24kHz
* Encodage audio : 16-bit PCM

### Performance

* Temps moyen d'inférence :  secondes/phrase (CPU), 20 secondes/phrase (GPU)
* Consommation mémoire : 3.9 GB (RAM minimale recommandée)

## Installation
### Prérequis
Python 3.8 ou supérieur
PyTorch 2.0 ou supérieur
CUDA (obligatoire, pour accélération GPU)
```sh
pip install git+https://github.com/huggingface/parler-tts.git
```

## Utilisation
## Exemple de base

```py
import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf

device = "cuda:0" if torch.cuda.is_available() else "cpu"

# Chargement du modèle
model = ParlerTTSForConditionalGeneration.from_pretrained("CONCREE/Adia_TTS").to(device)
tokenizer = AutoTokenizer.from_pretrained("CONCREE/Adia_TTS")

# Texte en wolof à synthétiser
text = "Entreprenariat ci Senegal dafa am solo lool ci yokkuteg koom-koom, di gëna yokk liggéey ak indi gis-gis yu bees ci dëkk bi."

# Description du style vocal
description = "A clear and educational voice, with a flow adapted to learning"

# Génération
input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_ids = tokenizer(text, return_tensors="pt").input_ids.to(device)

audio = model.generate(
    input_ids=input_ids,
    prompt_input_ids=prompt_ids,
)

# Sauvegarde
sf.write("output.wav", audio.cpu().numpy().squeeze(), model.config.sampling_rate)
```
<audio controls>
  <source src="https://huggingface.co/spaces/CONCREE/Adia_TTS/resolve/main/snt.wav" type="audio/wav">
</audio>

## Configuration avancée
## Paramètres de génération

```py
generation_config = {
    "temperature": 0.8,           # Contrôle la variabilité de la sortie
    "max_new_tokens": 1000,       # Longueur maximale de la séquence générée
    "do_sample": True,            # Active l'échantillonnage aléatoire
    "top_k": 50,                  # Limite le nombre de tokens considérés
    "repetition_penalty": 1.2,    # Pénalise la répétition de tokens
}

audio = model.generate(
    input_ids=input_ids,
    prompt_input_ids=prompt_ids,
    **generation_config
)
```

<audio controls>
  <source src="https://huggingface.co/spaces/CONCREE/Adia_TTS/resolve/main/avct.wav" type="audio/wav">
</audio>

## Styles vocaux
### Exemples de descriptions pour différents styles :

1. ### Voix naturelle
 
```py
description = "A warm and natural voice, with a conversational flow"
```
<audio controls>
  <source src="https://huggingface.co/spaces/CONCREE/Adia_TTS/resolve/main/styl1.wav" type="audio/wav">
</audio>

2. ### Voix professionnelle

```py
description = "A professional, clear and composed voice, perfect for formal presentations"
```
<audio controls>
  <source src="https://huggingface.co/spaces/CONCREE/Adia_TTS/resolve/main/styl2.wav" type="audio/wav">
</audio>

3. ### Voix pour l'éducation
```py
description = "A clear and educational voice, with a flow adapted to learning"
```
<audio controls>
  <source src="https://huggingface.co/spaces/CONCREE/Adia_TTS/resolve/main/styl3.wav" type="audio/wav">
</audio>

## Limitations

* Performance réduite sur les phrases très longues
* Gestion limitée des nombres et des dates
* Temps de chargement initial du modèle relativement plus long
* Le modèle est limité à 200 caractères maximum par inférence sans segmentation. Pour les textes plus longs, une segmentation manuelle est nécessaire.
* La qualité des transitions entre segments peut varier selon la méthode de segmentation choisie
* Il est recommandé de segmenter le texte aux frontières naturelles (phrases, paragraphes) pour de meilleurs résultats
## Références

```
@misc{CONCREE-2024-Adia_TTS,
  author = {CONCREE},
  title = {Adia_TTS},
  year = {2025},
  publisher = {Hugging Face},
  journal = {Hugging Face repository},
  howpublished = {\url{https://huggingface.co/CONCREE/Adia_TTS}}
}
```

```
@misc{lyth2024natural,
  title={Natural language guidance of high-fidelity text-to-speech with synthetic annotations},
  author={Dan Lyth and Simon King},
  year={2024},
  eprint={2402.01912},
  archivePrefix={arXiv},
  primaryClass={cs.SD}
}
```

## Licence
Ce projet est sous licence Apache 2.0. Voir le fichier LICENSE pour plus de détails.

## Conditions d'utilisation

* Les utilisateurs s'engagent à utiliser le modèle d'une manière qui respecte la langue wolof et la culture sénégalaise.
* Nous encourageons l'utilisation de ce modèle pour développer des solutions qui améliorent l'accessibilité numérique pour les locuteurs wolof et contribuent à réduire la fracture numérique. Les projets visant l'inclusion numérique sont particulièrement bienvenus.
* Toute utilisation du modèle doit mentionner CONCREE comme créateur original. Les utilisateurs sont fortement encouragés à partager leurs améliorations avec la communauté.
* L'utilisation commerciale est autorisée selon les termes de la licence Apache 2.0.

## Contact
Pour toute question ou support :

Email : [email protected]