OSFRIA Découvrir les outils

OSIALab · Voix & transcription

whisper.cpp — transcrire la parole en texte, en local

whisper.cpp est un portage en C/C++ du modèle Whisper d'OpenAI, sans dépendance Python ni runtime lourd. Il transcrit la parole sur votre machine, du Raspberry Pi au serveur GPU, en n'embarquant qu'un binaire et un fichier de poids.

Page informative, sans valeur de conseil. Téléchargez depuis la source officielle, vérifiez la licence du logiciel et des modèles, et gardez en tête qu'une transcription automatique contient des erreurs : relisez avant de l'exploiter.

À quoi ça sert

whisper.cpp reconnaît la parole d'un fichier audio (ou d'un flux microphone) et la convertit en texte. Il s'appuie sur la même famille de modèles que Whisper, mais réécrits pour la bibliothèque ggml : tout tient dans un exécutable natif et un fichier de poids au format ggml (.bin). On l'utilise pour transcrire des réunions, des interviews, des podcasts, sous-titrer une vidéo, ou alimenter un pipeline d'analyse — le tout sans qu'un seul octet d'audio ne quitte le poste.

Ce qui fait sa force

  • Aucune pile Python à maintenir. Là où l'implémentation d'origine réclame PyTorch et ses dépendances, whisper.cpp se compile en un binaire autonome. Idéal pour embarquer la transcription dans un outil, un service ou une machine légère.
  • Quantification native. Les modèles ggml existent en versions quantifiées (q5_0, q8_0…) qui divisent l'empreinte mémoire sans perte sensible de qualité — un modèle medium tourne alors confortablement sur un portable.
  • Accélération matérielle large. Le projet sait exploiter Apple Metal (Core ML), CUDA, Vulkan, OpenVINO et les jeux d'instructions AVX/NEON. Sur CPU seul il reste utilisable ; avec un GPU il devient très rapide.
  • Sorties prêtes à l'emploi. Texte brut, SRT et VTT pour le sous-titrage, JSON avec horodatage, voire timestamps au mot près. C'est un maillon propre dans une chaîne de traitement.
  • Cœur de tout un écosystème. Beaucoup d'applications de transcription locale embarquent whisper.cpp sous le capot : une base éprouvée et activement maintenue.

Pour qui

Pour qui est à l'aise avec un terminal et veut une transcription locale, rapide et scriptable. Si vous préférez piloter Whisper depuis Python avec une API d'objets, regardez plutôt faster-whisper, qui vise le même besoin avec une autre approche. Pour la voix dans l'autre sens (texte vers parole), voyez Piper.

Installation

Prérequis

git, cmake et un compilateur C/C++ (GCC ou Clang sous Linux/macOS, MSVC ou MinGW sous Windows). FFmpeg est utile pour préparer l'audio.

Compiler depuis les sources

Le projet est passé à CMake ; l'ancien make à la racine et le binaire ./main sont dépréciés au profit de whisper-cli.

git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp
cmake -B build
cmake --build build -j --config Release

Télécharger un modèle

Un script récupère les poids officiels (tiny, base, small, medium, large-v3, et variantes quantifiées) :

# « small » — bon équilibre vitesse / qualité
sh ./models/download-ggml-model.sh small

# « large-v3 » — précision maximale (plus lourd)
sh ./models/download-ggml-model.sh large-v3

Transcrire un fichier audio

whisper.cpp attend du WAV PCM 16 bits, 16 kHz, mono. On normalise au besoin avec FFmpeg :

# Préparer l'audio
ffmpeg -i mon_audio.mp3 -ar 16000 -ac 1 -c:a pcm_s16le mon_audio.wav

# Transcrire en français
./build/bin/whisper-cli -m models/ggml-small.bin -f mon_audio.wav -l fr

Options utiles

# Sous-titres SRT
./build/bin/whisper-cli -m models/ggml-small.bin -f mon_audio.wav -l fr -osrt

# Sortie JSON avec horodatage
./build/bin/whisper-cli -m models/ggml-small.bin -f mon_audio.wav -l fr -oj

# Détection automatique de la langue
./build/bin/whisper-cli -m models/ggml-small.bin -f mon_audio.wav -l auto

# Transcription temps réel depuis le micro
./build/bin/whisper-stream -m models/ggml-small.bin -l fr

Bien choisir son modèle

Du plus léger au plus précis : tiny (~75 Mo), base (~140 Mo), small (~460 Mo), medium (~1,5 Go), large-v3 (~3 Go). Les modèles .en sont entraînés uniquement sur l'anglais et plus précis pour cette langue ; pour le français, prenez les modèles multilingues. En cas de mémoire limitée, une version quantifiée (-q5_0) réduit fortement l'empreinte pour une qualité quasi identique.

Points de vigilance

whisper.cpp est un outil sain : le traitement reste local et l'outil ne fait que lire de l'audio pour produire du texte. Les vrais points à garder en tête tiennent à ce qu'on transcrit, pas à l'outil.

Point d'attention Niveau Ce qu'il faut savoir
Enregistrer une personne sans son accord 🔴 selon le contexte Une voix est une donnée personnelle. Transcrire un échange privé, un appel ou une réunion sans information ni consentement des intéressés peut contrevenir au RGPD. Le traitement local protège la confidentialité technique, pas la base légale de l'enregistrement.
Format audio d'entrée 🟢 simple à corriger whisper.cpp attend du WAV 16 kHz mono. Un fichier au mauvais format échoue ou donne un résultat dégradé : passez-le d'abord par FFmpeg.
Licence du logiciel et des modèles 🟢 permissive whisper.cpp est sous MIT, et les poids Whisper publiés par OpenAI le sont également sous MIT — usage commercial possible. Vérifiez la licence de tout modèle tiers (fine-tunes) que vous ajouteriez.
Migration de dépôt (ggerganov → ggml-org) 🟡 liens à mettre à jour Le projet a migré de ggerganov/whisper.cpp vers l'organisation ggml-org/whisper.cpp. Les anciens liens ou bookmarks pointent vers l'archive ; la source active est bien github.com/ggml-org/whisper.cpp. Mettez à jour vos scripts et tutoriels qui référencent l'ancienne adresse.

Sécurité

  • Compilez depuis la source officiellegithub.com/ggml-org/whisper.cpp — et tenez votre copie à jour, le projet évolue vite.
  • Traitez les enregistrements comme des données sensibles. S'ils contiennent des échanges confidentiels, chiffrez le dossier de stockage et purgez les fichiers temporaires.
  • Téléchargez les poids depuis le script officiel ou Hugging Face réputé ; un fichier ggml reste un fichier de poids, pas du code exécuté, mais privilégiez les sources de confiance.

Aller plus loin

  • faster-whisper — la même famille Whisper, pilotée en Python via CTranslate2.
  • FFmpeg — convertir et normaliser l'audio avant transcription.
  • Piper — le chemin inverse : transformer du texte en voix.
  • OSIALab — tous les outils voix et transcription.

Sources