Retour au Blog
NLP 12 janvier 2025 8 min de lecture

Speech-to-Text en production avec Whisper : support du dialecte arabe marocain

Déployer OpenAI Whisper pour la transcription multilingue — sélection du modèle, optimisations.

Choix du modèle

ModèleParamsWER (EN)Vitesse
tiny39M14%32x
base74M10%16x
small244M7%6x
medium769M5%2x
large-v31.5B3%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.

WhisperSpeech-to-TextArabicMoroccan DarijaAudio
O

Ossama Elhakki

Ingénieur IA & Systèmes ML — Maroc