cd /news/developer-tools/voice-to-code-100-local-whisper-clau… · home topics developer-tools article
[ARTICLE · art-89421] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Voice-to-code 100 % local : Whisper + Claude Code, zéro octet au cloud

A developer built a fully local voice-to-code pipeline using faster-whisper for transcription and Claude Code's /voice command, ensuring no data leaves the machine. The setup, which runs on CPU with the medium model, achieves about 1.2 seconds latency per phrase on an M2 MacBook, trading cloud speed for privacy.

read5 min views2 publishedAug 9, 2026

Coder à la voix avec ChatGPT, ça marche. Le hic tient en une ligne : chaque mot que tu dictes part chez OpenAI. Depuis le 23 juillet 2026, Codex se pilote à la voix — il ouvre une pull request, cherche l'origine d'un bug, tout ça dans une phrase. Pratique pour un side-project. Rédhibitoire quand le code appartient à un client.

On voulait le même confort sans la fuite. Le résultat est un pipeline 100 % local : faster-whisper pour la transcription, Claude Code et sa commande /voice

pour l'agent. Rien ne sort de la machine — ni la voix, ni le contexte, ni le code. Voici la config exacte, la latence qu'on mesure sur un M2, et les deux bugs qui nous ont coûté une demi-journée.

Parce que « coder à la voix » cache deux choses qu'on confond tout le temps. Le mode vocal de ChatGPT est fait pour converser : il répond, il temporise, il reformule. Dicter du code, c'est l'inverse — tu veux une transcription fidèle et muette, qui ne discute pas, ne reformule pas et n'ajoute rien à ce que tu dis. Deux gestes opposés.

Le vrai stack n'est donc jamais « ChatGPT vocal seul ». C'est un outil de dictée précis d'un côté, un agent de code de l'autre. Codex vocal fait les deux dans le cloud pour 20 €/mois ; un setup local sépare les deux briques et garde tout sur ta machine. Le tour d'horizon complet — prix, outils, cas d'usage — est dans le guide de référence ; ici, on reste sur le terrain technique.

/voice

Depuis mars 2026, Claude Code embarque un mode vocal. Tu tapes /voice

dans le terminal, tu tiens la barre d'espace, tu parles, tu relâches. La transcription passe par un Whisper local, pas par une API distante.

> /voice
[hold space to talk · release to send]

Pour 90 % des cas, ça suffit. Tu dictes une intention, l'agent écrit le code, tu relis. Si tu veux garder la main sur le modèle, la langue et le vocabulaire technique, il faut descendre d'un cran et brancher ta propre transcription.

Trois morceaux : capturer l'audio, le transcrire, l'injecter. On enregistre avec sox

, on transcrit avec faster-whisper, on colle le texte dans le prompt de l'agent.

brew install sox
pip install faster-whisper

Enregistrement à la volée, arrêté au Ctrl-C :

sox -d -q clip.wav

Transcription, en forçant le français :

from faster_whisper import WhisperModel

model = WhisperModel("medium", device="cpu", compute_type="int8")

segments, _ = model.transcribe("clip.wav", language="fr")
print("".join(s.text for s in segments))

Un détail qui compte : sur Mac, faster-whisper tourne sur CPU, pas sur le GPU. Le modèle large-v3

est le plancher de précision en français, mais il rame ; medium

reste le bon compromis. Évite les modèles distil-*

, optimisés pour l'anglais. Sur du français, ils inventent. Si tu veux le GPU, whisper.cpp l'exploite via Metal et va plus vite ; on est resté sur faster-whisper pour son API Python, plus simple à scripter et à biaiser.

On a mesuré le temps entre la fin d'une phrase de 8 secondes et le texte prêt à coller, sur un MacBook M2 16 Go :

Modèle Type Temps Précision FR
medium
int8 ~1,2 s correcte
large-v3
int8 ~3,5 s meilleure
Codex vocal (cloud) 200-450 ms excellente

Le cloud gagne la course de vitesse, sans surprise. Mais 1,2 seconde par phrase ne casse pas un flux de code : tu ne dictes pas à 160 mots/minute en continu, tu réfléchis entre deux instructions. Le vrai coût du local n'est pas la latence, c'est la config initiale.

Voilà le piège que personne ne teste. Dicte « crée une fonction getUserData » à un Whisper réglé en français, et tu récupères ça :

crée une fonction get user data

Trois mots séparés, en minuscules, avec un point ajouté par le modèle. Multiplie ce raté par chaque useState

, chaque endpoint

, chaque nom de variable en anglais, et la transcription entière devient inutilisable au moment de la coller. Le réflexe — épeler, ou dicter la syntaxe à la main — tue alors tout le gain de vitesse. Retour à la case départ.

La bonne réponse tient en deux règles. D'abord, on ne dicte jamais les identifiants : on décrit l'intention (« crée une fonction qui récupère les données utilisateur ») et on laisse l'agent nommer. Ensuite, pour les termes inévitables, on biaise le décodeur avec un initial_prompt

:

segments, _ = model.transcribe(
    "clip.wav",
    language="fr",
    initial_prompt="Termes techniques : useState, getUserData, TypeScript, PostgreSQL, endpoint, refactor.",
)

Ce prompt ne transcrit rien — il oriente le vocabulaire. Nos noms de variables anglais sont ressortis corrects dès qu'ils y figuraient. C'est le genre de détail qu'on ne trouve dans aucun tuto grand public, parce qu'aucun ne code réellement en français.

Après une semaine sur ce setup, le verdict est net. La voix excelle pour prompter l'agent et naviguer ; elle est mauvaise dès qu'il faut de la précision caractère par caractère.

Ce qui marche :

Ce qui casse :

La voix change l'interface, pas le métier. Elle déplace la frappe du clavier vers le micro, mais elle ne supprime ni la décision d'architecture, ni le choix des noms, ni la relecture ligne à ligne. L'agent génère, l'ingénieur tranche — et aucun micro ne tranchera à sa place.

Pour du code perso, Codex vocal est plus simple et plus rapide — assume juste que ta voix part dans le cloud. Tout dépend de l'enjeu. Pour du code client ou propriétaire, le pipeline local Whisper + /voice

est le seul qui garantit que rien ne fuit, au prix d'une latence d'une seconde et d'une soirée de config.

Si tu veux le monter proprement — modèle, vocabulaire, push-to-talk, intégration à ton éditeur — c'est exactement ce qu'on démonte étape par étape dans la formation Claude Code. Et pour rester côté outils, on a comparé Claude Code et Cursor et détaillé le mode vocal de Claude sur Gmail et l'agenda.

── more in #developer-tools 4 stories · sorted by recency
── more on @faster-whisper 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/voice-to-code-100-lo…] indexed:0 read:5min 2026-08-09 ·