Envie d'un assistant vocal miniature qui obéit à vos instructions, fonctionne sur votre propre matériel et ne risque pas de commander douze ananas par erreur ? Créer un assistant IA avec un Raspberry Pi est étonnamment simple, ludique et flexible. Il vous suffit de connecter un mot d'activation, la reconnaissance vocale (ASR = reconnaissance vocale automatique), un module de traitement du langage naturel (règles ou LLM) et la synthèse vocale (TTS). Ajoutez quelques scripts, un ou deux services et quelques réglages audio bien pensés, et vous obtenez une enceinte connectée de poche qui vous obéit au doigt et à l'œil.
Apprenez à communiquer avec votre Raspberry Pi sans vous arracher les cheveux ! Nous aborderons les composants, l’installation, le code, les comparaisons, les pièges… bref, tout y est ! 🌯
Articles que vous pourriez aimer lire après celui-ci :
🔗 Comment étudier efficacement l'IA
Élaborez un plan d'études, réalisez des projets pratiques et suivez vos progrès.
🔗 Comment créer une entreprise d'IA
Valider le problème, créer un MVP, constituer une équipe, fidéliser les premiers clients.
🔗 Comment utiliser l'IA pour être plus productif
Automatisez les tâches routinières, rationalisez les flux de travail et augmentez la production créative.
🔗 Comment intégrer l'IA à votre entreprise
Identifier les processus à fort impact, mettre en œuvre des projets pilotes, mesurer le retour sur investissement, et déployer à plus grande échelle.
Comment créer un bon assistant IA DIY avec Raspberry Pi ✅
-
Par défaut, l'audio est privé – il reste local autant que possible. Vous décidez ce qui quitte l'appareil.
-
Modulaire – composants interchangeables comme des Lego : moteur de mots d’activation, ASR, LLM, TTS.
-
Abordable – principalement des logiciels libres, des micros et haut-parleurs standard, et un Raspberry Pi.
-
Piratable – envie de domotique, de tableaux de bord, de routines, de compétences personnalisées ? Facile.
-
Fiable – géré par le service, démarre et se met à l'écoute automatiquement.
-
C'est amusant ! Vous apprendrez beaucoup sur l'audio, les processus et la conception événementielle.
Petit conseil : si vous utilisez un Raspberry Pi 5 et prévoyez d’exécuter des modèles locaux plus gourmands en ressources, un refroidisseur à pince peut s’avérer utile en cas de charge prolongée. (En cas de doute, choisissez le refroidisseur actif officiel conçu pour le Pi 5.) [1]
Pièces et outils dont vous aurez besoin 🧰
-
Raspberry Pi : Pi 4 ou Pi 5 recommandés pour une marge de manœuvre suffisante.
-
Carte microSD : 32 Go et plus recommandée.
-
Microphone USB : un simple micro de conférence USB est parfait.
-
Haut-parleur : haut-parleur USB ou 3,5 mm, ou un HAT d'amplification I2S.
-
Réseau : Ethernet ou Wi-Fi.
-
Options supplémentaires : boîtier, refroidisseur actif pour Pi 5, bouton-poussoir pour la fonction « push-to-talk », anneau LED. [1]
Configuration du système d'exploitation et de base
-
Flashez le système d'exploitation Raspberry Pi avec Raspberry Pi Imager. C'est la méthode la plus simple pour obtenir une carte microSD amorçable avec les préréglages souhaités. [1]
-
Démarrer, se connecter au réseau, puis mettre à jour les paquets :
sudo apt update && sudo apt upgrade -y
-
Principes de base de l'audio : Sous Raspberry Pi OS, vous pouvez configurer la sortie audio par défaut, les niveaux et les périphériques via l'interface utilisateur du bureau ou
raspi-config. L'audio USB et HDMI est pris en charge sur tous les modèles ; la sortie Bluetooth est disponible sur les modèles compatibles Bluetooth. [1] -
Vérifier les appareils :
arecord -l aplay -l
Ensuite, testez la capture et la lecture. Si les niveaux semblent anormaux, vérifiez les paramètres de mixage et les réglages par défaut avant d'incriminer le micro.

L'architecture en bref 🗺️
Voici à quoi ressemble un assistant IA DIY (fait maison) judicieux basé sur le flux Raspberry Pi
Mot d'activation → capture audio en direct → transcription ASR → gestion des intentions ou LLM → texte de réponse → TTS → lecture audio → actions optionnelles via MQTT ou HTTP.
-
Mot d'activation : Porcupine est petit, précis et fonctionne localement avec un contrôle de sensibilité par mot-clé. [2]
-
ASR : Whisper est un modèle de reconnaissance vocale multilingue et généraliste, entraîné sur environ 680 000 heures ; il est robuste aux accents et au bruit de fond. Pour une utilisation sur appareil,
whisper.cppfournit une méthode d’inférence C/C++ légère. [3][4] -
Cerveau : À vous de choisir – un LLM cloud via API, un moteur de règles ou une inférence locale en fonction de la puissance de calcul.
-
TTS : Piper génère une parole naturelle en local, suffisamment rapide pour des réponses rapides sur du matériel modeste. [5]
Tableau comparatif rapide 🔎
| Outil | Idéal pour | Prix approximatif | Pourquoi ça marche |
|---|---|---|---|
| Porc-épic Mot de réveil | Déclencheur d'écoute permanente | Niveau gratuit + | Faible consommation de ressources CPU, précision, liaisons faciles [2] |
| Murmure.cpp | ASR local sur Pi | Source libre | Bonne précision, compatible avec le processeur [4] |
| Chuchotement plus rapide | ASR plus rapide sur CPU/GPU | Source libre | Optimisations de CTranslate2 |
| Piper TTS | Sortie vocale locale | Source libre | Voix rapides, nombreuses langues [5] |
| API Cloud LLM | Raisonnement riche | L'utilisation basée | Décharge les calculs lourds |
| Node-RED | Actions d'orchestration | Source libre | Flux visuels, compatible MQTT |
Création étape par étape : Votre première boucle vocale 🧩
Nous utiliserons Porcupine pour le mot d'activation, Whisper pour la transcription, une fonction « cerveau » légère pour la réponse (à remplacer par le LLM de votre choix), et Piper pour la synthèse vocale. Restez minimaliste, puis itérez.
1) Installer les dépendances
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
-
Porcupine : récupérez le SDK/les liaisons pour votre langage et suivez le démarrage rapide (touche d'accès + liste de mots clés + trames audio →
.process). [2] -
Whisper (compatible avec les processeurs) : compiler whisper.cpp :
git clone https://github.com/ggml-org/whisper.cpp cd whisper.cpp && cmake -B build && cmake --build build -j ./models/download-ggml-model.sh base.en ./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f your.wav -otxt
Ce qui précède reflète le démarrage rapide du projet. [4]
Vous préférez Python ?
faster-whisper(CTranslate2) est souvent plus rapide que Python standard sur les processeurs modestes.
2) Configurer Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # Téléchargez un modèle de voix de votre choix, par exemple en_US-amy echo "Hello there." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper est conçu pour la synthèse vocale embarquée avec plusieurs options de voix/langue. [5]
3) Une boucle d'assistance minimale en Python
Conçu de manière compacte : attend une phrase d’activation (ébauche), enregistre, transcrit avec whisper.cpp , génère une réponse (espace réservé), puis parle via Piper. Remplacez l’espace réservé par votre logique LLM ou vos règles préférées.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # à remplacer par Porcupine en production [2] RECORD_SECONDS = 6 SAMPLE_RATE = 16000 CHANNELS = 1 WORKDIR = "/home/pi/assistant" ASR_BIN = "/home/pi/whisper.cpp/build/bin/whisper-cli" # [4] ASR_MODEL = "/home/pi/whisper.cpp/models/ggml-base.en.bin" PIPER_BIN = "/home/pi/piper/build/piper" # [5] PIPER_VOICE = "/home/pi/piper/voices/en/en_US-amy-medium.onnx" os.makedirs(WORKDIR, exist_ok=True) def record_wav(path, seconds=RECORD_SECONDS): audio = sd.rec(int(seconds * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') sd.wait() with wave.open(path, 'wb') as w: w.setnchannels(CHANNELS); w.setsampwidth(2); w.setframerate(SAMPLE_RATE) w.writeframes(audio.tobytes()) def transcribe(path): cmd = [ASR_BIN, "-m", ASR_MODEL, "-f", path, "-otxt"] subprocess.run(cmd, check=True, cwd=WORKDIR) with open(path.replace(".wav", ".txt"), "r", encoding="utf-8") as f: return f.read().strip() def generate_reply(prompt): if "weather" in prompt.lower(): return "Je ne vois pas les nuages, mais il devrait faire beau. Prenez une veste au cas où." return "Vous avez dit : " + prompt def speak(text): proc = subprocess.Popen([PIPER_BIN, "--model", PIPER_VOICE, "--output_file", f"{WORKDIR}/reply.wav"], stdin=subprocess.PIPE) proc.stdin.write(text.encode("utf-8")); proc.stdin.close(); proc.wait() subprocess.run(["aplay", f"{WORKDIR}/reply.wav"], check=True) print("Assistant prêt. Saisissez la phrase d'activation pour tester.") while True: typed = input("> ").strip().lower() if typed == WAKE_WORD: wav_path = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transcribe(wav_path) reply = generate_reply(text) print("Utilisateur :", text); print("Assistant :", reply) speak(reply) else: print("Saisissez la phrase d'activation pour tester la boucle.")
Pour une véritable détection du mot de réveil, intégrez le détecteur de flux de Porcupine (faible consommation de CPU, sensibilité par mot-clé). [2]
Un réglage audio qui compte vraiment 🎚️
Quelques petites modifications suffisent pour rendre votre assistant 10 fois plus intelligent :
-
Distance du micro : 30 à 60 cm est une distance optimale pour de nombreux micros USB.
-
Niveaux : évitez l’écrêtage en entrée et assurez une lecture fluide ; corrigez le routage avant de traquer les erreurs de code. Sous Raspberry Pi OS, vous pouvez gérer le périphérique de sortie et les niveaux via les outils système ou
raspi-config. [1] -
Acoustique de la pièce : les murs durs provoquent des échos ; un tapis moelleux sous le micro est utile.
-
Seuil de déclenchement : trop sensible → déclenchements intempestifs ; trop strict → vous risquez de vous énerver contre des objets inutiles. Porcupine vous permet d’ajuster la sensibilité pour chaque mot-clé. [2]
-
Gestion thermique : les longues transcriptions sur Pi 5 bénéficient du système de refroidissement actif officiel pour des performances soutenues. [1]
Du jouet à l'appareil électroménager : services, démarrage automatique, bilans de santé 🧯
Les humains oublient d'exécuter des scripts. Les ordinateurs oublient d'être agréables. Transformez votre boucle en un service géré :
-
Créer une unité systemd :
[Unit] Description=Assistant vocal DIY After=network.target sound.target [Service] User=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
-
Activez-le :
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Queues de journalisation :
journalctl -u assistant -f
Maintenant, il démarre au démarrage, redémarre en cas de plantage et se comporte globalement comme un appareil électroménager. Un peu monotone, certes, mais bien mieux.
Système de compétences : Rendez-le vraiment utile à la maison 🏠✨
Une fois que la saisie et la restitution vocales sont bien en place, ajoutez des actions :
-
Routeur d'intentions : routes par mots-clés simples pour les tâches courantes.
-
Maison connectée : publiez des événements sur MQTT ou appelez les points de terminaison HTTP de Home Assistant.
-
Plugins : fonctions Python rapides comme
set_timer,what_is_the_time,play_radio,run_scene.
Même avec un LLM cloud dans le circuit, privilégiez le routage des commandes locales évidentes pour des raisons de rapidité et de fiabilité.
Local uniquement vs Assistance cloud : des compromis que vous ressentirez 🌓
locale uniquement
; accès hors ligne et coûts prévisibles.
Inconvénients : les modèles lourds peuvent être lents sur les petites cartes. L’entraînement multilingue de Whisper améliore la robustesse si vous l’exécutez sur l’appareil ou sur un serveur à proximité. [3]
de l'assistance cloud
: raisonnement puissant, fenêtres de contexte plus larges.
Inconvénients : les données quittent l'appareil, dépendance au réseau, coûts variables.
Une solution hybride est souvent préférable : mot de réveil + ASR local → appel d’une API pour le raisonnement → TTS local. [2][3][5]
Dépannage : Problèmes étranges et solutions rapides 👾
-
Déclenchements intempestifs du mot de réveil : diminuez la sensibilité ou essayez un autre micro. [2]
-
Retard ASR : utilisez un modèle Whisper plus petit ou compilez
whisper.cppavec des indicateurs de publication (-j --config Release). [4] -
Synthèse vocale hachée : pré-générez des phrases courantes ; vérifiez votre périphérique audio et les fréquences d’échantillonnage.
-
Aucun micro détecté : vérifiez
arecord -let les mixeurs. -
Limitation thermique : utilisez le système de refroidissement actif officiel du Raspberry Pi 5 pour des performances soutenues. [1]
Notes sur la sécurité et la confidentialité que vous devriez vraiment lire 🔒
-
Maintenez votre Raspberry Pi à jour avec APT.
-
Si vous utilisez une API cloud, enregistrez ce que vous envoyez et envisagez de masquer localement les informations personnelles au préalable.
-
Exécutez les services avec le minimum de privilèges ; évitez
sudodans ExecStart sauf si nécessaire. -
Prévoir un mode local uniquement pour les invités ou pendant les heures de silence.
Variantes de construction : Combinez-les comme un sandwich 🥪
-
Ultra-local : Porcupine + whisper.cpp + Piper + règles simples. Privé et robuste. [2][4][5]
-
Assistance cloud rapide : Porcupine + (Whisper local plus petit ou ASR cloud) + TTS local + LLM cloud.
-
Centre névralgique de la domotique : ajoutez des flux Node-RED ou Home Assistant pour les routines, les scènes et les capteurs.
Exemple de compétence : Allumer les lumières via MQTT 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "home/livingroom/light/set" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "ON" if state.lower().startswith("on") else "OFF" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # if "turn on the lights" in text: set_light("on")
Ajoutez une réplique vocale comme : « allume la lampe du salon », et vous vous sentirez comme un magicien.
Pourquoi cette pile fonctionne en pratique 🧪
-
Porcupine est efficace et précis dans la détection du mot de réveil sur les petites cartes, ce qui rend l'écoute permanente possible. [2]
-
Grâce à sa formation multilingue étendue, Whisper est robuste face à des environnements et des accents variés. [3]
-
whisper.cpppermet de rendre cette puissance utilisable sur des appareils ne comportant que du CPU comme le Pi. [4] -
Piper assure des réponses rapides sans envoyer l'audio à un service de synthèse vocale dans le cloud. [5]
Trop long, je ne l'ai pas lu
Créez un assistant IA modulaire et privé avec Raspberry Pi en combinant Porcupine pour la reconnaissance vocale, Whisper (via whisper.cpp ) pour la reconnaissance vocale automatique, le système de votre choix pour les réponses et Piper pour la synthèse vocale locale. Intégrez-le comme un service systemd, optimisez l'audio et configurez les actions MQTT ou HTTP. C'est moins cher que vous ne le pensez et étonnamment agréable à utiliser. [1][2][3][4][5]
Références
-
Logiciels et refroidissement pour Raspberry Pi – Informations produit concernant Raspberry Pi Imager (téléchargement et utilisation) et le refroidisseur actif Pi 5
-
Raspberry Pi Imager : en savoir plus
-
Refroidisseur actif (Pi 5) : en savoir plus
-
-
Porcupine Wake Word – Kit de développement logiciel et démarrage rapide (mots clés, sensibilité, inférence locale)
-
Whisper (modèle de reconnaissance vocale automatique) – Système de reconnaissance vocale multilingue et robuste, entraîné sur environ 680 000 heures.
-
Radford et al., Reconnaissance vocale robuste via une supervision faible à grande échelle (Whisper) : lire la suite
-
-
whisper.cpp – Inférence Whisper optimisée pour le processeur avec interface de ligne de commande et étapes de compilation
-
Piper TTS – Synthèse vocale neuronale locale rapide avec plusieurs voix/langues