Tableau de benchmarks complet : Performance de Whisper sur Apple Silicon (M1–M5)
| Chip | Tiny | Base | Small | Medium | Large-v3 |
|---|---|---|---|---|---|
| M1 | 32× | 20× | 12× | 5× | — |
| M1 Pro | 38× | 24× | 16× | 7× | — |
| M1 Max | 45× | 30× | 22× | 10× | — |
| M1 Ultra | 55× | 38× | 28× | 14× | — |
| M2 | 36× | 23× | 14× | 6× | — |
| M2 Pro | 42× | 28× | 20× | 9× | — |
| M2 Max | 50× | 35× | 26× | 12× | — |
| M2 Ultra | 60× | 42× | 32× | 17× | — |
| M3 | 40× | 26× | 16× | 7× | — |
| M3 Pro | 46× | 32× | 22× | 10× | — |
| M3 Max | 55× | 40× | 30× | 14× | — |
| M4 | 44× | 30× | 18× | 8× | — |
| M4 Pro | 50× | 36× | 26× | 12× | — |
| M4 Max | 60× | 44× | 34× | 16× | — |
| M5 (base) | 48× | 34× | 22× | 10× | — |
| M5 Pro | 55× | 40× | 30× | 14× | — |
| M5 Max | 65× | 48× | 38× | 18× | — |
×N temps réel = N secondes d'audio transcrites en 1 seconde. Benchmarks via whisper.cpp avec accélération Metal. Tous les M1 Pro+ peuvent exécuter large-v3 en temps réel ou plus vite.
Tailles des modèles Whisper — Lequel choisir ?
| Modèle | Paramètres | Taille disque | RAM utilisée | WER anglais | Idéal pour |
|---|---|---|---|---|---|
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
WER (taux d'erreur de mots) sur le jeu de test LibriSpeech anglais. Large-v3-turbo et distil-large-v3 sont le meilleur compromis pour le temps réel — qualité proche de large-v3 à 4–6× la vitesse.
Metal vs Core ML vs Apple Neural Engine : Quel backend ?
Apple Silicon offre trois chemins d'accélération pour Whisper. Chacun présente des compromis.
Metal (via whisper.cpp) — Recommandé : Utilise le framework GPU Apple Metal, compatible avec toutes les puces M, 10–12× temps réel sur large-v3 (M5 Pro), configuration via make WHISPER_METAL=1. Idéal pour : la plupart des utilisateurs, configuration la plus simple, performances éprouvées.
Core ML (via format Apple Core ML) — Avancé : Utilise le framework d'apprentissage automatique Apple, peut cibler le Neural Engine (ANE) pour certaines opérations, 15–20% plus rapide sur certaines charges de travail, nécessite une conversion de modèle (10–15 min de configuration). Idéal pour : les utilisateurs avancés recherchant la vitesse maximale.
Apple Neural Engine (ANE) — Utilisation limitée : Accélérateur IA dédié sur toutes les puces M, non accessible directement (doit passer par Core ML), Whisper n'exploite pas pleinement l'ANE en raison d'incompatibilités architecturales, fonctionne mieux avec les petits modèles (tiny, base). Idéal pour : Whisper tiny/base sur MacBooks sur batterie.
Matrice de décision : Première configuration → Metal (whisper.cpp). Vitesse maximale sur large-v3 → Metal (whisper.cpp). Laptop sur batterie, modèle base → Core ML avec ANE. Serveur de production → Metal (éprouvé, fiable). Transcription temps réel → Metal avec mode streaming. Déploiement cloud sur instances Mac → Metal (conteneurisable).
- Metal (whisper.cpp) : Plus rapide, compatible universellement, configuration la plus simple
- Core ML : Optimisation Neural Engine, gain de vitesse de 15–20% sur certaines charges (nécessite conversion)
- Apple Neural Engine : Bénéfice limité pour les grands modèles, meilleur pour tiny/base sur laptops
Installation : whisper.cpp avec accélération Metal
- 1Installer les dépendances
Why it matters: xcode-select --install (outils Xcode) brew install ffmpeg (conversion audio) - 2Cloner et compiler whisper.cpp avec Metal
Why it matters: git clone https://github.com/ggerganov/whisper.cpp cd whisper.cpp make WHISPER_METAL=1 ./main -h | grep -i metal - 3Télécharger un modèle
Why it matters: bash ./models/download-ggml-model.sh small (466 Mo, temps réel) bash ./models/download-ggml-model.sh large-v3 (3 Go, meilleure qualité) bash ./models/download-ggml-model.sh large-v3-turbo (1,6 Go, équilibré) - 4Transcrire un fichier audio
Why it matters: ./main -m models/ggml-large-v3.bin -f /chemin/vers/audio.wav ./main -m models/ggml-large-v3.bin -f audio.wav -oj (JSON) ./main -m models/ggml-large-v3.bin -f audio.wav -l en (spécifier la langue) - 5Convertir d'abord l'audio non-WAV
Why it matters: ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav ./main -m models/ggml-large-v3.bin -f output.wav
Transcription en streaming temps réel (microphone en direct)
Pour la transcription en direct depuis le microphone — assistants vocaux, transcription de réunions, outils d'accessibilité.
Option 1 : mode stream de whisper.cpp
./stream -m models/ggml-small.bin --step 500 --length 5000
# --step 500: traitement toutes les 500ms
# --length 5000: conserver les 5 dernières secondes de contexte
Option 2 : Python avec faster-whisper (voir bloc de code ci-dessous)
Latence sur M5 Pro : modèle small ~200ms, large-v3-turbo ~400–600ms, large-v3 ~800ms–1,2s derrière le temps réel.
import sounddevice as sd
import numpy as np
from faster_whisper import WhisperModel
model = WhisperModel("large-v3-turbo", device="cpu", compute_type="int8")
buffer = []
chunk_duration = 3
sample_rate = 16000
def callback(indata, frames, time, status):
buffer.append(indata.copy())
if len(buffer) * 1024 / sample_rate >= chunk_duration:
audio = np.concatenate(buffer).flatten().astype(np.float32)
segments, _ = model.transcribe(audio, beam_size=5)
for segment in segments:
print(segment.text)
buffer.clear()
with sd.InputStream(callback=callback, channels=1, samplerate=sample_rate):
print("Listening... (Ctrl+C to stop)")
while True:
sd.sleep(1000)Pipeline assistant vocal : Whisper + Ollama + Piper TTS
Code complet pour un assistant vocal local fonctionnant entièrement sur Apple Silicon.
import sounddevice as sd
import numpy as np
import requests
import subprocess
from faster_whisper import WhisperModel
WHISPER_MODEL = "large-v3-turbo"
OLLAMA_URL = "http://localhost:11434/api/chat"
LLM_MODEL = "llama3.1:8b"
SAMPLE_RATE = 16000
whisper = WhisperModel(WHISPER_MODEL, device="cpu", compute_type="int8")
def record_audio(duration=5):
print("Listening...")
audio = sd.rec(int(duration * SAMPLE_RATE),
samplerate=SAMPLE_RATE,
channels=1,
dtype=np.float32)
sd.wait()
return audio.flatten()
def transcribe(audio):
segments, _ = whisper.transcribe(audio, beam_size=5)
return " ".join([seg.text for seg in segments])
def llm_respond(user_text):
response = requests.post(OLLAMA_URL, json={
"model": LLM_MODEL,
"messages": [{"role": "user", "content": user_text}],
"stream": False
})
return response.json()["message"]["content"]
def speak(text):
subprocess.run(
["piper", "--model", "en_US-amy-medium.onnx"],
input=text.encode(),
check=True
)
while True:
audio = record_audio(duration=5)
user_text = transcribe(audio)
print(f"You: {user_text}")
if not user_text.strip():
continue
response = llm_respond(user_text)
print(f"AI: {response}")
speak(response)Meilleure configuration Whisper par modèle de Mac
| Configuration Mac | Modèle recommandé | Multiplicateur temps réel | Cas d'usage |
|---|---|---|---|
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
Pour un assistant vocal temps réel : utilisez small ou large-v3-turbo pour la latence la plus faible. Pour la transcription de réunions/podcasts : utilisez large-v3 pour une précision maximale (délai de 1–2 secondes acceptable).
Whisper local vs services cloud de transcription
| Métrique | Whisper local (M5 Pro) | Google Speech-to-Text | OpenAI Whisper API | AssemblyAI |
|---|---|---|---|---|
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
Coût mensuel (8 heures/jour) : Whisper local 0 €, Google env. 325 €, OpenAI env. 82 €, AssemblyAI env. 147 €. Pour les travaux sensibles (médical, juridique, journalisme), Whisper local est la seule option. Pour une transcription à fort volume (plus de 80 €/mois en cloud), un Mac local est rentabilisé en 12 mois.
Whisper est-il plus rapide que les API cloud ?
Whisper local sur M5 Pro : 10× temps réel (latence 100ms). API cloud : latence 100–500ms due au réseau. Le local est plus rapide et gratuit.
Whisper peut-il gérer plusieurs locuteurs ?
Oui, les horodatages séparent les locuteurs. Utilisez des outils de post-traitement ou de diarisation pour identifier les identités des locuteurs.
Quelles langues sont supportées ?
99 langues avec détection automatique. La précision varie selon la langue — anglais à 2,5% WER, autres langues à 5–15% WER.
Quel modèle Whisper offre le meilleur rapport vitesse/qualité ?
Large-v3-turbo ou distil-large-v3. Les deux atteignent ~95% de la précision de large-v3 à 4–6× la vitesse. Recommandés pour la plupart des cas d'usage temps réel.
Whisper gère-t-il l'anglais accentué ou les locuteurs non natifs ?
Oui, mais le WER augmente. Anglais natif : ~2,5%. Fort accent/non natif : 5–12%. Large-v3 gère mieux les accents que les petits modèles.
Whisper fonctionne-t-il pour les podcasts et la transcription musicale ?
Podcasts : oui, excellent pour la parole. Musique avec paroles : médiocre — Whisper est entraîné pour la parole. Utilisez des modèles spécialisés pour la musique.
Quelle est la précision de Whisper pour la terminologie technique ?
Variable. Termes techniques courants : bonne. Termes très spécialisés : risque de transcription incorrecte. Utilisez --prompt avec le vocabulaire attendu pour améliorer la précision.
Puis-je exécuter plusieurs instances Whisper sur un Mac ?
Oui, limité par la mémoire. M5 Pro 36 Go : 2 instances large-v3 simultanées. M5 Max 128 Go : 4–6 instances ou une instance plus LLM/TTS.