IA locale · Tutoriel

whisper.cpp : transcrire un enregistrement sur son ordinateur, sans rien envoyer en ligne

whisper.cpp convertit la parole en texte directement sur votre machine, du Raspberry Pi au PC équipé d'une carte graphique. La version 1.9.5 vient de sortir. Les commandes du guide officiel pour compiler l'outil, préparer un fichier audio et lancer une transcription.

Par Kayzen AI · · 3 min de lecture

Photo d'illustration : EMI RM-1B microphone (1930s), Abbey Road Studios
Image : EMI RM-1B microphone (1930s), Abbey Road Studios — Josephenus P. Riley, CC BY 2.0, via Wikimedia Commons

Comptes rendus de réunion, entretiens clients, dictées : ces enregistrements contiennent souvent des informations que l'on préfère ne pas confier à un service en ligne. whisper.cpp, sous licence MIT, fait ce travail de transcription sur la machine elle-même. Sa version 1.9.5, publiée le 6 octobre, est une version de maintenance qui met à jour la bibliothèque de calcul ggml (0.26.0). Voici la marche à suivre décrite par le guide officiel.

Ce qu'il faut

Un terminal, git, cmake et un compilateur. Le README liste comme plateformes prises en charge macOS (Intel et Arm), Linux, Windows, Raspberry Pi, Android, iOS et Docker.

La taille du modèle détermine la mémoire nécessaire :

ModèleDisqueMémoire
tiny75 Mioenviron 273 Mo
base142 Mioenviron 388 Mo
small466 Mioenviron 852 Mo
medium1,5 Gioenviron 2,1 Go
large2,9 Gioenviron 3,9 Go

Étape 1 : récupérer et compiler

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

La troisième ligne télécharge un modèle. Le script accepte d'autres noms, par exemple base ou small.en.

Étape 2 : préparer l'audio

L'outil en ligne de commande ne lit que des fichiers WAV en 16 bits. Un MP3 se convertit avec ffmpeg :

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

Étape 3 : transcrire

Le dépôt fournit un fichier d'essai :

./build/bin/whisper-cli -f samples/jfk.wav

Remplacez ensuite samples/jfk.wav par votre propre fichier WAV.

Ignorer les silences

Un modèle de détection de voix (VAD) évite de traiter les passages sans parole :

./models/download-vad-model.sh silero-v6.2.0
./build/bin/whisper-cli --file ./samples/jfk.wav --model ./models/ggml-base.en.bin --vad --vad-model ./models/silero-v6.2.0-ggml.bin

Utiliser la carte graphique

L'accélération se choisit à la compilation, à la place de la commande cmake -B build de l'étape 1 :

  • carte NVIDIA : cmake -B build -DGGML_CUDA=1
  • Vulkan : cmake -B build -DGGML_VULKAN=1
  • Mac à puce Apple, avec Core ML : cmake -B build -DWHISPER_COREML=1, après avoir généré le modèle avec ./models/generate-coreml-model.sh base.en

Alléger le modèle

Sur une machine modeste, la quantification réduit la taille du modèle :

./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0
./build/bin/whisper-cli -m models/ggml-base.en-q5_0.bin ./samples/gb0.wav

En faire un service interne

Le projet fournit un serveur. Une fois lancé avec whisper-server, il reçoit les fichiers par une simple requête :

curl -v http://127.0.0.1:8080/inference \
  -F "file=@${AUDIO_PATH}/jfk.wav" \
  -F 'response_format=json'

Les limites

  • Tous les exemples du guide de démarrage sont en anglais et s'appuient sur le modèle base.en. Le guide ne montre pas de transcription dans une autre langue. Pour du français, il faudra partir d'un modèle sans suffixe .en (le script en propose, comme base), consulter l'aide de l'outil pour le réglage de la langue, puis contrôler le résultat sur vos propres enregistrements.
  • Il faut compiler soi-même. Ce n'est pas difficile, mais ce n'est pas un logiciel à installer en deux clics.
  • La qualité dépend de la taille du modèle et de la prise de son. Le README ne promet aucun taux d'erreur, et nous n'avons mesuré ni vitesse ni précision.

Notre lecture

Pour un cabinet, une agence ou un service client, whisper.cpp est une brique solide pour transcrire en interne des contenus confidentiels, sur du matériel déjà présent. Commencez avec le modèle base sur un enregistrement réel de dix minutes, relisez le texte obtenu, puis montez en taille de modèle si la qualité ne suffit pas. Et rappelez-vous qu'une transcription reste un traitement de données personnelles : informer les personnes enregistrées reste nécessaire, même quand tout se passe en local.

Sources

  1. ggml-org — dépôt GitHub et README de whisper.cpp — source primaire
  2. ggml-org — liste des versions de whisper.cpp (GitHub)