Transcription audio en direct avec une stack 100% open source
Transcription audio en direct avec une stack 100% open source
Transcrire une réunion pendant qu'elle se déroule — depuis votre laptop, un petit serveur sous le bureau ou un mini-PC sans écran branché sur un micro USB — demandait autrefois un service cloud payant. En 2026, le même workflow tourne entièrement en local avec des modèles open source et quelques paquets Python, sans quota, sans facturation à la minute, sans audio envoyé chez un tiers.
Ce cas d'usage se concentre sur la capture audio en direct depuis un microphone : comptes-rendus de réunion, entretiens, cours, enregistrements podcast, accessibilité pour les personnes malentendantes, journal vocal. La chaîne de traitement est simple — lire l'audio du micro, faire passer la parole par un modèle local de transcription vocale, identifier les locuteurs si besoin, puis éventuellement confier la transcription à un LLM local pour produire un résumé.
- Confidentialité. Ce qui se dit en réunion, en entretien RH, en consultation médicale est sensible. Une chaîne de traitement locale garde l'audio et la transcription sur votre propre matériel, aucun son n'est jamais uploadé.
- Pas de quota à la minute. Les services cloud de transcription facturent à l'heure ou à la minute, avec des limites dures. Un modèle local n'a pas de plafond ; un cours de 4 heures coûte le même prix qu'une réunion de 10 minutes.
- Fonctionne hors ligne. Dans un avion, chez un client, dans un train de campagne — tant que la machine tourne, la transcription tourne. Pas de « pas d'internet, pas de service ».
- Aucune publicité, jamais. Les services IA cloud commencent à expérimenter la publicité intégrée aux réponses et le profilage des requêtes à des fins de ciblage. Une transcription locale contient uniquement ce qui a été dit — rien d'injecté, rien de journalisé pour les régies publicitaires.
Outils recommandés en 2026
Pour un cas d'usage piloté par microphone, la recommandation pratique est Faster-Whisper. C'est une réimplémentation open source du modèle Whisper d'OpenAI, réalisée par Guillaume Klein (auteur du moteur d'inférence CTranslate2) pour apporter une accélération d'un facteur 4 à 5 et une empreinte mémoire bien plus faible, sans changer la qualité des transcriptions.
| Modèle | Paramètres | Langues | Licence | Idéal pour |
|---|---|---|---|---|
| Faster-Whisper (large-v3) | 1,5 B | 100+ | MIT | Valeur sûre multilingue |
| Faster-Whisper (distil-large-v3) | 756 M | 100+ | MIT | Latence plus basse, précision quasi identique |
| Moonshine (Moonshine IA) | 245 M | 8 (EN, FR…) | MIT (EN) | Ultra-léger, streaming temps réel, peu de RAM |
| Parakeet V3 (NVIDIA) | 600 M | Anglais+ | Apache 2.0 | Très bonne précision EN |
| Qwen3-ASR (Alibaba) | variable | multilingue | Apache 2.0 | Alternative récente |
| Gemma 4 e2b / e4b (Ollama) | 2,3-4,5 B | multilingue | 100% Ollama, pas de Python |
Si vous voulez éviter l'installation de Python et passer par Ollama de bout en bout, les variantes gemma4:e2b (6,5 Go) et gemma4:e4b (8,8 Go) de Google acceptent l'audio en entrée nativement — mais uniquement en mode fichier : la version 100% Ollama ne fonctionne pas en live streaming. Gemma 4 transcrit un enregistrement déjà complet (MP3, WAV…) envoyé en une seule requête, mais elle ne peut pas écouter le micro et produire la transcription au fil de l'eau. Le support du streaming temps réel n'est pas encore au programme d'Ollama, mais le rapprochement des modèles multimodaux et des API de type temps réel laisse penser qu'un futur support arrive — pour du live dès aujourd'hui, restez sur Faster-Whisper ou Moonshine (cf. la suite de l'article).
Pour le français spécifiquement, Faster-Whisper large-v3 reste la valeur sûre en 2026. Moonshine est le bon choix si vous avez besoin de vrai streaming, c'est-à-dire d'un modèle qui sort la transcription au fil de l'eau (mot par mot ou phrase par phrase, en moins d'une seconde de latence), plutôt que d'attendre la fin d'un bloc de 5 secondes avant d'afficher quoi que ce soit. Concrètement, Moonshine brille dans trois cas :
- Sous-titrage en direct d'une visio ou d'une présentation : vous voulez que le texte s'affiche à l'écran pendant que quelqu'un parle, sans décalage perceptible.
- Dictée vocale interactive : vous dictez et le texte apparaît dans votre éditeur de texte en temps réel, comme dans un outil de dictée professionnelle.
- Accessibilité pour personne malentendante : la transcription doit suivre la parole à la vitesse de la conversation, sinon elle perd son utilité.
Dans ces trois cas, Moonshine consomme aussi très peu de RAM (245 M de paramètres, tient sur un laptop avec 8 Go), là où Faster-Whisper large-v3 demande 3 à 4 Go de RAM à lui seul.
Configuration de votre machine pour transcrire du micro au texte en 15 minutes
Le chemin le plus court vers un outil de transcription live fonctionnel est Faster-Whisper alimenté par le microphone système.
Prérequis
Il vous faut Python 3.9 ou plus récent installé sur votre machine. Si ce n'est pas encore le cas, récupérez-le depuis la page de téléchargement officielle : python.org/downloads. Sur GNU/Linux il est généralement déjà présent ; sur macOS et Windows suivez l'installateur.
Il vous faut aussi un dossier de travail dédié pour garder le projet isolé. Tout le tutoriel suppose que vous créez un dossier spécifique et que vous exécutez chaque commande depuis l'intérieur de celui-ci.
Côté espace disque, prévoyez les téléchargements suivants :
| Élément | Taille téléchargée | Une fois installé |
|---|---|---|
| Python 3.9+ | ~25 Mo | ~100 Mo |
| faster-whisper + CTranslate2 + dépendances pip | ~150 Mo | ~500 Mo |
| Modèle Whisper large-v3 | ~3 Go | ~3 Go (cache ~/.cache/huggingface) |
| Modèle Whisper distil-large-v3 (option) | ~1,5 Go | ~1,5 Go |
| sounddevice + soundfile + numpy | ~5 Mo | ~40 Mo |
Au total, comptez environ 4 Go de disque pour le setup complet avec large-v3 (2,5 Go si vous partez sur distil-large-v3), et prévoyez 3 à 4 Go de RAM libres au moment de la transcription — 6 à 8 Go si la transcription tourne sur CPU seul. L'accélération CUDA requiert un GPU NVIDIA avec les bibliothèques cuDNN et cuBLAS (déjà présentes avec vos drivers) ; sans carte NVIDIA, le script basculera automatiquement sur le CPU et fonctionnera quand même (voir la section « Sans GPU NVIDIA » plus bas).
Créer un environnement Python isolé
Une fois dans votre dossier de travail, créez un environnement virtuel pour que les paquets installés n'aillent pas polluer le reste de votre système :
python3 -m venv venv
source venv/bin/activate
À partir de là, chaque pip install que vous lancez reste cantonné à ce dossier. Relancez source venv/bin/activate à chaque nouvelle ouverture de terminal quand vous voulez revenir au projet.
Installer les dépendances
# Faster-Whisper pour la transcription
pip install faster-whisper
# sounddevice + soundfile pour l'I/O micro
pip install sounddevice soundfile numpy
Script minimal de transcription live
Le script complet est prêt à l'emploi et téléchargeable ici : transcript-audio.py. Il gère la détection CUDA/CPU, les barres de progression et n'affiche que la transcription. Enregistrez-le dans votre dossier de travail puis lancez-le après avoir installé les dépendances :
python transcript-audio.py
La logique tient en trois points :
- Le modèle est chargé une seule fois, avec détection automatique du device (
ctranslate2.get_cuda_device_count(): CUDA en float16 si un GPU NVIDIA est utilisable, sinon CPU en int8). - Un
InputStreamdesounddevicealimente un callback avec des blocs de 5 secondes d'audio float32 mono 16 kHz. - Chaque bloc est passé à
model.transcribe()avecvad_filter=True(détection d'activité vocale : le silence est ignoré, ce qui améliore la précision et divise le calcul par deux environ) et les segments détectés sont affichés au fil de l'eau.
Pour cibler un microphone précis (un micro de conférence USB plutôt que le micro intégré), listez les devices avec python -m sounddevice et passez l'index :
sd.InputStream(device=2, ...)
Si vous avez besoin de la diarization (identifier qui a dit quoi), l'option de référence est WhisperX couplé à pyannote-audio — voir leur documentation pour le setup.
Sans GPU NVIDIA : Whisper tourne très bien autrement
Le script ci-dessus ne requiert pas CUDA : c'est le moteur d'inférence qui décide des accélérateurs disponibles, et Faster-Whisper (basé sur CTranslate2) retombe automatiquement sur le CPU avec la quantization int8 quand aucun GPU NVIDIA n'est détecté — la transcription fonctionne alors partout, juste plus lentement. Mais CPU n'est pas la seule option hors CUDA :
| Moteur | Accélérateurs supportés | Plateformes | À retenir |
|---|---|---|---|
| Faster-Whisper (CTranslate2) | CUDA, CPU | GNU/Linux, macOS, Windows | Le plus simple (pip), fallback CPU int8 automatique |
| whisper.cpp | Vulkan, ROCm (AMD), Metal (Apple), SYCL (Intel), CPU | Quasi universel | Binaire autonome, idéal GPU AMD/Intel sans CUDA |
| mlx-whisper | Metal (GPU Apple) | Apple Silicon uniquement | Le plus rapide sur Mac, écosystème MLX |
| whisper-jax | TPUs, CPU | Google Cloud / JAX | Réservé aux infrastructures TPU |
Le choix pratique : Faster-Whisper si vous avez un GPU NVIDIA ou un CPU correct (laptop récent), whisper.cpp si vous voulez exploiter un GPU AMD via ROCm ou Vulkan, un iGPU Intel via SYCL, ou simplement un binaire sans écosystème Python. Sur Apple Silicon, mlx-whisper exploite la mémoire unifiée et reste la référence. Notez que Moonshine (recommandé plus haut pour le vrai streaming) s'exécute sur CPU grâce à ONNX Runtime, qui supporte aussi CUDA, TensorRT, CoreML et DirectML — donc sans NVIDIA, la stack de référence reste viable.
Exigences matérielles (2026)
| Configuration | Ce qui tourne confortablement |
|---|---|
| CPU seul, 8 Go RAM | Whisper tiny/base, Moonshine, pas de LLM en parallèle |
| CPU + 16 Go RAM | Faster-Whisper small/medium, lent mais fonctionnel |
| GPU 6 Go VRAM (RTX 3060) | Faster-Whisper large-v3, Parakeet, LLM 7B Q4 en parallèle |
| GPU 8-12 Go VRAM (RTX 4070) | Tout ce qui précède, plus les modèles 12B |
| Apple Silicon 16 Go+ | Whisper large-v3 via mlx-whisper, Moonshine, LLM 7B en parallèle |
Le microphone lui-même compte plus qu'on ne le pense. Un micro USB cardioïde (Blue Yeti, Røde NT-USB Mini, Elgato Wave:1) donne un signal propre. Le micro intégré du laptop capte le ventilateur et le clavier et la précision de transcription baisse sensiblement.
Astuces spécifiques au microphone
Quelques leçons pratiques qui sautent aux yeux la première fois qu'on transcrit une réunion :
- Utilisez un casque ou un micro USB courte portée. Un micro à 50 cm du locuteur donne une bien meilleure précision de transcription que le micro intégré du laptop à 1 m sur le bureau.
- Activez la détection d'activité vocale.
vad_filter=Truedans Faster-Whisper saute les segments non parlés, donc le modèle ne voit que de vrais mots. Ça réduit aussi le calcul de moitié sur une réunion typique. - Débruitez si besoin. RNNoise (
pip install rnnoise) est un petit pré-filtre qui enlève le souffle et le bruit de ventilateur. Faites-le tourner sur le buffer audio avant de le passer à Whisper et la précision grimpe encore d'un cran sur les enregistrements bruités. - Alignez la fréquence d'échantillonnage. Whisper attend du PCM mono 16 kHz. La plupart des micros sont par défaut à 44,1 ou 48 kHz ; rééchantillonnez en NumPy avant d'appeler
transcribe. - Fixez la langue explicitement. Passez
language="fr"(ou"en") au lieu de laisser Whisper auto-détecter. L'auto-détection mange de la latence sur le premier chunk ; épingler la langue sauve un battement à chaque bloc. - La taille de chunk est un bouton de latence. Des blocs de 3 secondes donnent du quasi temps réel. Des blocs de 5 secondes sont plus précis. Des blocs de 10 secondes maximisent la précision mais introduisent un délai notable. Commencez à 5 et ajustez.
Le verdict
La transcription audio live depuis un microphone est un des cas d'usage où l'IA locale est strictement meilleure que l'équivalent cloud. Faster-Whisper sur un seul GPU donne de la transcription temps réel en français et en anglais avec la même précision qu'une API commerciale, pyannote gère la partie « qui a dit quoi » et un petit LLM local transforme la transcription en notes de réunion structurées. Toute la stack est MIT ou Apache, tient sur un laptop de milieu de gamme et garde l'audio — qui contient souvent le contenu le plus sensible de votre activité — sur du matériel que vous contrôlez.
Pour un test ponctuel, la configuration en 15 minutes ci-dessus suffit. Pour un vrai workflow qui tourne chaque semaine, installez le script live comme service systemd sur un mini-PC toujours allumé, pointez-le sur un micro USB sur votre bureau et passez le log Markdown à un LLM local à la fin de chaque réunion.