File size: 4,520 Bytes
3e08670
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
200
201
202
203
204
205
206
207
# Guide de déploiement sur Hugging Face Spaces

## Prérequis

- Compte Hugging Face: https://huggingface.co
- Git installé localement
- Token HF avec permissions write (https://huggingface.co/settings/tokens)

## Étapes de déploiement

### 1. Créer un Space sur Hugging Face

```bash
# Visite https://huggingface.co/new-space
# - Remplis le formulaire:
#   - Name: mms-asr-tts (ou autre nom)
#   - License: OpenRAIL (ou CC-BY-NC-4.0 pour correspondre à Meta)
#   - Space SDK: Docker
# - Clique "Create Space"
```

### 2. Cloner le Space

```bash
git clone https://huggingface.co/spaces/<username>/<space-name>
cd <space-name>
```

### 3. Copier les fichiers du projet

```bash
# Depuis le répertoire du projet
cp app_v2.py app.py
cp requirements.txt .
cp Dockerfile .
cp README.md .
cp .gitignore .
cp examples.py .
cp client.py .
```

### 4. Configurer le fichier de révision de Hugging Face

Crée `README_SPACE.md` avec les métadonnées:

```yaml
---
title: Meta MMS ASR/TTS
description: API multilingue pour reconnaissance vocale et synthèse vocale
sdk: docker
pinned: false
app_port: 7860
models:
  - facebook/mms-1b-all
  - facebook/mms-tts-eng
  - facebook/mms-tts-yor
  - facebook/mms-tts-beh
  - facebook/mms-tts-ddn
  - facebook/mms-tts-ewe
  - facebook/mms-tts-gej
  - facebook/mms-tts-tbz
  - facebook/mms-tts-bba
tags:
  - ASR
  - TTS
  - Speech
  - Audio
  - Multilingual
  - MMS
---
```

### 5. Pousser vers Hugging Face

```bash
# Configure Git si nécessaire
git config user.email "email@example.com"
git config user.name "Your Name"

# Ajoute et pousse
git add .
git commit -m "Initial commit: Meta MMS ASR/TTS API"
git push
```

### 6. Attendre le déploiement

Le Space se construira automatiquement (5-15 minutes). Pendant ce temps:
- Les dépendances seront installées
- Les modèles seront téléchargés (peut prendre du temps)
- L'application sera lancée

### 7. Tester le Space

```bash
# Accède à: https://huggingface.co/spaces/<username>/<space-name>
# Teste les endpoints:
# - GET / → Documentation
# - GET /health → État
# - POST /tts → Teste avec du texte en Yoruba/autres langues
```

## Troubleshooting

### Erreur: "Model not found"

Solution: Les modèles peuvent prendre du temps à télécharger. Attends 5-10 minutes et réessaie.

### Erreur: "CUDA out of memory"

Solution: 
- Réduis MAX_AUDIO_LENGTH ou MAX_TEXT_LENGTH
- Utilise CPU au lieu du GPU
- Ajoute à requirements.txt: `transformers[deepspeed]`

### Erreur: "Port already in use"

Solution: Le port 7860 est utilisé par défaut sur HF Spaces. Vérifier `app_port` dans README.md

## Optimisation pour Production

### Augmenter les ressources

Modifie le `docker-compose.yml`:

```yaml
deploy:
  resources:
    limits:
      memory: 8G
    reservations:
      memory: 4G
      devices:
        - driver: nvidia
          count: 1  # GPU
          capabilities: [gpu]
```

### Ajouter du caching

Modifie le Dockerfile pour persister les modèles:

```dockerfile
ENV HF_HOME=/app/hf_cache
ENV TORCH_HOME=/app/torch_cache
```

### Ajouter de l'authentification

Pour limiter l'accès:

```python
from functools import wraps
from flask import request

def require_token(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        token = request.headers.get('Authorization', '').replace('Bearer ', '')
        if token != os.getenv('API_TOKEN'):
            return {'error': 'Unauthorized'}, 401
        return f(*args, **kwargs)
    return decorated

@app.route('/tts', methods=['POST'])
@require_token
def tts():
    # ...
```

## Monitoring

### Logs

Accède aux logs du Space:
- https://huggingface.co/spaces/<username>/<space-name>/logs

### Métriques

Ajoute à `app.py`:

```python
from prometheus_client import Counter, Histogram

requests_total = Counter('requests_total', 'Total requests', ['method', 'endpoint'])
request_duration = Histogram('request_duration_seconds', 'Request duration', ['endpoint'])
```

## Coûts

- **Gratuit**: Un Space gratuit avec ressources limitées (2-4GB RAM, pas de GPU)
- **Libre** (avec GPU): Nécessite un Space payant (~$5-20/mois selon GPU)

## Support

Pour les problèmes:
1. Vérifie les logs: https://huggingface.co/spaces/<username>/<space-name>/logs
2. Consulte la doc: https://huggingface.co/docs/hub/spaces
3. Pose une question: https://discuss.huggingface.co

## Prochaines étapes

1. ✅ Déploie d'abord sur HF Spaces
2. Teste tous les endpoints
3. Collecte du feedback
4. Ajoute des fonctionnalités (streaming, batch processing, etc.)