---
language:
- mg
license: agpl-3.0
library_name: transformers
tags:
- whisper
- automatic-speech-recognition
- speech
- speech-recognition
- malagasy
- low-resource
- african-languages
- madagascar
- fine-tuned
- transformers
- pytorch
datasets:
- badrex/malagasy-speech-full
metrics:
- wer
pipeline_tag: automatic-speech-recognition
base_model: openai/whisper-medium
widget:
- example_title: Exemple malagasy
src: https://huggingface.co/Flo976/whisper-malagasy-medium/resolve/main/example.wav
model-index:
- name: whisper-malagasy-medium
results:
- task:
type: automatic-speech-recognition
name: Speech Recognition
dataset:
name: Malagasy Speech Full
type: badrex/malagasy-speech-full
split: validation
metrics:
- type: wer
value: 20.78
name: WER
---
# Whisper Medium — Malagasy (mg)
**Le premier modele Whisper fine-tune pour la transcription du malagasy.**
Fine-tuning de [openai/whisper-medium](https://huggingface.co/openai/whisper-medium) (769M params) sur 149h d'audio malagasy. Developpe dans le cadre du projet [Milo Voice](https://github.com/Flo976/milo), le premier assistant vocal IA en malagasy.
## Resultats
### Benchmark comparatif
| Modele | WER (validation) | Notes |
|--------|-----------------|-------|
| `openai/whisper-medium` (vanilla) | >80% | Sans fine-tuning, le malagasy n'est pas supporte |
| **`Flo976/whisper-malagasy-medium`** | **20.78%** | Fine-tune sur 149h de malagasy |
> Pour une langue low-resource comme le malagasy, un WER de ~21% est un excellent resultat.
> A titre de comparaison, Whisper medium atteint ~15% WER sur l'anglais.
### Courbe d'entrainement
| Step | Epoch | WER | Eval Loss |
|------|-------|-----|-----------|
| 1000 | 0.56 | 25.13% | 0.303 |
| 2000 | 1.13 | 22.21% | 0.261 |
| 3000 | 1.69 | 21.13% | 0.247 |
| 4000 | 2.25 | 20.97% | 0.252 |
| **5000** | **2.82** | **20.78%** | **0.247** |
| 6000 | 3.38 | 21.21% | 0.266 |
| 7000 | 3.95 | 21.10% | 0.270 |
Le meilleur checkpoint est a l'etape 5000 (epoch ~2.8). Au-dela, le modele commence a sur-apprendre (overfitting).
## Utilisation
### Avec Transformers
```python
import torch
from transformers import WhisperForConditionalGeneration, WhisperProcessor
processor = WhisperProcessor.from_pretrained("Flo976/whisper-malagasy-medium")
model = WhisperForConditionalGeneration.from_pretrained(
"Flo976/whisper-malagasy-medium",
torch_dtype=torch.float16,
).to("cuda")
# Transcrire
inputs = processor(audio_array, sampling_rate=16000, return_tensors="pt")
input_features = inputs.input_features.to("cuda", dtype=torch.float16)
with torch.no_grad():
predicted_ids = model.generate(
input_features,
language="mg",
task="transcribe",
max_new_tokens=128,
)
text = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0]
print(text)
```
### Avec pipeline
```python
from transformers import pipeline
pipe = pipeline(
"automatic-speech-recognition",
model="Flo976/whisper-malagasy-medium",
device="cuda:0",
torch_dtype="float16",
)
result = pipe(
"audio.wav",
generate_kwargs={"language": "mg", "task": "transcribe"},
)
print(result["text"])
```
### Inference optimisee (FP16)
Le modele tourne en FP16 sur GPU, ce qui reduit la VRAM de ~3 Go a ~1.5 Go sans perte de qualite mesurable.
## Exemples de transcription
| Audio | Transcription attendue | Transcription du modele |
|-------|----------------------|------------------------|
| Salutation | "Manao ahoana, salama ve?" | "Manao ahoana, salama ve?" |
| Question simple | "Mpilalaika ve? Salama daholo eo." | "Mpilalaika ve? Salama daholo eo." |
| Phrase complexe | "Ny fiainan'ny olona dia miankina amin'ny asa ataony" | "Ny fiainan'ny olona dia miankina amin'ny asa ataony" |
> Ces exemples sont issus du jeu de validation. Les performances varient selon la qualite audio et le dialecte du locuteur.
## Dataset
| Split | Samples | Duree | Source |
|-------|---------|-------|--------|
| **Train** | 28 371 | 149h | [badrex/malagasy-speech-full](https://huggingface.co/datasets/badrex/malagasy-speech-full) |
| **Validation** | 3 099 | - | idem |
| **Test** | 3 101 | - | idem |
- 56 locuteurs uniques
- Audio 16kHz mono
- Transcriptions en malagasy (dialecte plateau / officiel)
- Dataset complet disponible sur HuggingFace : [badrex/malagasy-speech-full](https://huggingface.co/datasets/badrex/malagasy-speech-full)
## Hardware & Configuration d'entrainement
| Parametre | Valeur |
|-----------|--------|
| **GPU** | NVIDIA RTX 5070 Ti (16 Go VRAM) |
| **Temps d'entrainement** | ~12h |
| **Framework** | HuggingFace Transformers 4.47 + PyTorch 2.5 |
| **Seed** | Par defaut (42) |
| Modele de base | `openai/whisper-medium` (769M params) |
| Epochs | 4 (~3.95) |
| Batch size | 8 x 2 (gradient accumulation) = 16 effectif |
| Learning rate | 1e-5 |
| Scheduler | Cosine decay |
| Warmup steps | 500 |
| Optimizer | AdamW |
| Precision | FP16 (mixed precision) |
| Gradient checkpointing | Oui |
| Max steps | 17 740 |
| Eval steps | 1 000 |
| Best checkpoint | Step 5000 (WER 20.78%) |
### Script d'entrainement
```bash
python scripts/03_train.py \
--model openai/whisper-medium \
--dataset badrex/malagasy-speech-full \
--output-dir models/whisper-mg-v1 \
--epochs 10 \
--batch-size 8 \
--grad-accum 2 \
--lr 1e-5 \
--warmup-steps 500 \
--eval-steps 500
```
## Intended Use
### Cas d'usage cibles
- Assistant vocal malagasy ([Milo Voice](https://github.com/Flo976/milo))
- Transcription de reunions / interviews en malagasy
- Sous-titrage automatique de videos malagasy
- Accessibilite pour les locuteurs malagasy
- Recherche linguistique sur le malagasy
### Out-of-Scope
Ce modele **n'est PAS concu pour** :
- **Autres langues** : le modele est specialise pour le malagasy. Pour d'autres langues, utiliser le modele de base `openai/whisper-medium`.
- **Traduction** : le modele transcrit uniquement (speech-to-text malagasy), il ne traduit pas vers le francais ou l'anglais.
- **Identification de locuteur** : aucune capacite de diarisation ou d'identification vocale.
- **Transcription en temps reel** : non optimise pour le streaming, concu pour du traitement par segments (<30s).
- **Audio tres bruite** : les performances se degradent significativement avec du bruit de fond important (chantiers, marches, etc.).
## Limitations
- **Dialectes** : entraine principalement sur le malagasy officiel (dialecte hauts plateaux / Merina). Les performances sur les dialectes cotiers (Betsimisaraka, Sakalava, Antandroy, Antanosy, etc.) ne sont pas evaluees et probablement degradees.
- **Bruit** : les performances se degradent avec du bruit de fond important. Le dataset d'entrainement contient majoritairement de l'audio propre.
- **Phrases longues** : le modele est optimise pour des phrases courtes a moyennes (<30s). Les transcriptions longues peuvent contenir des hallucinations.
- **Longueur max testee** : segments audio de 30 secondes maximum (limitation standard de Whisper).
- **Couverture lexicale** : le vocabulaire est celui de Whisper (51 865 tokens multilingue). Certains termes tres specifiques au malagasy (noms propres regionaux, termes techniques) peuvent etre mal transcrits.
## Considerations ethiques
- **Representativite des locuteurs** : le dataset contient 56 locuteurs. Cela peut ne pas representer la diversite complete des accents et dialectes malagasy (22 millions de locuteurs, 18+ dialectes).
- **Biais dialectal** : le modele est entraine principalement sur le malagasy officiel (hauts plateaux / Merina), ce qui peut defavoriser les locuteurs d'autres regions de Madagascar.
- **Biais de genre** : la repartition hommes/femmes dans le dataset n'est pas documentee. Des biais de performance entre genres sont possibles.
- **Vie privee** : le modele ne stocke aucune donnee audio. Les transcriptions doivent etre traitees dans le respect de la vie privee des locuteurs.
- **Usage responsable** : ce modele ne doit pas etre utilise pour la surveillance, l'identification de personnes, ou toute utilisation qui porterait atteinte aux droits des locuteurs malagasy.
## Demo interactive
Testez le modele directement dans votre navigateur : [Whisper Malagasy Demo](https://huggingface.co/spaces/Flo976/whisper-malagasy-demo)
## Contact
- **Questions, bugs, suggestions** : ouvrez une [Discussion](https://huggingface.co/Flo976/whisper-malagasy-medium/discussions) sur ce repo
- **Projet Milo Voice** : [github.com/Flo976/milo](https://github.com/Flo976/milo)
- **Auteur** : [Flo976](https://huggingface.co/Flo976) — Florent Didelot / [Sooatek](https://sooatek.com)
Les contributions sont les bienvenues, en particulier :
- Retours de locuteurs natifs sur la qualite des transcriptions
- Donnees audio en dialectes cotiers (Betsimisaraka, Sakalava, Antandroy...)
- Benchmarks sur d'autres datasets malagasy
## Citation
```bibtex
@misc{whisper-malagasy-medium-2026,
author = {Florent Didelot},
title = {Whisper Medium fine-tuned for Malagasy Speech Recognition},
year = {2026},
publisher = {HuggingFace},
url = {https://huggingface.co/Flo976/whisper-malagasy-medium}
}
```
## Licence
AGPL-3.0 — voir [LICENSE](https://github.com/Flo976/milo/blob/main/LICENSE)
---
Developpe dans le cadre du projet **[Milo Voice](https://github.com/Flo976/milo)** par [Sooatek](https://sooatek.com).