Choix du modèle
| Modèle | Params | WER (EN) | Vitesse |
|---|---|---|---|
| tiny | 39M | 14% | 32x |
| base | 74M | 10% | 16x |
| small | 244M | 7% | 6x |
| medium | 769M | 5% | 2x |
| large-v3 | 1.5B | 3% | 1x |
Pour la production avec contraintes de latence : small est le meilleur compromis.
Déploiement FastAPI
import whisper
from fastapi import FastAPI, UploadFile
app = FastAPI()
model = whisper.load_model('small').to('cuda')
@app.post('/transcribe')
async def transcribe(audio: UploadFile, language: str = 'ar'):
audio_bytes = await audio.read()
result = model.transcribe(audio_bytes, language=language, fp16=True)
return {'text': result['text'], 'language': result['language']}
Dataset de fine-tuning Darija
J'ai utilisé Mozilla Common Voice Arabic + des enregistrements radio marocains scrapés. Un fine-tuning sur 3 epochs réduit le WER de 32% à 18% sur le darija.