Dernières actus
Tech & IA

Créer un assistant vocal intelligent hors ligne avec Raspberry Pi 5

Youssef ELMIZEB · fondateur de tekfold.com · mis à jour le 26 octobre 2026

Un assistant vocal qui fonctionne dans le salon a trois contraintes que le cloud ne résout pas toujours : la latence, la dépendance à Internet, et le fait d’envoyer des conversations de chez toi à un serveur distant. Sur un Raspberry Pi 5, on obtient aujourd’hui un assistant entièrement local, du micro au haut-parleur, avec des temps de réponse compatibles avec une conversation. Ce n’est pas du niveau d’un grand assistant commercial sur tout le spectre de langage, mais sur des tâches ciblées — minuterie, météo, commande de lumières, lecture d’un flux — c’est la bonne architecture, et la seule à garantir le fonctionnement hors ligne.

L’architecture d’une boucle vocale locale

Un assistant local n’est pas un programme unique : c’est une chaîne de quatre traitements, chacun avec sa contrainte propre.

  1. Détection d’activation (wake word). Un petit modèle tourne en continu et écoute un mot-clé. C’est le seul composant qui doit rester actif en permanence, donc le seul qui doit être extrêmement léger.
  2. Reconnaissance vocale (ASR). L’audio est converti en texte. Le choix du modèle dépend de la langue, de la mémoire disponible et de la latence acceptable.
  3. Traitement de la demande. Ici, deux familles : un moteur de règles local (motifs, actions, appareils connectés) ou un modèle de langage local pour comprendre des formulations variées. Le second cas multiplie la consommation.
  4. Synthèse vocale (TTS). Le texte de réponse est converti en audio. Sans elle, l’assistant n’est qu’un afficheur.

Choisir les briques : le compromis latence / qualité / mémoire

Étape Options locales Compromis
Wake word Modèles légers d’activation vocale (openWakeWord et équivalents), ou détection par seuil d’énergie seule Très léger et rapide ; à seuil seul, s’active sur la moindre conversation de la pièce
ASR whisper.cpp ou faster-whisper (variantes réduites), Vosk (modèles multilingues compacts) Les variantes « tiny/base » sont rapides mais erratiques en français ; les variantes supérieures sont meilleures mais pèsent plus lourd en mémoire et en calcul
Traitement Regex + actions locales, ou petit modèle de langage quantifié Règles : fiable, périmètre étroit. Modèle local : langage naturel, mais consommation et qualité très variables sur Pi
TTS Piper (synthèse neurale légère) ou espeak-ng (formant classique) Piper est nettement plus naturel mais demande plus de ressources ; espeak est robotique mais quasi instantané

Un point souvent négligé : le streaming. Si tu reconnais la phrase entière avant de répondre, tu ajoutes une demi-seconde inutile. Une implémentation raisonnable lance la synthèse dès que le premier segment de texte est prêt et interrompt proprement si l’utilisateur reprend la parole.

Le matériel : l’essentiel, sans suréquipement

Le Raspberry Pi 5 constitue la base : ses deux ports USB 3.0 et son contrôleur PCIe permettent d’alimenter correctement un micro USB, et sa mémoire (4 Go minimum, 8 Go conseillés si tu veux un modèle de langage local) évite les tourniquets de swap. Autour, il te faut : un micro (une nappe micro + carte audio externe, ou un micro USB), un haut-parleur amplifié (sortie jack, carte audio USB ou petit ampli I2S), une alimentation stable — le Pi 5 est gourmand et les coupures intempestives proviennent presque toujours d’une alimentation sous-dimensionnée — et un boîtier qui laisse respirer le processeur, celui-ci chauffant franchement en calcul continu.

Pour la calibration, dispose le micro à distance du haut-parleur : sans cela, l’assistant s’active lui-même. Un simple test d’écho, où tu fais parler un enregistrement à volume plein, te dira si tu as un problème d’isolation avant même d’écrire une ligne de code.

Installation logicielle de base

Sur un Raspberry Pi OS récent, le socle tient en quelques commandes. L’ordre compte : les bibliothèques système avant les paquets Python, les modèles téléchargés une seule fois et référencés ensuite en local.

# 1. dépendances système
sudo apt update && sudo apt install -y \
  portaudio19-dev python3-venv git build-essential libasound2-dev

# 2. environnement isolé
python3 -m venv ~/assistant/venv
source ~/assistant/venv/bin/activate
pip install faster-whisper openwakeword piper-tts

# 3. récupération des modèles (une fois, puis rangés en local)
mkdir -p ~/assistant/models && cd ~/assistant/models
# - modèle d'activation vocale (petit, chargé en permanence)
# - modèle ASR en variante adaptée à la mémoire disponible
# - voix Piper en français

# 4. tests unitaires avant la boucle complète
python -m assistant.test --audio echantillon.wav   # doit transcrire correctement
python -m assistant.test --wake  --audio activation.wav

Teste chaque maillon séparément avant de les connecter. Quand la chaîne complète déconne, savoir si c’est l’ASR, le moteur ou la synthèse qui pose problème te fait gagner une soirée de débogage.

Réglages qui font passer de « ça marche » à « c’est utilisable »

  • Cadence de la détection. Un réveil du modèle de wake word toutes les 100 à 200 ms suffit ; plus fin, tu consommes le CPU dont l’ASR a besoin.
  • Seuil de coupure (VAD). Trop bas, l’assistant te coupe en plein milieu de phrase ; trop haut, il attend des silences interminables. Ajuste-le dans ta pièce réelle, pas sur des enregistrements de labo.
  • Contrôle de volume du haut-parleur. Sans limitation, un pic de niveau provoque une saturation qui ruine la reconnaissance des phrases suivantes.
  • Gestion d’erreur parlée. Si la reconnaissance échoue, l’assistant doit le dire à voix haute et redemander, pas rester muet pendant dix secondes.
  • Persistance minimale. Garde en mémoire la dernière intention réussie pour pouvoir dire « annule » — sinon chaque phrase repart de zéro.

Pour la partie transcription, les mêmes modèles servent en dehors de l’assistant : notre transcripteur audio montre le rendu attendu d’une chaîne de reconnaissance correctement réglée.

Questions fréquentes

Quel délai de réponse peut-on attendre sur un Pi 5 ? En ordre de grandeur, quelques centaines de millisecondes pour la détection d’activation, puis de une à trois secondes pour la reconnaissance et la synthèse d’une phrase courte, fortement dépendantes du modèle choisi. Le réglage du streaming compte autant que le choix du matériel.

Faut-il obligatoirement Internet pour l’installation ? Oui au premier téléchargement des modèles, non ensuite. Une fois les fichiers en local, l’assistant fonctionne hors ligne — c’est tout l’objet du montage, et c’est ce qui le distingue des assistants grand public.

Peut-il comprendre toutes les formulations ? Avec un moteur de règles, non : il attend des tâches précises. Avec un petit modèle de langage local, il généralise mieux mais perd en fiabilité sur les actions. Une base de règles pour les actions sensibles et un modèle pour le reste est souvent le meilleur compromis.

Et la confidentialité des conversations ? C’est l’argument principal de l’hors ligne : l’audio ne quitte pas la maison. Vérifie quand même les dépendances qui appellent le réseau (mises à jour, météo, modèles distants) et désactive ce qui n’est pas nécessaire.

Construire un assistant local se résume à assembler quatre briques, choisir leur taille en fonction de la latence acceptable, et tester chaque maillon isolément. C’est un excellent projet d’apprentissage — et le seul cadre où tu contrôles réellement où vont tes données.

À lire aussi

Ne manque aucune actu IA

Les dernières tendances automatisation et IA, directement par email.