Whisper Medium — Malagasy (mg)
Le premier modele Whisper fine-tune pour la transcription du malagasy.
Fine-tuning de openai/whisper-medium (769M params) sur 149h d'audio malagasy. Developpe dans le cadre du projet Milo Voice, 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
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
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 |
| 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
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
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)
- 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
Contact
- Questions, bugs, suggestions : ouvrez une Discussion sur ce repo
- Projet Milo Voice : github.com/Flo976/milo
- Auteur : Flo976 — Florent Didelot / Sooatek
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
@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
Developpe dans le cadre du projet Milo Voice par Sooatek.
- Downloads last month
- 105
Model tree for Flo976/whisper-malagasy-medium
Base model
openai/whisper-mediumDataset used to train Flo976/whisper-malagasy-medium
Space using Flo976/whisper-malagasy-medium 1
Evaluation results
- WER on Malagasy Speech Fullvalidation set self-reported20.780