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

whisper.cpp : transcrire la parole en texte localement, sans Python ni cloud. Binaire C/C++, modèles ggml, commandes whisper-cli, licence MIT et précautions.

URL canonique : https://www.osfria.fr/whisper-cpp.html

---

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.

### Fiabilité & transparence

🟢 **Fiable et activement maintenu**

- **Maintenance** : version 1.8.4 publiée début 2026, releases régulières intégrant les mises à jour de la bibliothèque ggml sous-jacente ; rythme soutenu depuis le transfert vers ggml-org.
- **Adoption** : outil de référence pour la transcription locale en C/C++, embarqué dans de nombreuses applications (domotique, sous-titrage, pipelines IA) et très suivi sur GitHub.
- **Sécurité** : traitement 100 % local, aucun réseau sollicité ; aucune faille majeure connue sur le binaire principal — tenez votre build à jour, le projet évolue vite.
- **Verdict** : choix solide pour intégrer la transcription locale dans un outil, un service ou une machine sans pile Python.

> 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](https://github.com/openai/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](https://www.osfria.fr/faster-whisper.html), qui vise le même besoin avec une autre approche. Pour la voix dans l'autre sens (texte vers parole), voyez [Piper](https://www.osfria.fr/piper-tts.html).

### Installation

#### Prérequis

`git`, `cmake` et un compilateur C/C++ (GCC ou Clang sous Linux/macOS, MSVC ou MinGW sous Windows). [FFmpeg](https://www.osfria.fr/ffmpeg.html) 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 officielle** — `github.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](https://www.osfria.fr/faster-whisper.html) — la même famille Whisper, pilotée en Python via CTranslate2.
- [FFmpeg](https://www.osfria.fr/ffmpeg.html) — convertir et normaliser l'audio avant transcription.
- [Piper](https://www.osfria.fr/piper-tts.html) — le chemin inverse : transformer du texte en voix.
- [OSIALab](https://www.osfria.fr/osialab.html) — tous les outils voix et transcription.

### Sources

- Code source & licence (MIT) : [github.com/ggml-org/whisper.cpp](https://github.com/ggml-org/whisper.cpp)
- Modèle Whisper d'origine (MIT) : [github.com/openai/whisper](https://github.com/openai/whisper)
