Pourquoi auto-héberger Whisper sur un VPS
Les API de transcription cloud facturent à la minute d'audio et imposent l'envoi de vos enregistrements sur des serveurs externes — un problème dès qu'il s'agit de réunions confidentielles, d'entretiens RH ou de données médicales. Auto-héberger Whisper sur un VPS vous donne un endpoint de transcription privé, disponible 24/7, qui traite vos fichiers localement. Avec l'implémentation faster-whisper (basée sur CTranslate2), vous obtenez des transcriptions jusqu'à 4 fois plus rapides que l'implémentation d'origine, même sur CPU. Vous choisissez la taille du modèle (tiny à large-v3) selon le compromis vitesse/précision dont vous avez besoin, et vous branchez le tout sur vos propres applications via une API REST.
Les bénéfices concrets de l'auto-hébergement
- Confidentialité : vos audios sensibles ne quittent jamais votre VPS.
- Transcription multilingue et traduction vers l'anglais incluses dans le même modèle.
- Horodatage au mot ou au segment, idéal pour générer des sous-titres SRT/VTT.
- Aucune limite de durée par fichier, contrairement aux API en ligne.
- Coût fixe au lieu d'une facturation à la minute d'audio transcrit.
- Intégration via API REST dans vos outils internes (CRM, podcast, support client).
Prérequis matériels et logiciels
Whisper est gourmand surtout en RAM et en calcul. Sur CPU, le modèle base ou small tourne confortablement avec 4 Go de RAM et 2 vCPU ; le modèle large-v3 réclame plutôt 8 à 10 Go de RAM et 4 vCPU pour rester utilisable. Un VPS GPU (6 Go de VRAM) accélère énormément large-v3. Prévoyez quelques Go de disque pour les poids (le large-v3 pèse ~3 Go) et un espace temporaire pour les fichiers audio uploadés. Côté logiciel : Ubuntu 22.04, Docker, ffmpeg (indispensable pour décoder les formats audio), et un sous-domaine type whisper.mondomaine.ma.
Déploiement pas à pas
Préparer l'environnement
En SSH, installez Docker et vérifiez la présence de ffmpeg (apt install ffmpeg). Créez un dossier whisper/ qui contiendra votre docker-compose.yml et un volume ./audio pour les fichiers à traiter.
Choisir une image avec API
Utilisez une image exposant directement une API REST, par exemple onerahmet/openai-whisper-asr-webservice. Dans le compose, définissez ASR_ENGINE=faster_whisper et ASR_MODEL=small (ajustez selon votre RAM), et mappez le port 9000.
Lancer le service
Démarrez avec docker compose up -d. Au premier appel, le conteneur télécharge automatiquement les poids du modèle ; montez un volume sur /root/.cache pour ne pas le retélécharger à chaque redémarrage.
Tester la transcription
Envoyez un fichier en local : curl -F "audio_file=@reunion.mp3" "http://localhost:9000/asr?output=txt". Vous devez récupérer la transcription en quelques secondes à quelques minutes selon le modèle.
Exposer en HTTPS avec authentification
Placez Caddy ou Nginx devant le port 9000, avec une authentification (clé API en en-tête ou Basic Auth) pour éviter qu'un tiers n'utilise votre endpoint. Caddy gérera le certificat Let's Encrypt automatiquement pour whisper.mondomaine.ma.
Brancher vos workflows
Depuis vos applications, appelez https://whisper.mondomaine.ma/asr?output=srt pour obtenir directement des sous-titres, ou output=json pour les segments horodatés à réinjecter dans votre base.
Pour traiter de longs enregistrements sur CPU sans saturer la RAM, activez la VAD (détection d'activité vocale) de faster-whisper afin de sauter les silences, et fixez compute_type=int8 : la précision baisse à peine mais la consommation mémoire chute fortement, ce qui permet de faire tourner medium là où large ne passerait pas. Pour des volumes importants, mettez en place une file (Redis + worker) plutôt que des appels synchrones.