Whisper permet de transformer un enregistrement en texte sans envoyer le fichier à un service tiers. Ce tutoriel réalise une transcription locale, conserve les horodatages et explique les réglages qui influencent vitesse et qualité.
Prérequis
- Python 3.10 ou plus récent ;
- FFmpeg installé et accessible dans le terminal ;
- quelques gigaoctets libres pour le modèle ;
- un fichier "audio.mp3", "wav" ou "m4a".
Créez un environnement isolé :
~~~bash python -m venv .venv source .venv/bin/activate pip install -U openai-whisper ffmpeg -version ~~~
Sous Windows, activez l’environnement avec ".venv\\Scripts\\activate".
Première transcription
Créez "transcribe.py" :
~~~python import whisper
model = whisper.load_model("small") result = model.transcribe( "audio.mp3", language="fr", task="transcribe", fp16=False, )
print(result["text"].strip()) ~~~
Puis lancez "python transcribe.py". Le premier démarrage télécharge les poids. "fp16=False" évite une erreur fréquente sur CPU ; sur un GPU CUDA compatible, retirez ce paramètre pour profiter de la demi-précision.
Exporter les segments horodatés
Le texte global ne suffit pas pour des sous-titres ou une recherche dans l’audio. Le résultat contient aussi des segments :
~~~python import json import whisper
model = whisper.load_model("small") result = model.transcribe("audio.mp3", language="fr", fp16=False)
segments = [ { "start": round(segment["start"], 2), "end": round(segment["end"], 2), "text": segment["text"].strip(), } for segment in result["segments"] ]
with open("transcription.json", "w", encoding="utf-8") as file: json.dump({"language": result["language"], "segments": segments}, file, ensure_ascii=False, indent=2) ~~~
Choisir le modèle
"tiny" et "base" privilégient la vitesse. "small" est un bon point de départ en français. "medium" et "large" demandent davantage de mémoire mais résistent mieux aux accents, au bruit et au vocabulaire spécialisé. Mesurez sur vos propres fichiers : un modèle plus lourd n’améliore pas forcément un son saturé.
Pour une longue durée, normalisez d’abord le média :
~~~bash ffmpeg -i audio.mp3 -ac 1 -ar 16000 audio-16k.wav ~~~
Vérifier la qualité
Constituez un extrait de référence corrigé manuellement, puis mesurez le taux d’erreur sur les mots. Contrôlez séparément les noms propres, nombres, acronymes et changements de locuteur. Whisper ne réalise pas à lui seul une diarisation fiable : ajoutez un composant spécialisé si vous devez identifier les intervenants.
Passage en production
Ne chargez pas le modèle à chaque requête : initialisez-le au démarrage d’un worker. Limitez la taille des fichiers, vérifiez leur type réel, supprimez les originaux selon votre politique de rétention et placez les traitements longs dans une file de tâches. Surveillez durée audio, temps de calcul, mémoire GPU et taux d’échec.
FAQ
Peut-on forcer le français ?
Oui, avec "language="fr"". Cela évite une détection inutile lorsque la langue est connue.
Whisper fonctionne-t-il en temps réel ?
Le modèle travaille naturellement par fenêtres. Un flux quasi temps réel exige un découpage, un tampon et une stratégie de fusion des segments.