Vill du ha en liten röstassistent som faktiskt följer dina instruktioner, körs på din egen hårdvara och inte av misstag beställer tolv ananaser för att den missförstod dig? En gör-det-själv AI-assistent med Raspberry Pi är förvånansvärt genomförbar, rolig och flexibel. Du kommer att koppla in ett väckningsord, taligenkänning (ASR = automatisk taligenkänning), en hjärna för naturligt språk (regler eller en LLM) och text-till-tal (TTS). Lägg till några skript, en eller två tjänster och några noggranna ljudjusteringar, så har du en smart högtalare i fickformat som följer dina regler.
Nu tar vi dig från noll till att prata med din Pi utan det vanliga hårdragandet. Vi går igenom delar, installation, kod, jämförelser, missöden... hela burrito. 🌯
Artiklar du kanske vill läsa efter den här:
🔗 Hur man studerar AI effektivt
Skapa en studieplan, öva på projekt och följ upp framsteg.
🔗 Hur man startar ett AI-företag
Validera problemet, bygga MVP, sätta ihop teamet, säkra initiala kunder.
🔗 Hur man använder AI för att bli mer produktiv
Automatisera rutinuppgifter, effektivisera arbetsflöden och öka kreativiteten.
🔗 Hur man integrerar AI i sin verksamhet
Identifiera processer med stor effekt, implementera pilotprojekt, mät ROI, skala upp.
Vad som gör en bra gör-det-själv AI-assistent med Raspberry Pi ✅
-
Privat som standard – håll ljudet lokalt där det är möjligt. Du bestämmer vad som lämnar enheten.
-
Modulär – byt ut komponenter som Lego: wake word-motor, ASR, LLM, TTS.
-
Prisvärd – mestadels öppen källkod, vanliga mikrofoner, högtalare och en Pi.
-
Hackbar – vill du ha hemautomation, dashboards, rutiner, anpassade färdigheter? Enkelt.
-
Tillförlitlig – tjänstehanterad, startar och lyssnar automatiskt.
-
Kul – du kommer att lära dig mycket om ljud, processer och händelsedriven design.
Litet tips: Om du använder en Raspberry Pi 5 och planerar att köra tyngre lokala modeller, hjälper en clip-on-kylare under långvarig belastning. (Vid tveksamhet, välj den officiella Active Cooler som är designad för Pi 5.) [1]
Delar och verktyg du behöver 🧰
-
Raspberry Pi: Pi 4 eller Pi 5 rekommenderas för takhöjd.
-
microSD-kort: 32 GB+ rekommenderas.
-
USB-mikrofon: en enkel USB-konferensmikrofon är utmärkt.
-
Högtalare: USB- eller 3,5 mm-högtalare, eller en I2S-förstärkare HAT.
-
Nätverk: Ethernet eller Wi-Fi.
-
Extra tillbehör: hölje, aktiv kylare för Pi 5, tryckknapp för push-to-talk, LED-ring. [1]
OS och baslinjekonfiguration
-
Flash Raspberry Pi OS med Raspberry Pi Imager. Det är det enkla sättet att få ett startbart microSD-kort med de förinställningar du vill ha. [1]
-
Starta, anslut till nätverket och uppdatera sedan paketen:
sudo apt uppdatering && sudo apt uppgradering -y
-
Grunderna i ljud: På Raspberry Pi OS kan du ställa in standardutgång, nivåer och enheter via skrivbordsgränssnittet eller
raspi-config. USB- och HDMI-ljud stöds på alla modeller; Bluetooth-utgång är tillgänglig på modeller med Bluetooth. [1] -
Verifiera enheter:
arecord -l aplay -l
Testa sedan inspelning och uppspelning. Om nivåerna verkar konstiga, kontrollera mixrar och standardinställningar innan du skyller på mikrofonen.

Arkitekturen i korthet 🗺️
En förnuftig gör-det-själv AI-assistent med Raspberry Pi flow ser ut så här:
Wake word → live ljudinspelning → ASR-transkription → intenthantering eller LLM → svarstext → TTS → ljuduppspelning → valfria åtgärder via MQTT eller HTTP.
-
Wake word: Porcupine är liten, exakt och körs lokalt med känslighetskontroll per nyckelord. [2]
-
ASR: Whisper är en flerspråkig, generell ASR-modell som tränats på ~680k timmar; den är robust mot accenter/bakgrundsljud. För användning på enheten
whisper.cppen smidig C/C++-inferensväg. [3][4] -
Hjärna: Ditt val – en molnbaserad LLM via API, en regelmotor eller lokal inferens beroende på hästkrafter.
-
TTS: Piper genererar naturligt tal lokalt, tillräckligt snabbt för snabba svar på måttlig hårdvara. [5]
Snabb jämförelsetabell 🔎
| Verktyg | Bäst för | Prissnålt | Varför det fungerar |
|---|---|---|---|
| Porcupine Wake Word | Alltid lyssnande trigger | Gratis nivå + | Låg CPU, exakta, enkla bindningar [2] |
| Whisper.cpp | Lokal ASR på Pi | Öppen källkod | God noggrannhet, CPU-vänlig [4] |
| Snabbare viskning | Snabbare ASR på CPU/GPU | Öppen källkod | CTranslate2-optimeringar |
| Piper TTS | Lokal talutgång | Öppen källkod | Snabba röster, många språk [5] |
| Cloud LLM API | Rik resonemang | Användningsbaserad | Avlastar tung beräkning |
| Nod-RED | Orkestrerande åtgärder | Öppen källkod | Visuella flöden, MQTT-vänliga |
Steg-för-steg-bygge: Din första röstloop 🧩
Vi använder Porcupine för väckningsord, Whisper för transkription, en lättviktig "hjärnfunktion" för svaret (ersätt med din valfria LLM) och Piper för tal. Håll det minimalt och iterera sedan.
1) Installera beroenden
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 installera ljudenhet numpy
-
Porcupine: hämta SDK/bindningarna för ditt språk och följ snabbstartsanvisningen (åtkomsttangent + nyckelordslista + ljudbildrutor →
.process). [2] -
Whisper (CPU-vänlig): bygg whisper.cpp:
git klon 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
Ovanstående speglar projektets snabba start. [4]
Föredrar du Python?
faster-whisper(CTranslate2) är ofta snabbare än vanligt Python på måttliga processorer.
2) Konfigurera Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # Ladda ner en röstmodell du gillar, t.ex. en_US-amy echo "Hej där." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper är utformad för TTS på enheten med flera röst-/språkalternativ. [5]
3) En minimal assistentloop i Python
Medvetet kompakt: väntar på en väckningsfras (stub), spelar in, transkriberar med whisper.cpp, genererar ett svar (platshållare) och talar sedan via Piper. Byt platshållaren mot din favorit LLM eller regellogik.
importera os, subprocess, wave importera ljudenhet som sd WAKE_WORD = "hej dator" # byt ut mot Porcupine i produktion [2] RECORD_SECONDS = 6 SAMPLE_RATE = 16000 KANALER = 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(sökväg, sekunder=RECORD_SECONDS): ljud = sd.rec(int(sekunder * SAMPLE_RATE), samplerate=SAMPLE_RATE, kanaler=KANALER, dtype='int16') sd.wait() med wave.open(sökväg, '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 "Jag kan inte se molnen, men det kan gå bra. Ta med en jacka för säkerhets skull." returnera "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("Assistenten är redo. Skriv in wake-frasen för att testa.") 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("Användare:", text); print("Assistent:", reply) speak(reply) else: print("Skriv väckningsfrasen för att testa loopen.")
För verklig väckningsordsdetektering, integrera Porcupines strömningsdetektor (låg CPU, känslighet per nyckelord). [2]
Ljudinställning som faktiskt spelar roll 🎚️
Några små korrigeringar får din assistent att känna sig 10 gånger smartare:
-
Mikrofonavstånd: 30–60 cm är ett optimalt avstånd för många USB-mikrofoner.
-
Nivåer: undvik klippning vid inmatning och håll uppspelningen sund; fixa routing innan du jagar kodspöken. På Raspberry Pi OS kan du hantera utdataenheter och nivåer via systemverktyg eller
raspi-config. [1] -
Rumsakustik: hårda väggar orsakar ekon; en mjuk matta under mikrofonen hjälper.
-
Tröskelvärde för väckningsord: för känslig → spökutlösare; för strikt → du kommer att skrika åt plast. Med Porcupine kan du justera känsligheten per nyckelord. [2]
-
Termik: långa transkriptioner på Pi 5 drar nytta av den officiella aktiva kylaren för bibehållen prestanda. [1]
Från leksak till apparat: Tjänster, autostart, hälsokontroller 🧯
Människor glömmer att köra skript. Datorer glömmer att vara trevliga. Förvandla din loop till en hanterad tjänst:
-
Skapa en systemd-enhet:
[Enhet] Beskrivning=Gör-det-själv-röstassistent Efter=network.target sound.target [Tjänst] Användare=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=alltid RestartSec=3 [Installera] WantedBy=multi-user.target
-
Aktivera det:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Loggsvansar:
journalctl -u assistent -f
Nu startar den vid uppstart, startar om vid krasch och beter sig generellt som en vanlig apparat. Lite tråkigt, mycket bättre.
Färdighetssystem: Gör det faktiskt användbart hemma 🏠✨
När röstingång och röstutgång är fasta, lägg till åtgärder:
-
Intent-router: enkla nyckelordsrutter för vanliga uppgifter.
-
Smart hem: publicera händelser till MQTT eller anropa Home Assistants HTTP-slutpunkter.
-
Insticksprogram: snabba Python-funktioner som
set_timer,what_is_the_time,play_radioochrun_scene.
Även med en moln-LLM i loopen, dirigera uppenbara lokala kommandon först för hastighet och tillförlitlighet.
Endast lokalt kontra molnassistans: Avvägningar du kommer att märka 🌓
Endast lokalt
Fördelar: privat, offline, förutsägbara kostnader.
Nackdelar: tyngre modeller kan vara långsamma på små kort. Whispers flerspråkiga träning bidrar till robustheten om du förvarar den på enheten eller på en närliggande server. [3]
Molnassistans
Fördelar: kraftfullt resonemang, större kontextfönster.
Nackdelar: data lämnar enheten, nätverksberoende, rörliga kostnader.
En hybrid vinner ofta: wake word + ASR lokal → anropa ett API för resonemang → TTS lokal. [2][3][5]
Felsökning: Konstiga gremlins och snabba lösningar 👾
-
Falska utlösare för väckningsord: sänk känsligheten eller prova en annan mikrofon. [2]
-
ASR-fördröjning: använd en mindre Whisper-modell eller bygg
whisper.cppmed releaseflaggor (-j --config Release). [4] -
Hackig TTS: förgenerera vanliga fraser; bekräfta din ljudenhet och samplingsfrekvenser.
-
Ingen mikrofon detekterad: kontrollera
arecord -loch mixrar. -
Termisk strypning: använd den officiella Active Cooler på Pi 5 för bibehållen prestanda. [1]
Säkerhets- och sekretessmeddelanden som du faktiskt borde läsa 🔒
-
Håll din Pi uppdaterad med APT.
-
Om du använder något moln-API, logga vad du skickar och överväg att först redigera bort personliga bitar lokalt.
-
Kör tjänster med minst behörighet; undvik
sudoi ExecStart om det inte krävs. -
Erbjud ett lokalt läge endast för gäster eller tysta timmar.
Byggvarianter: Mixa och matcha som en smörgås 🥪
-
Ultralokalt: Porcupine + whisper.cpp + Piper + enkla regler. Privat och robust. [2][4][5]
-
Snabb molnhjälp: Porcupine + (mindre lokal Whisper eller moln-ASR) + TTS lokal + moln-LLM.
-
Hemautomationscentral: Lägg till Node-RED- eller Home Assistant-flöden för rutiner, scener och sensorer.
Exempelfärdighet: Tänd ljus via MQTT 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "hem/vardagsrum/belysning/set" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "PÅ" if state.lower().startswith("på") annars "AV" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # if "slå på lamporna" i texten: set_light("på")
Lägg till en röstreplik som: ”tänd vardagsrumslampan” så känner du dig som en trollkarl.
Varför den här stacken fungerar i praktiken 🧪
-
Porcupine är effektiv och noggrann vid detektering av wake-word på små kort, vilket gör ständigt lyssnande möjligt. [2]
-
Whispers omfattande, flerspråkiga träning gör den robust i varierande miljöer och accenter. [3]
-
whisper.cppgör att den strömmen kan användas på CPU-bara enheter som Pi. [4] -
Piper håller svaren snabba utan att skicka ljud till en molnbaserad TTS. [5]
För långt, läste inte
Bygg en modulär, privat gör-det-själv AI-assistent med Raspberry Pi genom att kombinera Porcupine för wake word, Whisper (via whisper.cpp) för ASR, ditt val av hjärna för svar, och Piper för lokal TTS. Slå in den som en systemd-tjänst, finjustera ljud och koppla in MQTT- eller HTTP-åtgärder. Det är billigare än du tror, och märkligt nog trevligt att leva med. [1][2][3][4][5]
Referenser
-
Raspberry Pi-programvara och kylning – produktinformation om Raspberry Pi Imager (nedladdning och användning) och Pi 5 Active Cooler
-
Porcupine Wake Word – SDK och snabbstart (nyckelord, känslighet, lokal inferens)
-
Whisper (ASR-modell) – Flerspråkig, robust ASR tränad på ~680 000 timmar
-
Radford et al., Robust taligenkänning via storskalig svag övervakning (viskning): läs mer
-
-
whisper.cpp – CPU-vänlig Whisper-inferens med CLI och byggsteg
-
Piper TTS – Snabb, lokal neural TTS med flera röster/språk