Whisper Fon v4 🎯
Modèle de reconnaissance vocale automatique (ASR) pour la langue Fon, fine-tuné à partir de Whisper Small.
📊 Performances
| Métrique | Valeur | Détails |
|---|---|---|
| WER moyen | 21.99% | Sur 20 échantillons de test |
| Caractères parasites | 0% | Aucun caractère arabe indésirable |
| Transcriptions parfaites | ~45% | WER = 0% |
| Epochs d'entraînement | 4 | Optimal (pas d'overfitting) |
🎯 Cas d'usage
Ce modèle est conçu pour :
- ✅ Transcription automatique de l'audio en langue Fon
- ✅ Sous-titrage de vidéos en Fon
- ✅ Assistants vocaux pour locuteurs Fon
- ✅ Documentation de langues orales
- ✅ Applications d'accessibilité
🚀 Utilisation rapide
Installation
pip install transformers torch torchaudio
Code Python
from transformers import WhisperProcessor, WhisperForConditionalGeneration
import torch
import librosa
# Charger le modèle
model_id = "Ronaldodev/whisper-fon-v4"
processor = WhisperProcessor.from_pretrained(model_id)
model = WhisperForConditionalGeneration.from_pretrained(model_id)
# Charger l'audio (doit être 16kHz)
audio, sr = librosa.load("chemin/vers/audio.wav", sr=16000)
# Préparer l'input
inputs = processor(audio, sampling_rate=16000, return_tensors="pt")
# Générer la transcription
with torch.no_grad():
generated_ids = model.generate(inputs.input_features)
# Décoder
transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(transcription)
Utilisation avec Pipeline
from transformers import pipeline
# Créer le pipeline
pipe = pipeline(
"automatic-speech-recognition",
model="Ronaldodev/whisper-fon-v4",
device=0 # -1 pour CPU, 0 pour GPU
)
# Transcrire
result = pipe("audio.wav")
print(result["text"])
📚 Détails du modèle
Architecture
- Base : Whisper Small (OpenAI)
- Paramètres : 242M
- Langue cible : Fon (langue Gbe parlée au Bénin et Togo)
- Langue de décodage : Français (pour les tokens spéciaux)
Entraînement
- Dataset : 7,732 exemples audio en Fon
- Train : 6,185 échantillons
- Test : 1,547 échantillons
- Durée : ~3h30 sur Tesla P100
- Batch size effectif : 8
- Learning rate : 3e-6
- Optimizer : AdamW
- Mixed precision : FP16
Configuration spéciale
- Tokens arabes bloqués : 0 (aucun token arabe dans le vocabulaire)
- Langue forcée : FR
- Tâche : Transcription
📈 Résultats par epoch
| Epoch | WER | Arabe détecté |
|---|---|---|
| 2 | 27.49% | 0/20 |
| 3 | 25.71% | 0/20 |
| 4 | 21.99% | 0/20 ✅ |
Le modèle à 4 epochs offre le meilleur compromis entre performance et généralisation.
🎤 Exemples de transcriptions
Exemple 1 (WER = 0%)
Audio : [enregistrement Fon]
Référence : "nu gbε do mi e ɖo ganji"
Prédiction : "nu gbε do mi e ɖo ganji"
WER : 0.00% ✅
Exemple 2 (WER = 4.35%)
Audio : [enregistrement Fon]
Référence : "badagla jayi ɔ gba jεn nɔ gba awadakpεkpε..."
Prédiction : "badagla jayi ɔ gba jεn nɔ gba awadakpεkpε..."
WER : 4.35% ✅
⚙️ Configuration recommandée
# Pour de meilleurs résultats
generation_config = {
"language": "fr",
"task": "transcribe",
"max_length": 448,
"num_beams": 1, # Greedy decoding (plus rapide)
"temperature": 0.0
}
generated_ids = model.generate(
inputs.input_features,
**generation_config
)
🔍 Limitations connues
- ⚠️ Performance optimale sur audio propre (peu de bruit de fond)
- ⚠️ Fonctionne mieux sur phrases complètes que sur mots isolés
- ⚠️ Sensible à la qualité d'enregistrement (16kHz recommandé)
- ⚠️ Peut confondre certains homophones
- ⚠️ WER plus élevé (~30-40%) sur accents régionaux non représentés
📊 Benchmark vs autres modèles
| Modèle | WER (Fon) | Notes |
|---|---|---|
| Whisper Small (base) | ~40-50% | Sans fine-tuning |
| Whisper Medium (base) | ~35-45% | Sans fine-tuning |
| Ce modèle | 21.99% | ✅ Fine-tuné sur Fon |
🛠️ Fine-tuning supplémentaire
Ce modèle peut être fine-tuné davantage sur vos propres données :
from transformers import Seq2SeqTrainingArguments, Seq2SeqTrainer
training_args = Seq2SeqTrainingArguments(
output_dir="./whisper-fon-custom",
per_device_train_batch_size=2,
learning_rate=1e-6, # LR plus faible pour fine-tuning
num_train_epochs=2,
fp16=True,
# ... autres paramètres
)
trainer = Seq2SeqTrainer(
model=model,
args=training_args,
# ... vos données
)
trainer.train()
📄 License
Apache 2.0 - Libre d'utilisation pour usages commerciaux et non-commerciaux.
🙏 Remerciements
- OpenAI pour le modèle Whisper de base
- Hugging Face pour l'infrastructure et les outils
- Communauté Fon pour les données audio
📧 Contact
Pour toute question ou collaboration :
- GitHub : [Votre GitHub]
- Email : [Votre email]
- HuggingFace : @Ronaldodev
📝 Citation
Si vous utilisez ce modèle dans vos recherches, veuillez citer :
@misc{whisper-fon-v4,
author = {Ronaldodev},
title = {Whisper Fon v4: Fine-tuned ASR Model for Fon Language},
year = {2025},
publisher = {HuggingFace},
howpublished = {\url{https://huggingface.co/Ronaldodev/whisper-fon-v4}}
}
🔄 Versions
- v4 (actuel) : 4 epochs, WER 21.99%
- v3 : Modèle de base pré-entraîné
- v2 : Expérimentations initiales
- v1 : Premier prototype
🚧 Développements futurs
- Fine-tuning avec plus de données (objectif : WER < 15%)
- Support des accents régionaux
- Modèle quantifié (INT8) pour inference rapide
- API de démonstration en ligne
- Extension à d'autres langues Gbe (Ewe, Gen, etc.)
Dernière mise à jour : 2025-12-07
Status : 🟢 Production-ready
- Downloads last month
- 20
Model tree for Fonika/whisper-fon-v4
Base model
openai/whisper-smallSpace using Fonika/whisper-fon-v4 1
Evaluation results
- Word Error Rate on Fon Audio Datasetself-reported21.990