L'auto-hébergement de Whisper permet de conserver les transcriptions sur du matériel que vous contrôlez, mais « local » ne signifie pas « automatiquement privé ». Une configuration fiable comporte quatre parties : une implémentation Whisper adaptée, des fichiers de modèle téléchargés, un pipeline audio reproductible et une frontière de sécurité couvrant les fichiers temporaires, les journaux, les sauvegardes et toute API locale que vous exposez.
Ce guide vous présente trois options actuelles : le package Python de référence d'OpenAI, faster-whisper pour une inférence Python optimisée et whisper.cpp pour un déploiement léger en C/C++. Les commandes et les conseils relatifs aux modèles ci-dessous ont été vérifiés par rapport à la documentation officielle des projets le 28 août 2026.
Recommandation rapide
- Commencez par OpenAI Whisper si vous souhaitez l'implémentation de référence et l'interface en ligne de commande officielle la plus simple.
- Choisissez faster-whisper si vous avez besoin d'un service Python, du traitement par lots, de la quantification ou d'une détection d'activité vocale intégrée.
- Choisissez whisper.cpp si vous souhaitez une compilation native compacte, la prise en charge d'Apple Silicon, un déploiement axé sur le processeur, une image Docker officielle ou un petit serveur HTTP local.
Ce que signifie — et ne signifie pas — l'auto-hébergement de Whisper
Whisper est un modèle de reconnaissance vocale et une base de code open source. Lorsque vous exécutez une implémentation sur votre propre ordinateur, l'étape d'inférence peut s'effectuer sans envoyer l'enregistrement à une API de transcription hébergée. Une fois les packages et les ressources du modèle requis présents, la transcription peut également s'exécuter sans connexion Internet active.
C'est une frontière de confidentialité utile, pas un programme de sécurité complet. L'inférence locale ne sécurise pas automatiquement les fichiers temporaires, l'historique des commandes, les journaux de l'application, les transcriptions exportées, les sauvegardes du système d'exploitation, les dossiers partagés ou un service écoutant sur un port réseau. Les installateurs de modèles peuvent également télécharger les poids la première fois qu'un nom de modèle est demandé.
Avant de qualifier un flux de travail d'« hors ligne », testez-le avec le réseau désactivé et confirmez que :
- l'application démarre sans tenter de récupérer un package ou un modèle ;
- le modèle sélectionné se charge depuis un chemin local connu ;
- l'audio d'entrée et le texte généré restent dans des répertoires approuvés ;
- les fichiers temporaires sont supprimés conformément à votre politique de conservation ; et
- aucun serveur HTTP n'est accessible au-delà de l'interface que vous aviez prévue.
Choisissez l'implémentation avant de choisir un modèle
Les trois options exécutent des modèles de la famille Whisper, mais elles n'ont pas des dépendances, des noms de commandes, des formats de modèle ou des caractéristiques de performance identiques. Choisissez l'environnement d'exécution qui correspond à votre environnement d'exploitation plutôt que de copier une commande écrite pour une autre implémentation.
| Implémentation | Meilleure correspondance | Modèle de dépendance principale | Frontière importante |
|---|---|---|---|
| OpenAI Whisper | CLI de référence et API Python | Python, PyTorch, FFmpeg | Choisissez la bonne version PyTorch CPU/CUDA |
| faster-whisper | Services Python optimisés, traitement par lots, INT8, VAD | Python et CTranslate2 | Les exigences des bibliothèques GPU varient selon la version installée |
| whisper.cpp | Compilations natives CPU/Apple, quantification, Docker, serveur local | CMake et un compilateur pris en charge | Utilise des fichiers de modèle GGML convertis et des noms de CLI différents |
Choisissez un modèle et dimensionnez le matériel
OpenAI répertorie actuellement six tailles de modèles. Son README donne les besoins approximatifs en VRAM et la vitesse relative mesurée sur un GPU de référence spécifique. Ces chiffres sont utiles pour le tri, pas des garanties : la mémoire et la vitesse réelles dépendent de l'implémentation, de la précision, de la taille du lot, de la taille du faisceau, de la langue, de la durée de l'audio et du matériel.
| Nom officiel du modèle | Paramètres | VRAM approx. dans le tableau d'OpenAI | Point de départ pratique |
|---|---|---|---|
| tiny | 39 M | ~1 Go | Pilote rapide ou appareil aux ressources limitées |
| base | 74 M | ~1 Go | Transcription légère en anglais ou multilingue |
| small | 244 M | ~2 Go | Pilote équilibré sur CPU ou GPU modeste |
| medium | 769 M | ~5 Go | Travail multilingue de plus haute précision |
| large | 1 550 M | ~10 Go | Capacité maximale du modèle de référence lorsque le matériel le permet |
| turbo | 809 M | ~6 Go | Transcription rapide, mais pas de traduction |
Le tableau d'OpenAI décrit turbo comme ayant environ huit fois la vitesse de référence de large dans sa comparaison de test. Ne convertissez pas cela en une promesse d'être « huit fois plus rapide sur tous les ordinateurs ». Turbo n'est pas entraîné pour la traduction. Si la tâche consiste à traduire un discours non anglais en anglais, OpenAI recommande plutôt un modèle multilingue tel que medium ou large.
Pour les enregistrements uniquement en anglais, les variantes .en de tiny, base, small et medium peuvent valoir la peine d'être testées. Pour le dimensionnement en production, exécutez le même fichier représentatif sur deux modèles candidats et enregistrez la mémoire de pointe, le temps réel, les erreurs de transcription et le temps de correction.
Préparer le système et un fichier de test propre
Créez un répertoire de projet et un environnement virtuel dédiés afin que les versions des packages soient visibles et réversibles. Si vous utilisez l'implémentation Python d'OpenAI avec un GPU, sélectionnez la commande PyTorch actuelle pour votre système d'exploitation et votre configuration CUDA depuis l' installateur officiel de PyTorch. Évitez de copier une ancienne URL de roue CUDA provenant d'un tutoriel.
OpenAI Whisper nécessite l'outil en ligne de commande FFmpeg. Installez-le via un gestionnaire de packages pris en charge ou la page de téléchargement officielle de FFmpeg, puis vérifiez :
ffmpeg -version
python --version
FFmpeg n'est pas une dépendance obligatoire universelle pour chaque implémentation de Whisper. Par exemple, whisper.cpp peut décoder les entrées prises en charge via ses propres outils d'exemple, tandis que l'intégration optionnelle de FFmpeg élargit la prise en charge des formats. Pour créer un fichier de test WAV mono 16 bits à 16 kHz prévisible pour whisper.cpp, utilisez :
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
Utilisez un échantillon court et consenti contenant un nom, un numéro, deux locuteurs, un silence et un terme spécifique à un domaine. Ce seul échantillon révélera plus de problèmes de déploiement qu'un clip de démonstration parfaitement propre.
Option 1 : Installer OpenAI Whisper
Ouvrez un terminal dans votre répertoire de projet, créez un environnement virtuel, activez-le et installez le package actuel :
python -m venv .venv
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
# macOS ou Linux
source .venv/bin/activate
pip install -U openai-whisper
Exécutez la première transcription avec l'interface en ligne de commande officielle :
whisper audio.mp3 --model turbo
La première exécution peut télécharger le modèle sélectionné. Une fois terminée, vérifiez que les fichiers de sortie attendus ont été créés et lisez plusieurs horodatages par rapport à l'audio source. Pour la transcription dans la même langue que l'audio non anglais, spécifiez la langue si la détection automatique n'est pas fiable :
whisper japanese.wav --language Japanese --model turbo
Pour la traduction en anglais, n'utilisez pas turbo :
whisper japanese.wav --model medium --language Japanese --task translate
Un appel Python minimal est tout aussi direct :
import whisper
model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")
print(result["text"])
Option 2 : Installer faster-whisper
faster-whisper exécute les modèles Whisper via CTranslate2. Il est utile lorsque vous souhaitez une intégration Python avec une précision configurable, du traitement par lots, des horodatages de mots ou un filtrage VAD intégré.
python -m venv .venv
source .venv/bin/activate # Windows : .\.venv\Scripts\Activate.ps1
pip install faster-whisper
Commencez par un appareil et un type de calcul explicites plutôt que de supposer un chemin GPU :
from faster_whisper import WhisperModel
model = WhisperModel("small", device="cpu", compute_type="int8")
segments, info = model.transcribe(
"audio.mp3",
beam_size=5,
vad_filter=True,
)
print("Langue détectée :", info.language)
for segment in segments:
print(f"[{segment.start:.2f} - {segment.end:.2f}] {segment.text}")
Les segments retournés sont générés paresseusement, alors itérez sur eux pour effectuer la transcription. Sur un déploiement NVIDIA, suivez les exigences de la bibliothèque GPU du dépôt faster-whisper actuel et vérifiez les versions installées plutôt que de vous fier à une ancienne combinaison CUDA/CUDNN provenant d'un blog.
Les benchmarks ont besoin de leurs conditions. Le projet faster-whisper rapporte actuellement un exemple où large-v2 avec INT8 a utilisé 2 926 Mo sur un RTX 3070 Ti 8 Go, avec une taille de faisceau de 5 et la pile logicielle indiquée du dépôt. Ce résultat démontre une configuration testée ; ce n'est pas une promesse que chaque modèle, GPU, taille de lot ou fichier audio utilisera la même mémoire.
Option 3 : Compiler whisper.cpp
Le projet actuel se trouve sous ggml-org/whisper.cpp et utilise CMake dans son guide de démarrage rapide documenté. Clonez le dépôt, téléchargez un modèle converti et compilez l'interface en ligne de commande :
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
sh ./models/download-ggml-model.sh base.en
cmake -B build
cmake --build build -j --config Release
Exécutez une transcription avec un chemin de modèle explicite :
./build/bin/whisper-cli \
--model models/ggml-base.en.bin \
--file output.wav
Sur Windows, l'exécutable peut se trouver dans un dossier spécifique à la configuration tel que build\bin\Release. Utilisez whisper-cli --help à partir du résultat de compilation réel pour confirmer les drapeaux de votre version.
whisper.cpp prend également en charge les modèles GGML quantifiés, qui peuvent réduire l'utilisation de la mémoire et du disque. La quantification peut changer la qualité et la vitesse, alors comparez un candidat quantifié à son homologue non quantifié sur votre propre échantillon avant de le standardiser.
Préparer un déploiement isolé
Un système isolé ne peut pas récupérer de roues Python manquantes, de bibliothèques GPU, de poids de modèle, d'actifs VAD ou de couches de conteneur. Créez d'abord un manifeste complet sur une machine de préproduction connectée.
- Enregistrez le système d'exploitation, l'architecture CPU, le modèle GPU, la version du pilote et la version de Python.
- Téléchargez les packages exacts, les fichiers de modèle, le modèle VAD optionnel et leurs sommes de contrôle.
- Transférez les actifs via le processus approuvé de votre organisation.
- Installez à partir de chemins locaux et configurez un répertoire de modèle local explicite.
- Déconnectez le réseau avant le test d'acceptation.
- Transcrivez l'échantillon, confirmez les sorties et surveillez les tentatives de connexion échouées.
Ne supposez pas qu'une première exécution en ligne réussie prouve un déploiement hors ligne. Elle a pu remplir un cache spécifique à l'utilisateur qui n'existera pas sous un compte de service ou dans un nouveau conteneur. Testez en utilisant la même identité, les mêmes répertoires et la même méthode de lancement que la production utilisera.
Exécuter une API locale ou un service Docker en toute sécurité
whisper.cpp inclut whisper-server, un serveur HTTP avec une route de transcription de type OpenAI. Compilez d'abord le projet, puis inspectez les options actuelles du serveur :
./build/bin/whisper-server --help
./build/bin/whisper-server \
--host 127.0.0.1 \
--port 8080 \
--model models/ggml-base.en.bin
Liez le service à localhost à moins qu'une autre machine n'ait réellement besoin d'accès. La documentation de Docker avertit que les ports publiés peuvent être accessibles en dehors de l'hôte lorsqu'ils sont liés largement. Si vous exposez intentionnellement la transcription sur un LAN, ajoutez l'authentification, le TLS, les limites de taille de requête, les délais d'attente, l'isolation des téléchargements et une politique de conservation ; un processus local n'est pas une couche de contrôle d'accès.
Le projet whisper.cpp publie également des images Docker du projet. Persistez le répertoire du modèle afin qu'un conteneur recréé ne télécharge pas à nouveau les actifs :
docker run --rm \
-v /absolute/path/models:/models \
-v /absolute/path/audio:/audios \
ghcr.io/ggml-org/whisper.cpp:main \
"whisper-cli -m /models/ggml-base.en.bin -f /audios/output.wav"
Épinglez un digest d'image ou une version testée pour la production. Traitez les wrappers communautaires comme des projets distincts : vérifiez leur dépôt, leur schéma d'API, l'éditeur d'image, leur licence, leur fréquence de mise à jour et leurs paramètres réseau par défaut au lieu de les présenter comme des services officiels d'OpenAI.
Utiliser le VAD sans masquer la parole réelle
Les longues sections sans parole peuvent produire des résultats indésirables lors d'une transcription automatisée. La détection d'activité vocale peut ignorer les régions classées comme silencieuses ou sans parole avant le décodage, réduisant ainsi le travail inutile et certaines erreurs liées au silence. Elle ne peut pas garantir la disparition de toutes les hallucinations, et des seuils trop agressifs peuvent supprimer des mots prononcés à voix basse.
faster-whisper expose Silero VAD via vad_filter=True. Commencez par les paramètres par défaut du projet, puis testez les pauses, les voix faibles, la musique et les enregistrements bruyants avant de modifier les paramètres.
La documentation actuelle de whisper.cpp fournit un modèle Silero téléchargeable et des drapeaux VAD explicites :
./models/download-vad-model.sh silero-v6.2.0
./build/bin/whisper-cli \
--file output.wav \
--model models/ggml-base.en.bin \
--vad \
--vad-model models/ggml-silero-v6.2.0.bin
Examinez les points de coupure par rapport à la forme d'onde. Si la première syllabe après une pause disparaît, réduisez l'agressivité ou ajoutez une marge autour de la parole détectée plutôt que d'accepter une transcription d'apparence plus propre mais incomplète.
Valider les résultats, les horodatages et la qualité
Une commande qui se termine avec succès ne suffit pas. Conservez l'audio source brut et examinez la transcription avec une petite liste de contrôle d'acceptation :
- Complétude : Les premiers et derniers mots sont-ils présents ? Des phrases faibles ont-elles été coupées ?
- Noms et nombres : Vérifiez les personnes, les produits, les dates, les mesures et les montants.
- Langue : Confirmez la langue détectée et si la tâche était de transcrire ou de traduire.
- Horodatages : Allez à plusieurs limites de segments et vérifiez l'alignement.
- Comportement du silence : Inspectez les longues pauses pour des phrases répétées ou inventées.
- Reproductibilité : Enregistrez la version de l'implémentation, le modèle, la précision, les drapeaux, le matériel et l'environnement d'exécution.
Pour les sous-titres, définissez une politique de longueur de ligne et inspectez le fichier SRT ou VTT final dans un lecteur. Pour des notes consultables, conservez les horodatages ou les identifiants de segments afin qu'un réviseur puisse revenir à l'audio. Pour le matériel sensible, séparez l'enregistrement source immuable du texte généré et appliquez une période de conservation définie aux deux.
Si vous construisez un flux de capture hors ligne vers la transcription, consultez également comment fonctionne le traitement IA en périphérie hors ligne et la comparaison des enregistreurs vocaux IA hors ligne.
Dépanner les échecs courants
| Symptôme | Vérification probable | Action suivante |
|---|---|---|
| FFmpeg introuvable | L'exécutable est manquant ou n'est pas dans le PATH | Exécutez ffmpeg -version dans le même shell et corrigez le PATH |
| CUDA est indisponible | PyTorch uniquement CPU ou bibliothèques GPU incompatibles | Utilisez le sélecteur PyTorch en direct et les exigences GPU spécifiques au projet |
| Erreur de mémoire insuffisante | Le modèle, la précision, le batch ou les tâches concurrentes dépassent la mémoire | Essayez un modèle plus petit, une taille de batch inférieure ou un type de calcul quantifié pris en charge |
| whisper.cpp rejette l'audio | Format non pris en charge pour l'exemple compilé | Convertissez en WAV mono 16 bits 16 kHz ou compilez un support de décodage plus large |
| Texte répété dans le silence | Le non-parole a atteint le décodeur | Testez le VAD, examinez les points de coupure et comparez les paramètres du modèle/décodage |
| La traduction renvoie la langue source | Turbo a été utilisé pour une tâche de traduction | Utilisez un modèle multilingue tel que medium ou large avec --task translate
|
| Le démarrage hors ligne tente de télécharger | Un modèle, une roue, un actif VAD ou une couche de conteneur est manquant | Complétez le manifeste des actifs et testez sous l'identité de production |
Questions fréquemment posées
Whisper peut-il fonctionner complètement hors ligne ?
Oui, l'inférence peut fonctionner sans connexion Internet après que les logiciels et les actifs de modèle requis sont stockés localement. Prouvez la limite en testant avec le réseau désactivé et en vérifiant les téléchargements manquants, les fichiers temporaires, les journaux et les services exposés.
Quelle implémentation de Whisper dois-je héberger moi-même ?
Utilisez OpenAI Whisper pour le CLI Python de référence, faster-whisper pour un service Python optimisé avec quantification ou VAD, et whisper.cpp pour une compilation native, des modèles GGML quantifiés, un déploiement Apple/CPU, Docker, ou son serveur local inclus.
Whisper nécessite-t-il FFmpeg ?
L'implémentation Python d'OpenAI nécessite l'outil en ligne de commande FFmpeg. Cela ne rend pas FFmpeg obligatoire pour chaque implémentation : whisper.cpp a son propre chemin de décodage pris en charge et une intégration FFmpeg optionnelle pour des formats plus larges.
De quelle VRAM le modèle turbo a-t-il besoin ?
Le tableau de modèles d'OpenAI indique environ 6 Go pour turbo. Traitez cela comme une estimation de planification pour l'implémentation de référence ; l'utilisation réelle change avec l'environnement d'exécution, la précision, la taille de batch, le matériel et les charges de travail concurrentes.
Le modèle turbo peut-il traduire la parole en anglais ?
Non. OpenAI indique que turbo n'est pas entraîné pour la traduction. Utilisez un modèle multilingue tel que medium ou large lors de la traduction de la parole non anglaise en anglais.
Le VAD empêche-t-il toutes les hallucinations de Whisper ?
Non. Le VAD peut réduire la non-parole envoyée au modèle et peut réduire les résultats liés au silence, mais il peut également supprimer la parole faible si configuré trop agressivement. Validez les seuils et les limites de segments sur un audio représentatif.
Une API Whisper locale est-elle privée par défaut ?
Non. Le traitement local évite une API de transcription hébergée, mais le service a toujours besoin d'une liaison d'interface, d'authentification lorsqu'il est partagé, d'un transport chiffré le cas échéant, d'un isolement d'upload, de contrôles de journalisation et d'une politique de conservation.
Sources officielles vérifiées le 28 août 2026

0 commentaire