Wil je een kleine spraakassistent die daadwerkelijk naar je luistert, op je eigen hardware draait en niet per ongeluk twaalf ananassen bestelt omdat hij je verkeerd heeft verstaan? Een doe-het-zelf AI-assistent met een Raspberry Pi is verrassend haalbaar, leuk en flexibel. Je sluit een activeringswoord aan, spraakherkenning (ASR = automatische spraakherkenning), een brein voor natuurlijke taalverwerking (regels of een LLM) en tekst-naar-spraak (TTS). Voeg een paar scripts, een of twee services en wat zorgvuldige audio-aanpassingen toe, en je hebt een zakformaat slimme speaker die jouw regels opvolgt.
We helpen je van nul af aan met communiceren met je Raspberry Pi, zonder de gebruikelijke frustraties. We behandelen onderdelen, installatie, code, vergelijkingen, valkuilen... alles erop en eraan. 🌯
Artikelen die u wellicht interessant vindt om na dit artikel te lezen:
🔗 Hoe je AI effectief kunt bestuderen
Stel een studieplan op, oefen met projecten en houd de voortgang bij.
🔗 Hoe start je een AI-bedrijf?
Het probleem valideren, een MVP bouwen, een team samenstellen en de eerste klanten binnenhalen.
🔗 Hoe AI te gebruiken om productiever te zijn
Automatiseer routinetaken, stroomlijn workflows en verhoog de creatieve output.
🔗 Hoe integreer je AI in je bedrijf?
Identificeer processen met grote impact, voer pilots uit, meet het rendement op investering (ROI) en schaal op.
Wat maakt een goede doe-het-zelf AI-assistent met Raspberry Pi? ✅
-
Standaard privé – houd audio zoveel mogelijk lokaal. Jij bepaalt wat het apparaat verlaat.
-
Modulair – verwisselbare componenten zoals bij Lego: wake word engine, ASR, LLM, TTS.
-
Betaalbaar – voornamelijk open source, standaard microfoons, luidsprekers en een Raspberry Pi.
-
Hackable – wil je domotica, dashboards, routines of aangepaste functies? Geen probleem.
-
Betrouwbaar – servicegestuurd, start automatisch op en begint direct met luisteren.
-
Leuk – je leert veel over audio, processen en event-driven design.
Kleine tip: Als je een Raspberry Pi 5 gebruikt en van plan bent zwaardere lokale modellen te draaien, helpt een clip-on koeler bij langdurige belasting. (Kies bij twijfel de officiële Active Cooler die speciaal voor de Pi 5 is ontworpen.) [1]
Onderdelen en gereedschap die je nodig hebt 🧰
-
Raspberry Pi : Een Pi 4 of Pi 5 wordt aanbevolen voor voldoende rekenkracht.
-
microSD-kaart : 32 GB of meer aanbevolen.
-
USB-microfoon : een simpele USB-conferentiemicrofoon is prima.
-
Luidspreker : USB- of 3,5 mm-luidspreker, of een I2S-versterker HAT.
-
Netwerk : Ethernet of Wi-Fi.
-
Optionele extra's: behuizing, actieve koeler voor Pi 5, drukknop voor push-to-talk, LED-ring. [1]
Besturingssysteem en basisconfiguratie
-
Flash Raspberry Pi OS met Raspberry Pi Imager. Het is de eenvoudigste manier om een opstartbare microSD-kaart te krijgen met de gewenste presets. [1]
-
Start de computer op, maak verbinding met het netwerk en update vervolgens de pakketten:
sudo apt update && sudo apt upgrade -y
-
Audio-basisprincipes : Op Raspberry Pi OS kunt u de standaarduitvoer, niveaus en apparaten instellen via de desktop-interface of
raspi-config. USB- en HDMI-audio worden door alle modellen ondersteund; Bluetooth-uitvoer is beschikbaar op modellen met Bluetooth. [1] -
Apparaten verifiëren:
arecord -l aplay -l
Test vervolgens de opname en weergave. Als de niveaus vreemd lijken, controleer dan de mixers en standaardinstellingen voordat je de microfoon de schuld geeft.

Architectuur in vogelvlucht 🗺️
Een praktische doe-het-zelf AI-assistent met Raspberry Pi Flow ziet er als volgt uit:
Activeringswoord → live audio-opname → ASR-transcriptie → intentieverwerking of LLM → antwoordtekst → TTS → audio afspelen → optionele acties via MQTT of HTTP.
-
Wake word : Porcupine is klein, nauwkeurig en draait lokaal met per-keyword gevoeligheidsregeling. [2]
-
ASR : Whisper is een meertalig, algemeen toepasbaar ASR-model dat is getraind op ongeveer 680.000 uur; het is robuust tegen accenten/achtergrondgeluid. Voor gebruik op het apparaat
whisper.cppeen gestroomlijnd C/C++-inferentiepad. [3][4] -
Hersenen : U heeft de keuze uit een cloudgebaseerd LLM-systeem via API, een regelsengine of lokale inferentie, afhankelijk van de rekenkracht.
-
TTS : Piper genereert lokaal natuurlijke spraak, snel genoeg voor vlotte reacties op bescheiden hardware. [5]
Snelle vergelijkingstabel 🔎
| Hulpmiddel | Het beste voor | Prijsachtig | Waarom het werkt |
|---|---|---|---|
| Egel Wake Word | Altijd luisterende trigger | Gratis niveau + | Lage CPU-belasting, nauwkeurige, eenvoudige bindingen [2] |
| Whisper.cpp | Lokale ASR op Pi | Open source | Goede nauwkeurigheid, CPU-vriendelijk [4] |
| Sneller-Fluisteren | Snellere ASR op CPU/GPU | Open source | CTranslate2-optimalisaties |
| Piper TTS | Lokale spraakuitvoer | Open source | Snelle stemmen, veel talen [5] |
| Cloud LLM API | Rijke redenering | Gebruiksgebaseerd | Ontlast de computer van de zware rekenkracht |
| Node-RED | Het orkestreren van acties | Open source | Visuele workflows, MQTT-vriendelijk |
Stapsgewijs opbouwen: Je eerste stemloop 🧩
We gebruiken Porcupine voor het activeringswoord, Whisper voor transcriptie, een eenvoudige "brein"-functie voor het antwoord (vervang dit door je favoriete LLM) en Piper voor spraak. Houd het minimaal en breid het vervolgens uit.
1) Installeer de afhankelijkheden
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
-
Porcupine: download de SDK/bindings voor je taal en volg de snelstartgids (toegangssleutel + trefwoordenlijst + audioframes →
.process). [2] -
Whisper (CPU-vriendelijk): compileer 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
Het bovenstaande weerspiegelt de snelle start van het project. [4]
Geef je de voorkeur aan Python?
faster-whisper(CTranslate2) is vaak sneller dan standaard Python op bescheiden CPU's.
2) Stel Piper TTS in
git clone https://github.com/rhasspy/piper cd piper make # Download een spraakmodel naar keuze, bijvoorbeeld en_US-amy echo "Hallo daar." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper is ontworpen voor TTS op het apparaat zelf met meerdere spraak-/taalopties. [5]
3) Een minimale assistent-loop in Python
Bewust compact: wacht op een activeringszin (stub), neemt deze op, transcribeert met whisper.cpp , genereert een antwoord (placeholder) en spreekt vervolgens via Piper. Vervang de placeholder door je favoriete LLM of regellogica.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # vervangen door Porcupine in productie [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 "Ik zie geen wolken, maar het is misschien wel goed. Neem voor de zekerheid een jas mee." return "Je zei: " + 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("Assistent gereed. Typ de wake-zin om te testen.") 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("Gebruiker:", text); print("Assistent:", reply) speak(reply) else: print("Typ de wake-zin om de lus te testen.")
Voor echte wake-word-detectie kunt u de streamingdetector van Porcupine integreren (lage CPU-belasting, gevoeligheid per trefwoord). [2]
Audiotuning die er echt toe doet 🎚️
Met een paar kleine aanpassingen voelt je assistent wel tien keer slimmer aan:
-
Microfoonafstand : 30-60 cm is een ideale afstand voor veel USB-microfoons.
-
Niveaus : voorkom clipping bij de invoer en zorg voor een stabiele weergave; corrigeer de routing voordat je codefouten probeert op te lossen. Op Raspberry Pi OS kun je het uitvoerapparaat en de niveaus beheren via systeemtools of
raspi-config. [1] -
Ruimteakoestiek : harde muren veroorzaken echo's; een zachte mat onder de microfoon helpt.
-
Drempelwaarde voor het activeringswoord : te gevoelig → spooktriggers; te streng → je schreeuwt tegen plastic. Porcupine laat je de gevoeligheid per trefwoord aanpassen. [2]
-
Thermische prestaties : lange transcripties op de Pi 5 profiteren van de officiële actieve koeler voor aanhoudende prestaties. [1]
Van speelgoed naar huishoudelijk apparaat: onderhoud, automatische start, gezondheidschecks 🧯
Mensen vergeten scripts uit te voeren. Computers vergeten aardig te zijn. Maak van je lus een beheerde service:
-
Maak een systemd-eenheid aan:
[Unit] Description=DIY Voice Assistant 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
-
Schakel het in:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Logboekstaarten:
journalctl -u assistant -f
Nu start het automatisch op bij het opstarten, herstart het na een crash en gedraagt het zich over het algemeen als een huishoudelijk apparaat. Een beetje saai, maar een stuk beter.
Vaardigheidssysteem: Maak het thuis echt nuttig 🏠✨
Zodra de spraakinvoer en -uitvoer goed werken, voeg je acties toe:
-
Intent router : eenvoudige keyword routes voor veelvoorkomende taken.
-
Slimme woning : publiceer gebeurtenissen via MQTT of roep de HTTP-eindpunten van Home Assistant aan.
-
Plugins : snelle Python-functies zoals
set_timer,what_is_the_time,play_radio,run_scene.
Zelfs met een cloud-LLM in de loop, is het raadzaam om voor de snelheid en betrouwbaarheid eerst de meest voor de hand liggende lokale commando's door te sturen.
Alleen lokaal versus cloudondersteuning: afwegingen die je zult merken 🌓
Alleen lokaal.
Voordelen: privé, offline, voorspelbare kosten.
Nadelen: zwaardere modellen kunnen traag zijn op kleine boards. De meertalige training van Whisper draagt bij aan de robuustheid als je het op het apparaat zelf of op een nabijgelegen server bewaart. [3]
Cloudondersteuning:
Pluspunten: krachtige redenering, grotere contextvensters.
Minpunten: gegevens verlaten het apparaat, afhankelijkheid van het netwerk, variabele kosten.
Een hybride aanpak wint vaak: wake word + ASR lokaal → roep een API aan voor redenering → TTS lokaal. [2][3][5]
Probleemoplossing: Vreemde problemen en snelle oplossingen 👾
-
Onterechte triggers door het wake-woord : verlaag de gevoeligheid of probeer een andere microfoon. [2]
-
ASR-vertraging : gebruik een kleiner Whisper-model of bouw
whisper.cppmet release-vlaggen (-j --config Release). [4] -
Schokkerige TTS : genereer vooraf veelgebruikte zinnen; controleer uw audioapparaat en samplefrequentie.
-
Geen microfoon gedetecteerd : controleer
arecord -len mixers. -
Thermische throttling : gebruik de officiële Active Cooler op de Pi 5 voor aanhoudende prestaties. [1]
Beveiligings- en privacynotities die u echt moet lezen 🔒
-
Houd je Raspberry Pi up-to-date met APT.
-
Als je een cloud-API gebruikt, registreer dan wat je verzendt en overweeg om persoonlijke gegevens eerst lokaal te anonimiseren.
-
Voer services uit met minimale bevoegdheden; vermijd
`sudo`in `ExecStart` tenzij noodzakelijk. -
Bied een modus aan die alleen lokaal toegankelijk is voor gasten of tijdens stille uren.
Bouwvarianten: Mix en match als een sandwich 🥪
-
Ultra-lokaal : Porcupine + whisper.cpp + Piper + eenvoudige regels. Privé en robuust. [2][4][5]
-
Snelle cloudondersteuning : Porcupine + (kleinere lokale Whisper of cloud ASR) + lokale TTS + cloud LLM.
-
Centrale domotica : Voeg Node-RED- of Home Assistant-flows toe voor routines, scènes en sensoren.
Voorbeeldvaardigheid: Verlichting inschakelen 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")
Voeg een gesproken zin toe zoals: "Doe de lamp in de woonkamer aan," en je voelt je net een tovenaar.
Waarom deze combinatie in de praktijk werkt 🧪
-
Porcupine is efficiënt en nauwkeurig in het detecteren van wake-words op kleine boards, waardoor altijd luisteren mogelijk is. [2]
-
Dankzij de uitgebreide, meertalige training is Whisper bestand tegen uiteenlopende omgevingen en accenten. [3]
-
whisper.cppzorgt ervoor dat die kracht bruikbaar blijft op apparaten die alleen een CPU hebben, zoals de Pi. [4] -
Piper houdt de reacties vlot zonder audio naar een cloud-TTS te verzenden. [5]
Te lang, niet gelezen
Bouw een modulaire, privé AI-assistent met een Raspberry Pi door Porcupine te combineren voor het wake-woord, Whisper (via whisper.cpp ) voor spraakherkenning, een door jou gekozen brein voor antwoorden en Piper voor lokale tekst-naar-spraak. Verpak het als een systemd-service, stem de audio af en koppel MQTT- of HTTP-acties. Het is goedkoper dan je denkt en verrassend prettig in gebruik. [1][2][3][4][5]
Referenties
-
Software en koeling voor de Raspberry Pi – Raspberry Pi Imager (downloaden en gebruiken) en productinformatie over de Pi 5 Active Cooler.
-
Porcupine Wake Word – SDK & snelstartgids (trefwoorden, gevoeligheid, lokale inferentie)
-
Whisper (ASR-model) – Meertalige, robuuste ASR getraind op circa 680.000 uur aan data.
-
Radford et al., Robuuste spraakherkenning via grootschalige zwakke supervisie (Whisper): lees meer
-
-
whisper.cpp – CPU-vriendelijke Whisper-inferentie met CLI en build-stappen
-
Piper TTS – Snelle, lokale neurale TTS met meerdere stemmen/talen