Vil du ha en liten stemmeassistent som faktisk følger ledelsen din, kjører på din egen maskinvare og ikke ved et uhell bestiller tolv ananas fordi den misforsto deg? En gjør-det-selv AI-assistent med Raspberry Pi er overraskende oppnåelig, morsom og fleksibel. Du kobler til et vekkeord, talegjenkjenning (ASR = automatisk talegjenkjenning), en hjerne for naturlig språk (regler eller en LLM) og tekst-til-tale (TTS). Legg til noen få skript, en eller to tjenester og noen forsiktige lydjusteringer, og du har en lommevennlig smarthøyttaler som adlyder reglene dine.
La oss hjelpe deg fra null til å snakke med din Pi uten den vanlige hårtrekkingen. Vi dekker deler, oppsett, kode, sammenligninger, misforståelser ... hele burritoen. 🌯
Artikler du kanskje vil lese etter denne:
🔗 Hvordan studere AI effektivt
Lag en studieplan, øv på prosjekter og følg fremdriften.
🔗 Hvordan starte et AI-selskap
Valider problemet, bygg MVP, sett sammen teamet, sikre deg de første kundene.
🔗 Hvordan bruke AI for å bli mer produktiv
Automatiser rutineoppgaver, effektiviser arbeidsflyter og øk kreative resultater.
🔗 Slik integrerer du AI i virksomheten din
Identifiser prosesser med stor innvirkning, implementer pilotprosjekter, mål avkastning på investeringen, skaler.
Hva kjennetegner en god DIY AI-assistent med Raspberry Pi ✅
-
Privat som standard – hold lyden lokal der det er mulig. Du bestemmer hva som forlater enheten.
-
Modulær – bytt ut komponenter som Lego: wake word-motor, ASR, LLM, TTS.
-
Rimelig – for det meste åpen kildekode, standardmikrofoner, høyttalere og en Pi.
-
Hackbar – ønsker du hjemmeautomasjon, dashbord, rutiner, tilpassede ferdigheter? Enkelt.
-
Pålitelig – tjenestestyrt, starter opp og lytter automatisk.
-
Moro – du lærer mye om lyd, prosesser og hendelsesdrevet design.
Lite tips: Hvis du bruker en Raspberry Pi 5 og planlegger å kjøre tyngre lokale modeller, hjelper en klipsbar kjøler under vedvarende belastning. (Hvis du er i tvil, velg den offisielle aktive kjøleren som er designet for Pi 5.) [1]
Deler og verktøy du trenger 🧰
-
Raspberry Pi : Pi 4 eller Pi 5 anbefales for takhøyde.
-
microSD-kort : 32 GB+ anbefales.
-
USB-mikrofon : en enkel USB-konferansemikrofon er flott.
-
Høyttaler : USB- eller 3,5 mm-høyttaler, eller en I2S-forsterker HAT.
-
Nettverk : Ethernet eller Wi-Fi.
-
Ekstrautstyr: kabinett, aktiv kjøler for Pi 5, trykknapp for push-to-talk, LED-ring. [1]
OS og grunnleggende oppsett
-
Flash Raspberry Pi OS med Raspberry Pi Imager. Det er den enkle måten å få en oppstartbar microSD med forhåndsinnstillingene du ønsker. [1]
-
Oppstart, koble til nettverket, og oppdater deretter pakker:
sudo apt oppdatering og sudo apt oppgradering -y
-
Grunnleggende om lyd : På Raspberry Pi OS kan du angi standardutgang, nivåer og enheter via skrivebordsgrensesnittet eller
raspi-config. USB- og HDMI-lyd støttes på tvers av modeller; Bluetooth-utgang er tilgjengelig på modeller med Bluetooth. [1] -
Bekreft enheter:
arecord -l aplay -l
Test deretter opptak og avspilling. Hvis nivåene virker rare, sjekk miksere og standardinnstillinger før du skylder på mikrofonen.

Arkitekturen i korte trekk 🗺️
En fornuftig DIY AI-assistent med Raspberry Pi flow ser slik ut:
Vekkeord → direkte lydopptak → ASR-transkripsjon → intensjonshåndtering eller LLM → svartekst → TTS → lydavspilling → valgfrie handlinger via MQTT eller HTTP.
-
Vekkeord : Porcupine er liten, nøyaktig og kjører lokalt med følsomhetskontroll per nøkkelord. [2]
-
ASR : Whisper er en flerspråklig, generell ASR-modell trent på ~680 000 timer; den er robust mot aksenter/bakgrunnsstøy. For bruk på enheten
whisper.cppen smidig C/C++-inferenssti. [3][4] -
Hjerne : Ditt valg – en skybasert LLM via API, en regelmotor eller lokal inferens avhengig av hestekrefter.
-
TTS : Piper genererer naturlig tale lokalt, raskt nok til raske svar på moderat maskinvare. [5]
Rask sammenligningstabell 🔎
| Verktøy | Best for | Pris-aktig | Hvorfor det fungerer |
|---|---|---|---|
| Pinnsvinvågens ord | Alltid-lytting-trigger | Gratis nivå + | Lav CPU, nøyaktige, enkle bindinger [2] |
| Hviske.cpp | Lokal ASR på Pi | Åpen kildekode | God nøyaktighet, CPU-vennlig [4] |
| Raskere hvisking | Raskere ASR på CPU/GPU | Åpen kildekode | CTranslate2-optimaliseringer |
| Piper TTS | Lokal taleutgang | Åpen kildekode | Raske stemmer, mange språk [5] |
| Cloud LLM API | Rik resonnement | Bruksbasert | Avlaster tung databehandling |
| Node-RED | Orkestrerende handlinger | Åpen kildekode | Visuelle flyter, MQTT-vennlig |
Steg-for-steg-bygging: Din første stemmeløkke 🧩
Vi bruker Porcupine for vekkeord, Whisper for transkripsjon, en lett «hjerne»-funksjon for svaret (erstatt med din foretrukne LLM) og Piper for tale. Hold det minimalt, og iterer deretter.
1) Installer avhengigheter
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install lydenhet numpy
-
Porcupine: Hent SDK-en/bindingene for språket ditt og følg hurtigstartveiledningen (tilgangstast + nøkkelordliste + lydbilder →
.process). [2] -
Whisper (CPU-vennlig): bygg whisper.cpp :
git klon https://github.com/ggml-org/whisper.cpp cd whisper.cpp && cmake -B bygg && cmake --bygg bygg -j ./models/download-ggml-model.sh base.en ./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f your.wav -otxt
Ovennevnte gjenspeiler prosjektets raske start. [4]
Foretrekker du Python?
faster-whisper(CTranslate2) er ofte raskere enn vanlig Python på moderate CPUer.
2) Konfigurer Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # Last ned en stemmemodell du liker, f.eks. en_US-amy echo "Hallo der." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper er utviklet for TTS på enheten med flere tale-/språkalternativer. [5]
3) En minimal assistentløkke i Python
Bevisst kompakt: venter på en vekkefrase (stub), spiller inn, transkriberer med whisper.cpp , genererer et svar (plassholder), og snakker deretter via Piper. Bytt plassholderen med din favoritt LLM eller regellogikk.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hei datamaskin" # bytte for Porcupine i produksjon [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(sti, sekunder=RECORD_SECONDS): audio = sd.rec(int(sekunder * SAMPLE_RATE), samplerate=SAMPLE_RATE, kanaler=KANALER, dtype='int16') sd.wait() med wave.open(sti, 'wb') som w: w.setnchannels(KANALER); 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 "Jeg kan ikke se skyene, men det kan gå bra. Ta med en jakke i tilfelle." return "Du sa: " + 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 klar. Skriv inn aktiveringsfrasen for å teste.") 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("Bruker:", text); print("Assistent:", svar) speak(svar) ellers: print("Skriv inn vekkefrasen for å teste løkken.")
For ekte «wake-word»-deteksjon, integrer Porcupines strømmedetektor (lav CPU og følsomhet per nøkkelord). [2]
Lydjustering som faktisk betyr noe 🎚️
Noen små rettelser får assistenten din til å føle seg 10 ganger smartere:
-
Mikrofonavstand : 30–60 cm er et optimalt område for mange USB-mikrofoner.
-
Nivåer : unngå klipping på input og hold avspillingen fornuftig; fiks ruting før du jager kodespøkelser. På Raspberry Pi OS kan du administrere utgangsenhet og nivåer via systemverktøy eller
raspi-config. [1] -
Romakustikk : harde vegger forårsaker ekko; en myk matte under mikrofonen hjelper.
-
Terskel for vekkeord : for sensitiv → «ghost triggers»; for streng → du kommer til å rope på plast. Med Porcupine kan du justere sensitiviteten per nøkkelord. [2]
-
Termikk : lange transkripsjoner på Pi 5 drar nytte av den offisielle aktive kjøleren for vedvarende ytelse. [1]
Fra leketøy til apparat: Tjenester, autostart, helsesjekker 🧯
Mennesker glemmer å kjøre skript. Datamaskiner glemmer å være hyggelige. Gjør løkken din om til en administrert tjeneste:
-
Opprett en systemd-enhet:
[Enhet] Beskrivelse=DIY Voice Assistant Etter=network.target lyd.target [Tjeneste] Bruker=pi Arbeidskatalog=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Start på nytt=alltid Start på nyttSec=3 [Installer] WantedBy=multi-user.target
-
Aktiver det:
sudo cp assistent.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistent.service
-
Logghaler:
journalctl -u assistent -f
Nå starter den ved oppstart, starter på nytt ved krasj, og oppfører seg generelt som et apparat. Litt kjedelig, mye bedre.
Ferdighetssystem: Gjør det faktisk nyttig hjemme 🏠✨
Når stemme inn og stemme ut er solide, legg til handlinger:
-
Intent-ruter : enkle nøkkelordruter for vanlige oppgaver.
-
Smarthjem : publiser hendelser til MQTT eller ring Home Assistants HTTP-endepunkter.
-
Programtillegg : raske Python-funksjoner som
set_timer,what_is_the_time,play_radioogrun_scene.
Selv med en skybasert LLM i løkken, rute åpenbare lokale kommandoer først for hastighet og pålitelighet.
Kun lokalt vs. skyassistanse: Avveininger du vil merke 🌓
Kun lokalt
Fordeler: privat, offline, forutsigbare kostnader.
Ulemper: tyngre modeller kan være trege på små kort. Whispers flerspråklige opplæring bidrar til robusthet hvis du oppbevarer den på enheten eller på en server i nærheten. [3]
Skyassistanse
Fordeler: kraftig resonnement, større kontekstvinduer.
Ulemper: data forlater enheten, nettverksavhengighet, variable kostnader.
En hybrid vinner ofte: vekkeord + ASR lokal → kall et API for resonnement → TTS lokal. [2][3][5]
Feilsøking: Merkelige gremliner og raske løsninger 👾
-
Falske utløsere for vekkeord : senk følsomheten eller prøv en annen mikrofon. [2]
-
ASR-forsinkelse : bruk en mindre Whisper-modell eller bygg
whisper.cppmed utgivelsesflagg (-j --config Release). [4] -
Hakkete TTS : forhåndsgenerer vanlige fraser; bekreft lydenheten og samplingsfrekvensene.
-
Ingen mikrofon funnet : sjekk
arecord -log miksere. -
Termisk regulering : bruk den offisielle Active Cooler på Pi 5 for vedvarende ytelse. [1]
Sikkerhets- og personvernmerknader du faktisk bør lese 🔒
-
Hold Pi-en din oppdatert med APT.
-
Hvis du bruker et skybasert API, loggfør det du sender og vurder å redigere personlige biter lokalt først.
-
Kjør tjenester med færrest rettigheter; unngå
sudoi ExecStart med mindre det er nødvendig. -
Tilby en lokal modus kun for gjester eller stille timer.
Byggevarianter: Miks og match som en sandwich 🥪
-
Ultralokalt : Porcupine + whisper.cpp + Piper + enkle regler. Privat og robust. [2][4][5]
-
Rask skyhjelp : Porcupine + (mindre lokal Whisper eller sky-ASR) + TTS lokal + sky-LLM.
-
Hjemmeautomasjonssentral : Legg til Node-RED- eller Home Assistant-flyter for rutiner, scener og sensorer.
Eksempelferdighet: Lys på via MQTT 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "hjem/stue/lys/sett" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "PÅ" if state.lower().startswith("på") else "AV" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # if "slå på lysene" i teksten: set_light("på")
Legg til en stemmereplikk som: «skru på stuelampen», så føler du deg som en trollmann.
Hvorfor denne stakken fungerer i praksis 🧪
-
Porcupine er effektiv og nøyaktig når det gjelder å oppdage vekkeord på små brett, noe som gjør det mulig å alltid lytte. [2]
-
Whispers omfattende, flerspråklige opplæring gjør den robust i varierte miljøer og aksenter. [3]
-
whisper.cppsørger for at den strømmen er brukbar på CPU-baserte enheter som Pi. [4] -
Piper sørger for raske svar uten å sende lyd til en skybasert TTS. [5]
For langt, leste det ikke
Bygg en modulær, privat DIY AI-assistent med Raspberry Pi ved å kombinere Porcupine for wake word, Whisper (via whisper.cpp ) for ASR, ditt valg av hjerne for svar, og Piper for lokal TTS. Pakk den inn som en systemd-tjeneste, finjuster lyd og koble til MQTT- eller HTTP-handlinger. Det er billigere enn du tror, og merkelig nok herlig å leve med. [1][2][3][4][5]
Referanser
-
Raspberry Pi-programvare og kjøling – produktinformasjon for Raspberry Pi Imager (nedlasting og bruk) og Pi 5 Active Cooler
-
Porcupine Wake Word – SDK og hurtigstart (nøkkelord, sensitivitet, lokal inferens)
-
Whisper (ASR-modell) – Flerspråklig, robust ASR trent på ~680 000 timer
-
Radford et al., Robust talegjenkjenning via storskala svak overvåking (hvisking): les mer
-
-
whisper.cpp – CPU-vennlig Whisper-inferens med CLI og byggetrinn
-
Piper TTS – Rask, lokal nevral TTS med flere stemmer/språk