Vérifié juillet 2026

whisper.cpp — Portage C/C++ de Whisper pour CPU, Mac, iOS, Android

whisper.cpp est un portage C/C++ du modèle Whisper d'OpenAI, créé par Georgi Gerganov en octobre 2022 sous licence MIT. Il exécute les mêmes poids de modèle sans Python ni CUDA — sur CPU x86/ARM, Apple Silicon (Metal + CoreML), iOS, Android et Raspberry Pi. Empreinte mémoire réduite via quantification GGML/GGUF, déploiement en binaire unique.

Résumé rapide

  • Auteur : Georgi Gerganov (également créateur de llama.cpp). Lancement octobre 2022. Licence MIT. Dépôt : github.com/ggerganov/whisper.cpp.
  • Sans dépendances lourdes : pas de Python, pas de CUDA, pas d'environnement virtuel. Livré comme exécutable unique après compilation (2-5 minutes sur Mac).
  • Cibles : laptop CPU, Apple Silicon (Metal + CoreML), iOS, Android (via NDK), Raspberry Pi, embarqué.
  • Précision : identique aux poids Whisper de référence en F16/F32. Quantification Q5_1 < 1% de perte WER pour 40% de mémoire en moins.
  • Ce qui manque : diarisation des locuteurs, alignement forcé au mot près. À combiner avec pyannote.audio si besoin.

Installation en 4 étapes

  1. 1. Cloner le dépôt

    git clone https://github.com/ggerganov/whisper.cpp
    cd whisper.cpp
  2. 2. Compiler (Mac / Linux)

    make

    Sur Windows : cmake -B build && cmake --build build --config Release

    Sur Apple Silicon avec CoreML (recommandé) : WHISPER_COREML=1 make -j

  3. 3. Télécharger un modèle

    ./models/download-ggml-model.sh large-v3

    Choix disponibles : tiny, base, small, medium, large-v3. Voir tableau ci-dessous pour le sweet spot par cas d'usage.

  4. 4. Transcrire un fichier audio

    ./main -m models/ggml-large-v3.bin -f votre-audio.wav -l fr

    L'option -l fr force la langue française (sinon auto-détection).

Quel modèle choisir ?

ModèleTailleRAMVitessePrécisionQuand l'utiliser
tiny.en / tiny75 Mo~ 250 MoTemps réel sur presque tout (mobile, RPi)≈ 5-10% pire que largeMobile temps réel, Raspberry Pi, prototypes rapides
base.en / base150 Mo~ 500 MoTemps réel laptop et mobile≈ 3-6% pire que largeDéfaut pratique pour laptop et apps mobiles
small500 Mo~ 1 Go1-2x temps réel CPU moderne≈ 2-4% pire que largeRarement le bon choix — passer directement à medium
medium.en / medium1,5 Go~ 2,5 Go0,5-1x temps réel CPU≈ 2% pire que largeLaptop offline avec précision élevée
large-v3 (Q5_1)3 Go~ 4 GoTemps réel sur Apple Silicon + CoreMLRéférence (< 1% perte vs F16)Sweet spot desktop 8+ Go RAM — précision max sans coût mémoire F16
large-v3 (F16)6 Go~ 10 GoPlus lent que Q5_1Référence pleine précisionAccuracy-critical si ressources abondantes

Recommandation pratique : base.en pour laptop CPU et mobile, large-v3 Q5_1 sur Apple Silicon avec CoreML pour précision maximale en temps réel ou mieux.

CoreML sur Apple Silicon — la meilleure vitesse locale

Sur Mac M1/M2/M3/M4, whisper.cpp peut décharger la passe encodeur sur le Neural Engine Apple (ANE) via CoreML. Compilation :

WHISPER_COREML=1 make -j

Résultat : accélération de 2-3x sur l'encodeur, décodeur toujours sur CPU via Metal/SIMD. C'est le chemin pratique le plus rapide pour transcrire en temps réel sur un MacBook sans GPU discret. Sur Mac M2 Pro avec CoreML et Q5_1, large-v3 traite 60 minutes d'audio en 8-12 minutes — proche d'un GPU CUDA modeste.

Déploiement mobile — iOS et Android

whisper.cpp compile pour iOS (simulateur et appareil) et Android (via NDK). Le dépôt contient des apps d'exemple qui démontrent la transcription temps réel :

  • iPhone 12+ : tiny.en et base.en tournent en temps réel. Medium possible sur iPhone 14 Pro+ avec ANE.
  • Android Snapdragon 8-series : tiny.en et base.en en temps réel. Modèles plus grands limités par la RAM.
  • Raspberry Pi 4/5 : tiny.en fonctionnel, base.en marginal.

Pattern courant en production mobile : shipper tiny.en ou base.en pour transcription temps réel on-device, plus fallback cloud (comme VexaScribe hébergé) pour fichiers longs où la précision prime sur la latence.

whisper.cpp vs faster-whisper — quel choix ?

Deux stratégies d'optimisation différentes du même modèle Whisper :

  • whisper.cpp — C/C++, sans Python ni CUDA. Optimal pour on-device (mobile, edge, laptop), déploiements sans dépendances, ou tout scénario où CPU est le seul compute disponible.
  • faster-whisper — Python + CTranslate2, 2-4x plus rapide que PyTorch de référence sur GPU. Optimal pour serveurs avec CUDA et débit maximum en batch.

Règle simple : vous avez un GPU CUDA et voulez le débit ? faster-whisper. Vous voulez éviter Python et cibler CPU/mobile/edge ? whisper.cpp.

Questions fréquentes

Qu'est-ce que whisper.cpp ?

whisper.cpp est un portage C/C++ du modèle de reconnaissance vocale Whisper d'OpenAI, créé par Georgi Gerganov (également auteur de llama.cpp) en octobre 2022 sous licence MIT. Il réimplémente l'inférence Whisper en C/C++ pur avec des poids quantifiés au format GGML/GGUF, ciblant les environnements où une installation complète PyTorch + CUDA n'est pas pratique : laptops sans GPU, mobiles (iOS/Android), Raspberry Pi, appareils edge, déploiements CLI en binaire unique. Mêmes modèles Whisper (tiny à large-v3), sans Python ni runtime CUDA.

Quelle différence entre whisper.cpp et le Whisper d'OpenAI ?

Mêmes poids de modèle, runtime radicalement différent. Le Whisper d'OpenAI est une implémentation PyTorch qui nécessite Python, PyTorch et généralement un GPU CUDA. whisper.cpp est une implémentation C/C++ qui exécute les mêmes poids (convertis au format GGML/GGUF) sur CPU via instructions SIMD, sur Apple Silicon via Metal/CoreML, ou sur CPU x86/ARM directement. Avantages : pas de Python, pas de CUDA, pas d'environnement virtuel, livré comme exécutable unique, les modèles quantifiés tournent avec 200 Mo de RAM au lieu de 10 Go de VRAM. Contrepartie : plus lent que l'inférence GPU sur fichiers longs, et pas de diarisation des locuteurs intégrée (ajoutez pyannote séparément si nécessaire).

Comment installer whisper.cpp sur Mac ?

Trois étapes. (1) Clonez le dépôt : git clone https://github.com/ggerganov/whisper.cpp && cd whisper.cpp. (2) Compilez : make (ou avec CoreML : WHISPER_COREML=1 make -j). (3) Téléchargez un modèle : ./models/download-ggml-model.sh base.en (ou large-v3 pour précision max). Puis transcrivez : ./main -m models/ggml-large-v3.bin -f votre-audio.wav -l fr. Temps typique installation-à-fonctionnel sur Mac Apple Silicon : 2-5 minutes. Aucun environnement Python, aucun runtime CUDA. Pour Windows : utilisez cmake -B build && cmake --build build --config Release.

Quelle précision entre whisper.cpp et le Whisper de référence ?

Précision identique en pleine précision (quantification F16 ou F32) — mêmes poids de modèle, même mathématique d'inférence. Les modèles quantifiés (INT8, Q5_1, Q4_0) échangent de petites pertes de précision contre une empreinte mémoire réduite et une inférence CPU plus rapide. Q5_1 typiquement moins de 1% de perte WER vs F16, Q4_0 perd 2-4%. Pour la majorité des usages, Q5_1 est le sweet spot : 40% plus petit que F16, impact négligeable sur la précision, tourne vite sur Apple Silicon et CPU x86 modernes.

whisper.cpp supporte-t-il CoreML sur Apple Silicon ?

Oui. whisper.cpp inclut le support CoreML qui décharge la passe encodeur sur le Neural Engine Apple (ANE) sur les Mac M1/M2/M3/M4, iPhones et iPads. Compilation avec CoreML activé : WHISPER_COREML=1 make -j. Résultat : accélération 2-3x sur la passe encodeur, décodeur toujours sur CPU via Metal/SIMD. C'est le chemin pratique le plus rapide pour transcrire en temps réel sur un MacBook sans GPU discret. Sur M2 Pro avec CoreML et Q5_1, large-v3 traite 60 minutes d'audio en 8-12 minutes — proche d'un GPU CUDA modeste.

Puis-je utiliser whisper.cpp sur iPhone ou Android ?

Oui — c'est un des cas d'usage principaux. whisper.cpp compile pour iOS (simulateur et appareil) et Android (via NDK). Les apps d'exemple dans le dépôt démontrent la transcription temps réel sur iPhone 12+ et Android modernes avec Snapdragon 8-series. Choix de modèle : tiny.en et base.en tournent bien on-device (250-500 Mo RAM) ; les modèles medium et large sont trop gourmands en RAM pour les budgets mobiles courants. Pattern courant en production mobile : shipper tiny.en ou base.en pour transcription temps réel on-device, avec fallback cloud (comme VexaScribe hébergé) pour fichiers longs où la précision prime sur la latence.

Quelle différence entre whisper.cpp et faster-whisper ?

Stratégies d'optimisation différentes. faster-whisper est une bibliothèque Python basée sur CTranslate2 qui exécute Whisper 2-4x plus vite que PyTorch de référence sur GPU, mais nécessite toujours CUDA et Python. whisper.cpp est une implémentation C/C++ qui tourne sur CPU / Apple Silicon (Metal + CoreML) / mobile / edge sans Python ni CUDA. Règle simple : vous avez un serveur avec GPU CUDA et voulez le débit maximum en production ? faster-whisper. Vous voulez déployer on-device (mobile, edge, laptop) ou éviter Python entièrement ? whisper.cpp. Les deux préservent la précision Whisper.

whisper.cpp fait-il la diarisation des locuteurs ?

Pas nativement. whisper.cpp gère uniquement la transcription — pas de diarisation intégrée, pas d'alignement forcé au mot près. Pour l'étiquetage des locuteurs, exécutez whisper.cpp pour le transcript et pyannote.audio 3.1 séparément, puis fusionnez les sorties par timestamps. C'est le même pattern que WhisperX (qui bundle pyannote avec Whisper) mais vous l'assemblez vous-même. VexaScribe exécute Whisper Large-v3 + pyannote en service hébergé si vous préférez éviter l'assemblage de pipeline — voir notre outil de transcription en ligne.

Pages liées