- Version exacte : Whisper v20250625 + Ollama v0.23.4, tous deux gratuits et open-source (MIT)
- Temps de construction : 20 minutes sur Mac M1/M2, 30 minutes sur Linux/Windows WSL2
- Prérequis minimum : 8 Go RAM, Python 3.8-3.11, ffmpeg, 6 Go d'espace disque
- Modèles : Whisper turbo (6 Go VRAM) + Llama 3.2:3b (2 Go RAM) — réduit à Whisper base (1 Go VRAM) + Llama 3.2:1b (1 Go RAM) sur machines limitées
Introduction
Vous allez construire un assistant vocal 100% local qui transcrit votre voix avec Whisper v20250625 (MIT, gratuit) et génère des réponses avec Ollama v0.23.4 et Llama 3.2:3b (2 Go). Aucune donnée ne quitte votre machine. Prérequis : 8 Go RAM minimum, Python 3.8+, ffmpeg installé, 6 Go d'espace disque. Temps estimé : 20 minutes sur Mac M1/M2, 30 minutes sur Linux. Documentation Whisper — Documentation Ollama.
Ce que vous allez construire et pourquoi en 2026
Un pipeline vocal complet : vous parlez dans le micro → Whisper transcrit en texte → Ollama génère une réponse intelligente → la réponse s'affiche dans le terminal. Le tout tourne localement, sans clé API, sans abonnement, sans envoi de données. Whisper (modèle turbo, 809M paramètres, 6 Go VRAM) atteint un taux d'erreur de 5 à 10% sur le français selon les benchmarks OpenAI. Ollama fait tourner Llama 3.2:3b qui consomme seulement 2 Go de RAM et répond en 1 à 3 secondes sur Mac M1.
Prérequis système exacts :
- RAM : 8 Go minimum (4 Go si vous utilisez whisper tiny + llama3.2:1b)
- OS : macOS 12+, Ubuntu 22.04+, Windows 10+ avec WSL2
- Python : 3.8 à 3.11 (pas 3.12+ — incompatibilité avec numba)
- ffmpeg : obligatoire pour le traitement audio par Whisper
- Espace disque : 6 Go (2 Go pour Llama 3.2:3b + 3 Go pour Whisper turbo + 1 Go dépendances)
- GPU : optionnel — CUDA pour NVIDIA, MPS pour Apple Silicon, CPU fonctionne mais plus lent
Installation : commandes exactes à copier
Étape 1 — Installer ffmpeg (obligatoire)
# macOS
brew install ffmpeg # Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg -y # Vérifier
ffmpeg -version
# Résultat attendu : ffmpeg version 6.0 ou supérieur
Erreur courante : "ffmpeg: command not found" → relancer le terminal après installation ou vérifier que /usr/local/bin ou /opt/homebrew/bin est dans votre /Users/user/Documents/Paperclip-src/server/node_modules/.bin:/Users/user/Library/pnpm/.tools/pnpm/9.15.4/node_modules/pnpm/dist/node-gyp-bin:/Users/user/Documents/Paperclip-src/node_modules/.bin:./node_modules/.bin:/Users/user/Documents/Paperclip-src/node_modules/.bin:/Users/user/Documents/Paperclip-src/node_modules/.bin:/Users/user/Library/pnpm/.tools/pnpm/9.15.4/node_modules/pnpm/dist/node-gyp-bin:/Users/user/Documents/Paperclip-src/node_modules/.bin:/Users/user/Library/pnpm/.tools/pnpm/9.15.4/bin:/Users/user/.rvm/gems/ruby-3.1.0/bin:/Users/user/.rvm/gems/ruby-3.1.0@global/bin:/Users/user/.rvm/rubies/ruby-3.1.0/bin:/Users/user/.bun/bin:/Users/user/.antigravity/antigravity/bin:/usr/local/bin:/Users/user/.nvm/versions/node/v22.22.2/bin:/opt/homebrew/bin:/Users/user/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand:/Users/user/Library/Application Support/Code/User/globalStorage/github.copilot-chat/copilotCli:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Applications/nmap.app/Contents/Resources/bin:/Applications/ncat.app/Contents/Resources/bin:/Applications/zenmap.app/Contents/Resources/bin:/Applications/nping.app/Contents/Resources/bin:/Library/Apple/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Users/user/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand:/Users/user/Library/Application Support/Code/User/globalStorage/github.copilot-chat/copilotCli:/Users/user/.rvm/gems/ruby-3.1.0/bin:/Users/user/.rvm/gems/ruby-3.1.0@global/bin:/Users/user/.rvm/rubies/ruby-3.1.0/bin:/Users/user/.bun/bin:/Users/user/.antigravity/antigravity/bin:/Users/user/.nvm/versions/node/v22.22.2/bin:/opt/homebrew/bin:/opt/anaconda3/condabin:/Users/user/.cargo/bin:/Users/user/Library/Android/sdk/emulator:/Users/user/Library/Android/sdk/platform-tools:/Users/user/.rvm/bin:/Users/user/Library/Android/sdk/tools:/Users/user/Library/Android/sdk/tools/bin:/Users/user/.lmstudio/bin:/Users/user/.turso:/Users/user/.vscode/extensions/ms-python.debugpy-2026.6.0-darwin-arm64/bundled/scripts/noConfigScripts:/Users/user/Library/Android/sdk/emulator:/Users/user/Library/Android/sdk/platform-tools:/Users/user/.rvm/bin:/Users/user/Library/Android/sdk/emulator:/Users/user/Library/Android/sdk/tools:/Users/user/Library/Android/sdk/tools/bin:/Users/user/Library/Android/sdk/platform-tools:/Users/user/.lmstudio/bin:/Users/user/.turso:/Users/user/.claude/plugins/cache/claude-plugins-official/vercel/0.42.1/bin.
Étape 2 — Installer Ollama v0.23.4
# macOS / Linux
curl -fsSL https://ollama.com/install.sh | sh # Vérifier l'installation
ollama --version
# Résultat attendu : ollama version 0.23.4 ou supérieur # Télécharger le modèle Llama 3.2 (3 milliards de paramètres, 2 Go)
ollama pull llama3.2:3b # Tester que le modèle fonctionne
ollama run llama3.2:3b "Bonjour, présente-toi en une phrase."
# Résultat attendu : réponse en français dans le terminal en 1-3 secondes
Erreur courante : "digest mismatch, file must be downloaded again" → relancer ollama pull llama3.2:3b. Problème connu de vérification SHA256间歇ent sur les connexions lentes.
Étape 3 — Installer Whisper v20250625
# Créer un environnement virtuel (recommandé)
python3 -m venv ~/assistant-vocal
source ~/assistant-vocal/bin/activate # Installer Whisper
pip install -U openai-whisper # Vérifier
whisper --help
# Résultat attendu : affichage de l'aide avec les options disponibles
Erreur courante : "No module named 'setuptools_rust'" → installer avec pip install setuptools-rust puis relancer. Erreur "No module named 'numba'" → vérifier que Python est en version 3.8 à 3.11 (pas 3.12+).
Configuration : les fichiers et variables à définir
Créez le fichier ~/assistant-vocal/assistant.py avec le code complet ci-dessous. Ce script configure :
WHISPER_MODEL: modèle de transcription. Par défaut"turbo"(6 Go VRAM). Utilisez"base"(1 Go VRAM) si votre machine a moins de 8 Go RAM.OLLAMA_MODEL: modèle de réponse. Par défaut"llama3.2:3b"(2 Go RAM). Utilisez"llama3.2:1b"(1 Go RAM) sur machines limitées.OLLAMA_URL: URL de l'API Ollama. Par défaut"http://localhost:11434". Ne pas changer sauf si vous hébergez Ollama sur un autre serveur.
Le code du projet : construire l'assistant vocal
#!/usr/bin/env python3
"""Assistant vocal local : Whisper + Ollama"""
import whisper
import requests
import subprocess
import tempfile
import os # Configuration
WHISPER_MODEL = os.environ.get("WHISPER_MODEL", "turbo")
OLLAMA_MODEL = os.environ.get("OLLAMA_MODEL", "llama3.2:3b")
OLLAMA_URL = os.environ.get("OLLAMA_URL", "http://localhost:11434")
RECORD_DURATION = int(os.environ.get("RECORD_DURATION", "8")) # secondes def enregistrer_audio(): """Enregistre l'audio depuis le micro avec ffmpeg""" fichier = tempfile.NamedTemporaryFile(suffix=".wav", delete=False) fichier.close() cmd = [ "ffmpeg", "-y", "-f", "avfoundation", "-i", ":0", "-t", str(RECORD_DURATION), "-ar", "16000", "-ac", "1", "-acodec", "pcm_s16le", fichier.name ] # Sur Linux, remplacer avfoundation par pulse ou alsa : # cmd = ["ffmpeg", "-y", "-f", "pulse", "-i", "default", ..] print(f"🎤 Enregistrement pendant {RECORD_DURATION} secondes..") subprocess.run(cmd, capture_output=True) return fichier.name def transcrire(fichier_audio): """Transcrit l'audio avec Whisper""" print("📝 Transcription en cours..") modele = whisper.load_model(WHISPER_MODEL) resultat = modele.transcribe(fichier_audio, language="fr") texte = resultat["text"].strip() print(f"Vous : {texte}") return texte def demander_ollama(prompt): """Envoie le texte à Ollama et récupère la réponse""" print("🤖 Génération de la réponse..") reponse = requests.post( f"{OLLAMA_URL}/api/generate", json={ "model": OLLAMA_MODEL, "prompt": f"Tu es un assistant vocal français. Réponds brièvement et clairement. Question : {prompt} Réponse :", "stream": False }, timeout=60 ) resultat = reponse.json() texte = resultat.get("response", "").strip() print(f"Assistant : {texte}") return texte def main(): print("=== Assistant Vocal Local (Whisper + Ollama) ===") print(f"Modèle Whisper : {WHISPER_MODEL}") print(f"Modèle Ollama : {OLLAMA_MODEL}") print("Appuyez sur Entrée pour parler, 'q' pour quitter.
") while True: commande = input("Appuyez sur Entrée pour parler (q=quitter) : ") if commande.lower() == "q": break try: fichier = enregistrer_audio() texte = transcrire(fichier) if texte and texte != ".": demander_ollama(texte) os.unlink(fichier) except KeyboardInterrupt: print("
Au revoir !") break except Exception as e: print(f"Erreur : {e}") if __name__ == "__main__": main()
Points clés du code :
- Ligne 12-14 : Variables d'environnement configurables sans toucher au code.
WHISPER_MODEL="base"pour les machines avec moins de 8 Go RAM. - Ligne 19-28 : ffmpeg enregistre en WAV 16kHz mono, format optimal pour Whisper. Sur Linux, remplacer
avfoundationparpulseoualsa. - Ligne 31-37 : Whisper charge le modèle une seule fois en mémoire puis transcrit. Le paramètre
language="fr"force la détection en français et améliore la précision de 15 à 20%. - Ligne 40-54 : L'API Ollama reçoit le prompt avec un système prompt en français. Le timeout de 60 secondes couvre les réponses longues.
Tester et valider que ça fonctionne
# Lancer le script
cd ~/assistant-vocal
source bin/activate
python assistant.py # Résultat attendu dans le terminal :
# === Assistant Vocal Local (Whisper + Ollama) ===
# Modèle Whisper : turbo
# Modèle Ollama : llama3.2:3b
# Appuyez sur Entrée pour parler (q=quitter) :
#
# Appuyez sur Entrée pour parler (q=quitter) :
# 🎤 Enregistrement pendant 8 secondes..
# 📝 Transcription en cours..
# Vous : Quelle est la capitale de la France ?
# 🤖 Génération de la réponse..
# Assistant : La capitale de la France est Paris.
Si la transcription renvoie du texte vide ou des caractères étranges :
- Vérifiez que votre micro fonctionne :
ffmpeg -f avfoundation -i ":0" -t 3 test.wavpuisffplay test.wav - Si Whisper hallucine (texte répétitif), ajoutez
compression_ratio_threshold=2.4dansmodele.transcribe() - Si Ollama ne répond pas :
curl http://localhost:11434/api/tagsdoit retourner la liste des modèles installés
Déployer et utiliser en production
Pour lancer l'assistant au démarrage de la session, ajoutez un alias dans ~/.zshrc ou ~/.bashrc :
# Alias de lancement rapide
alias assistant="source ~/assistant-vocal/bin/activate && python ~/assistant-vocal/assistant.py"
Pour exécuter Ollama en arrière-plan au démarrage (Linux) :
sudo systemctl enable ollama
sudo systemctl start ollama
Sur macOS, Ollama se lance automatiquement si l'application est dans /Applications. Pour mettre à jour Ollama : ollama pull llama3.2:3b (télécharge la dernière version du modèle). Pour mettre à jour Whisper : pip install -U openai-whisper.
Aller plus loin : 3 extensions concrètes
1. Ajouter la synthèse vocale (texte vers parole) — Installer pip install pyttsx3 et ajouter après la ligne demander_ollama() : import pyttsx3; engine = pyttsx3.init(); engine.say(reponse); engine.runAndWait(). L'assistant parle maintenant à voix haute.
2. Connecter une base de connaissances (RAG local) — Installer ChromaDB (pip install chromadb) et les embeddings Ollama (ollama pull nomic-embed-text). Indexez vos documents PDF puis injectez les passages pertinents dans le prompt Ollama. Voir le guide embeddings Ollama.
3. Ajouter un historique de conversation — Modifier demander_ollama() pour envoyer les 5 derniers échanges via le paramètre context de l'API Ollama. Cela permet des conversations fluides où l'assistant se souvient du contexte.
Comment refuser un loyer supérieur à 30 % du revenu en 2026 ?
Étapes à suivre5
Étape 1 — Installer les dépendances système (ffmpeg, Python, Ollama)
Installez ffmpeg avec votre gestionnaire de paquets :brew install ffmpegsur macOS ousudo apt install ffmpeg -ysur Ubuntu. Vérifiez avecffmpeg -version(version 6.0+). Installez Python 3.8 à 3.11 — attention, Python 3.12+ est incompatible avec numba, une dépendance de Whisper. Créez un environnement virtuel :python3 -m venv ~/assistant-vocal && source ~/assistant-vocal/bin/activate. Installez ensuite Ollama v0.23.4 :curl -fsSL https://ollama.com/install.sh | sh. Vérifiez avecollama --version. Téléchargez le modèle Llama 3.2:3b (2 Go) :ollama pull llama3.2:3b. Testez :ollama run llama3.2:3b "Bonjour"doit afficher une réponse en 1 à 3 secondes. Si vous obtenez l'erreur"digest mismatch", relancezollama pull llama3.2:3b. Sur Mac avec Apple Silicon, Ollama utilise automatiquement le GPU Metal (MPS). Sur Linux avec NVIDIA, vérifiez quenvidia-smidétecte votre carte.Étape 2 — Installer Whisper et configurer l'environnement
Dans votre environnement virtuel activé (source ~/assistant-vocal/bin/activate), installez Whisper :pip install -U openai-whisper. Cette commande installe aussi PyTorch, tiktoken et les autres dépendances. Vérifiez l'installation :whisper --helpdoit afficher les options du CLI. Téléchargez le modèle turbo en lançant une première transcription :whisper --model turbo --language fr test.wav. Le téléchargement de 3 Go se fait automatiquement au premier lancement. Si vous avez moins de 8 Go de RAM, utilisez--model base(74M paramètres, 1 Go VRAM) au lieu de turbo. Erreur"No module named setuptools_rust": lancezpip install setuptools-rustpuis réessayez. Erreur"No module named numba": vérifiez votre version de Python (python3 --version) — doit être 3.8 à 3.11. Configurez les variables d'environnement dans~/.zshrc:export WHISPER_MODEL=turboetexport OLLAMA_MODEL=llama3.2:3b.Étape 3 — Écrire le script assistant.py
Créez le fichier~/assistant-vocal/assistant.pyavec le code complet fourni dans la section principale. Le script comporte 3 fonctions clés :enregistrer_audio()utilise ffmpeg pour capturer 8 secondes de micro en WAV 16kHz mono (format optimal pour Whisper),transcrire()charge Whisper et convertit l’audio en texte français,demander_ollama()envoie le texte à l’API Ollama locale et reçoit la réponse. Important : sur Linux, remplacez-f avfoundation -i ":0"par-f pulse -i defaultou-f alsa -i defaultdans la commande ffmpeg. Sur Windows avec WSL2, utilisez-f pulse -i defaultaprès avoir configuré PulseAudio. Le paramètrelanguage="fr"dansmodele.transcribe()améliore la précision de 15 à 20% sur le français par rapport à la détection automatique. Pour tester chaque fonction indépendamment :python -c "from assistant import transcrire; print(transcrire("test.wav"))"pour vérifier que Whisper fonctionne, puispython -c "from assistant import demander_ollama; print(demander_ollama("Bonjour"))"pour vérifier la connexion Ollama.Étape 4 — Tester, déboguer et optimiser
Lancez le script :cd ~/assistant-vocal && source bin/activate && python assistant.py. Appuyez sur Entrée, parlez 8 secondes, attendez la transcription puis la réponse. Si la transcription est vide : vérifiez votre micro avecffmpeg -f avfoundation -i ":0" -t 3 test.wav && ffplay test.wav. Si Whisper hallucine (répète du texte), ajoutezcompression_ratio_threshold=2.4dans l'appel àtranscribe(). Si Ollama ne répond pas : vérifiez que le serveur tourne aveccurl http://localhost:11434/api/tags— doit afficher{"models":[{"name":"llama3.2:3b"..}]}. Si Ollama est lent (plus de 10 secondes par réponse), passez au modèle 1b :export OLLAMA_MODEL=llama3.2:1b. Sur Mac Intel sans GPU, Whisper fonctionne en CPU : attendez 5 à 15 secondes par transcription avec le modèle turbo, ou 1 à 3 secondes avec le modèle base.Étape 5 — Déployer en utilisation quotidienne
Ajoutez un alias dans~/.zshrcou~/.bashrc:alias assistant="source ~/assistant-vocal/bin/activate && python ~/assistant-vocal/assistant.py". Puissource ~/.zshrc. Pour lancer Ollama au démarrage sur Linux :sudo systemctl enable ollama && sudo systemctl start ollama. Sur macOS, installez l'application Ollama depuis ollama.com/download pour le lancement automatique. Pour améliorer les performances : sur Mac M1/M2, Whisper et Ollama utilisent automatiquement le GPU Metal. Sur Linux avec NVIDIA, vérifiez CUDA avecnvidia-smi. Pour les mises à jour :pip install -U openai-whisperpour Whisper,ollama pull llama3.2:3bpour le modèle Ollama. Pour ajouter la synthèse vocale :pip install pyttsx3puis ajoutezimport pyttsx3; engine = pyttsx3.init(); engine.say(reponse); engine.runAndWait()après la génération de réponse.
Conseils pratiques
- Utilisez
WHISPER_MODEL=baseetOLLAMA_MODEL=llama3.2:1bsur une machine avec 4 Go de RAM — le modèle base (74M paramètres) consomme 1 Go VRAM et llama3.2:1b consomme 1 Go RAM. - Forcez
language="fr"dansmodele.transcribe()— la détection automatique de langue ajoute 2 à 5 secondes de latence et se trompe sur les phrases courtes en français. - Augmentez
RECORD_DURATIONà 15 ou 20 secondes pour les questions longues, mais gardez 8 secondes par défaut pour un rythme de conversation naturel.
Points d'attention
- Erreur
"No module named numba"au lancement de Whisper : votre Python est en version 3.12+ qui est incompatible. Installez Python 3.11 (brew install python@3.11sur macOS) et recréez le venv avecpython3.11 -m venv ~/assistant-vocal. - Erreur
"digest mismatch, file must be downloaded again"lors deollama pull: problème intermittent de vérification SHA256. Relancez simplementollama pull llama3.2:3b— le téléchargement reprendra là où il s'est arrêté. - Whisper hallucine (répète du texte sans sens) : ajoutez
compression_ratio_threshold=2.4dansmodele.transcribe()pour filtrer les segments avec un ratio de compression suspect. Cela élimine 90% des hallucinations sur les silences.
Questions fréquentes5
Whisper fonctionne-t-il sans GPU ?
base (74M paramètres, 1 Go VRAM) en CPU pour un compromis vitesse/précision acceptable.Quelle version de Python est nécessaire pour Whisper ?
python3 --version. Sur macOS : brew install python@3.11. Sur Ubuntu : sudo apt install python3.11 python3.11-venv.Whisper et Ollama sont-ils gratuits et open-source ?
Oui. Whisper est sous licence MIT (utilisation commerciale autorisée). Ollama est sous licence MIT également. Les modèles Llama 3.2 sont sous licence Meta (libre pour la recherche et l'utilisation personnelle, restriction pour plus de 700 millions d'utilisateurs mensuels). Aucune clé API, aucun abonnement, aucune donnée envoyée.
Comment résoudre l'erreur ffmpeg: command not found ?
brew install ffmpeg sur macOS, sudo apt install ffmpeg -y sur Ubuntu, choco install ffmpeg sur Windows. Puis relancez votre terminal pour que le PATH soit mis à jour. Vérifiez avec ffmpeg -version.Quel modèle choisir pour 8 Go de RAM ?
Avec 8 Go de RAM : Whisper turbo (6 Go VRAM mais 2 Go en CPU) + Llama 3.2:3b (2 Go RAM). Total : environ 4 Go en utilisation. Avec 4 Go de RAM : Whisper base (1 Go VRAM) + Llama 3.2:1b (1 Go RAM). Total : environ 2 Go. Whisper turbo offre 15 à 20% de meilleure précision que le modèle base sur le français.
Guides Technologie & IA
Voir toutConstruire un chatbot local avec Ollama et Python en 30 minutes
Utiliser DeepSeek V4 en 2026 pour améliorer la recherche
Utiliser Claude Opus 4.7 en 2026 pour améliorer la productivité
Comment créer et gérer ses mots de passe de manière sécurisée en 2026
Reconnaître un deepfake en 2026 — Comment ça marche
Poursuivez votre lecture
Multi-catégoriesComment refuser un loyer supérieur à 30 % du revenu en 2026 ?
Transmission d'entreprise 2026 : dispositifs fiscaux et étapes clés pour vendre ou céder son affaire
"Impôts du Cœur" : les agents des finances publiques proposent leur aide à la déclaration de revenus sur le marché
Équipe éditoriale GuidePratiquefr
Rédacteurs spécialisés en droit, fiscalité et finances
Rédigé et vérifié par notre équipe de rédacteurs spécialisés. Sources officielles consultées : service-public.fr, legifrance.gouv.fr, impots.gouv.fr, ameli.fr. Dernière vérification : 14 mai 2026.
Sources officielles consultées
Les informations contenues dans ce guide sont fournies à titre indicatif et ne remplacent pas un conseil professionnel personnalisé.