Skip to main content
Retour au blog
Blog

Saisie vocale locale et privée avec Whisper on-device

Pourquoi MadoHub exécute la reconnaissance vocale sur votre machine au lieu d'appeler une API cloud, ce que ça signifie pour la confidentialité et le coût, et comment tirer le meilleur de la dictée.

MadoHub se trouve à côté de votre codebase. Quand vous dictez dedans, vous décrivez souvent la chose que vous regardez actuellement — une stack trace, un nom de variable, un snippet de fichier de config, parfois un secret que vous lisez sur un fichier .env pour l'expliquer à un agent. Ce n'est pas un audio que vous voulez confier par défaut à une API vocale tierce. La saisie vocale dans MadoHub n'en appelle donc aucune. Elle exécute whisper.cpp localement, dans le même processus que le reste de l'application.

Ce post est sur pourquoi cette décision compte et comment tirer le meilleur de la dictée dans MadoHub, à un niveau de détail sur lequel vous pouvez agir.

Comment MadoHub gère ça

Aucun audio ne quitte la machine

Il n'y a pas d'upload en streaming, pas de clé API, pas de requête vers un fournisseur de speech-to-text. L'audio capturé est transcrit par un modèle Whisper local qui vit sur votre disque. Le seul appel réseau dans toute la fonctionnalité, c'est le téléchargement unique du modèle ; après ça, l'enregistrement et la transcription se font tous les deux machine hors ligne.

Ça a deux conséquences directes qui méritent d'être nommées :

  • Rien de ce que vous dites (ni de ce qui est à l'écran pendant que vous le dites) n'est transmis nulle part. Pour un outil conçu pour se trouver à l'intérieur de votre codebase de travail, ce n'est pas un nice-to-have — c'est la raison pour laquelle la saisie vocale est utilisable pour quoi que ce soit de sensible.
  • Il n'y a pas de coût par minute ou par requête. Une fois un modèle téléchargé, transcrire est gratuit et non mesuré — c'est du calcul local, pas un appel d'API facturé.

Fonctionne hors ligne

Parce que le modèle vit sur disque et que le transcripteur tourne in-process, la saisie vocale fonctionne sans aucune connexion internet, tant que le fichier modèle est déjà présent. MadoHub vérifie ça avant même d'ouvrir le micro : si le modèle sélectionné n'est pas téléchargé, il vous envoie à Paramètres → Voix avec une invite à le télécharger, plutôt que d'enregistrer dans le vide et de ne fail qu'au moment de la transcription.

Rembourré pour les utterances courtes, filtré pour le bruit

L'encodeur de Whisper a été entraîné sur des chunks de 30 secondes et s'en sort mieux avec quelques secondes de contexte. Les utterances très courtes — un mot ou deux rapide — peuvent déclencher un mode d'échec connu de Whisper où le décodeur boucle la même phrase indéfiniment. MadoHub s'en prémunit en rembourrant les enregistrements courts avec un bref moment de silence avant la transcription, donnant au décodeur assez de marge pour trouver une passe unique cohérente.

L'audio silencieux ou ambigu peut quand même produire du garbage, donc MadoHub applique deux seuils pour dropper les segments qui ressemblent à du silence ou du bruit à faible confiance avant qu'ils ne deviennent du texte. Résultat : les tranches silencieuses ne se transforment pas en transcriptions hallucinées dans votre prompt.

Chargé une fois, réutilisé, et déchargé à la demande

Le modèle Whisper est lazy-loadé : rien n'est lu depuis le disque avant la première requête de transcription. Une fois chargé, il reste résident en mémoire et est réutilisé entre les appels — pour le modèle small par défaut, ça représente environ 500 Mo maintenus en RAM aussi longtemps que la saisie vocale est en usage. Si vous changez de taille de modèle dans Paramètres → Voix, MadoHub décharge l'ancien modèle plutôt que de laisser un buffer périmé traîner, et charge le nouveau sélectionné à la transcription suivante.

Conseils pratiques

  • Téléchargez un modèle avant d'en avoir besoin. La saisie vocale n'ouvrira pas le micro tant qu'un modèle n'est pas présent. Choisissez-en un dans Paramètres → Voix à l'avance pour que la première dictée ne soit pas bloquée sur un téléchargement.
  • Choisissez une taille de modèle qui correspond à votre machine. Le modèle small par défaut est un bon compromis précision/empreinte (~500 Mo résidents). Les modèles plus grands sont plus précis mais plus lourds ; les plus petits sont plus légers mais moins précis. Changez dans Paramètres → Voix et le changement prend effet à la transcription suivante.
  • Parlez naturellement, pas mot par mot. Parce que Whisper gère mieux les chunks de 30 secondes que les fractions de seconde, les phrases normales se transcrivent plus fiablement que les mots isolés. Si vous dictez un mot à la fois, attendez-vous à des artefacts de répétition occasionnels.
  • Utilisez-la pour ce qui est à l'écran. La dictée brille quand vous décrivez une stack trace, déroulez un bug, ou narrez un plan en regardant le code — exactement les cas où vous préférez ne pas confier l'audio à une API cloud.
  • Restez hors ligne si vous voulez. Une fois le modèle téléchargé, la transcription fonctionne réseau entièrement coupé. Si vous travaillez sur quelque chose de sensible, c'est une propriété significative, pas une curiosité.

Rien de tout ça n'est de l'ingénierie exotique — l'attrait est que tout le chemin du micro au texte est court, local et inspectable, ce qui est exactement ce qu'on veut quand ce qu'on dicte peut être une description de code qui n'est pas censé quitter votre laptop.

Documentation associée