Szeretnél egy apró hangasszisztenst, ami tényleg követi az utasításaidat, a saját hardvereden fut, és nem rendel véletlenül tizenkét ananászt, mert félreértett? Egy Raspberry Pi-vel ellátott, barkácsolt mesterséges intelligencia asszisztens meglepően megvalósítható, szórakoztató és rugalmas. Be kell kötnöd egy figyelmeztető szót, a beszédfelismerést (ASR = automatikus beszédfelismerés), egy agyat a természetes nyelvhez (szabályok vagy LLM) és egy szövegfelolvasót (TTS). Adj hozzá néhány szkriptet, egy-két szolgáltatást és néhány gondos hangbeállítást, és máris van egy zsebben elférő okoshangszóród, amely betartja a szabályaidat.
Segítünk, hogy a nulláról beszélhess a Pi-ddel a szokásos szőrhúzogatás nélkül. Áttekintjük az alkatrészeket, a beállítást, a kódot, az összehasonlításokat, a buktatókat... az egész burritót. 🌯
Cikkek, amiket esetleg ezután érdemes elolvasnod:
🔗 Hogyan tanulmányozzuk hatékonyan a mesterséges intelligenciát?
Készíts tanulmányi ütemtervet, gyakorló projekteket, és kövesd nyomon a haladást.
🔗 Hogyan indítsunk mesterséges intelligenciával foglalkozó céget?
Probléma validálása, MVP felépítése, csapat összeállítása, kezdeti ügyfelek biztosítása.
🔗 Hogyan használjuk a mesterséges intelligenciát a hatékonyabb munkavégzéshez?
Automatizálja a rutinfeladatokat, egyszerűsítse a munkafolyamatokat és növelje a kreatív teljesítményt.
🔗 Hogyan építsd be a mesterséges intelligenciát a vállalkozásodba?
Nagy hatású folyamatok azonosítása, kísérleti projektek megvalósítása, a befektetés megtérülésének mérése, skálázás.
Mitől lesz egy Raspberry Pi-vel készült, barkácsolt mesterséges intelligencia asszisztens jó ✅
-
Alapértelmezés szerint privát – a hanganyagokat lehetőség szerint helyben tárolja. Ön dönti el, hogy mi hagyja el az eszközt.
-
Moduláris – cserélhető alkatrészek, mint például a Lego: wake word motor, ASR, LLM, TTS.
-
Megfizethető – többnyire nyílt forráskódú, combo mikrofonok, hangszórók és egy Pi.
-
Feltörhető – otthonautomatizálásra, irányítópultokra, rutinokra, egyedi készségekre vágysz? Könnyű.
-
Megbízható – szolgáltatásvezérelt, automatikusan elindul és elkezdi a figyelést.
-
Szórakoztató – sokat fogsz tanulni a hangzásról, a folyamatokról és az eseményvezérelt tervezésről.
Apró tipp: Ha Raspberry Pi 5-öt használsz, és nehezebb helyi modelleket tervezel futtatni, egy rápattintható hűtő segít tartós terhelés alatt. (Kétség esetén válaszd a Pi 5-höz tervezett hivatalos aktív hűtőt.) [1]
Szükséges alkatrészek és szerszámok 🧰
-
Raspberry Pi : A szabad magasság miatt Pi 4 vagy Pi 5 ajánlott.
-
microSD kártya : 32 GB+ ajánlott.
-
USB mikrofon : egy egyszerű USB konferenciamikrofon nagyszerű.
-
Hangszóró : USB vagy 3,5 mm-es hangszóró, vagy egy I2S erősítő HAT.
-
Hálózat : Ethernet vagy Wi-Fi.
-
Opcionális kiegészítők: ház, aktív hűtő a Pi 5-höz, nyomógomb a hívásindításhoz, LED gyűrű. [1]
Operációs rendszer és alapbeállítás
-
Flash Raspberry Pi operációs rendszer Raspberry Pi Imagerrel. Ez az egyszerű módja annak, hogy egy bootolható microSD kártyát szerezz a kívánt előbeállításokkal. [1]
-
Indítás, csatlakozás a hálózathoz, majd csomagok frissítése:
sudo apt update && sudo apt upgrade -y
-
Hang alapjai
a raspi-configsegítségével állíthatja be . Az USB és HDMI hang minden modellen támogatott; a Bluetooth kimenet a Bluetooth-szal rendelkező modelleken érhető el. [1] -
Eszközök ellenőrzése:
arecord -l aplay -l
Ezután teszteld a felvételt és a lejátszást. Ha a szintek furcsának tűnnek, ellenőrizd a keverőket és az alapértelmezett beállításokat, mielőtt a mikrofont hibáztatod.

Az építészet egy pillantásra 🗺️
Egy értelmes mesterséges intelligencia asszisztens Raspberry Pi flow-val így néz ki:
Ébresztőszó → élő hangfelvétel → ASR átírás → szándékkezelés vagy LLM → válaszszöveg → TTS → hanglejátszás → opcionális műveletek MQTT-n vagy HTTP-n keresztül.
-
Wake word : A Porcupine kicsi, pontos és lokálisan fut, kulcsszavankénti érzékenységszabályozással. [2]
-
ASR : A Whisper egy többnyelvű, általános célú ASR modell, amelyet körülbelül 680 ezer órán át tanítottak; robusztus az akcentusokkal/háttérzajjal szemben. Eszközön belüli használatra
a whisper.cppegy egyszerű C/C++ következtetési útvonalat biztosít. [3][4] -
Agy : A választásod – felhőalapú LLM API-n keresztül, szabálymotor vagy lokális következtetés a teljesítménytől függően.
-
TTS : A Piper lokálisan generál természetes beszédet, elég gyorsan ahhoz, hogy szerény hardvereken is frappáns válaszokat adjon. [5]
Gyors összehasonlító táblázat 🔎
| Eszköz | Legjobb | Ár-érték arányú | Miért működik? |
|---|---|---|---|
| Sündisznó ébresztő szó | Mindig figyelő trigger | Ingyenes szint + | Alacsony CPU-használat, pontos, egyszerű kötések [2] |
| Suttogás.cpp | Helyi ASR a Pi-n | Nyílt forráskódú | Jó pontosság, CPU-barát [4] |
| Gyorsabb suttogás | Gyorsabb ASR CPU/GPU-n | Nyílt forráskódú | CTranslate2 optimalizálások |
| Piper TTS | Helyi beszédkimenet | Nyílt forráskódú | Gyors hangok, sok nyelv [5] |
| Felhőalapú LLM API | Gazdag érvelés | Használatalapú | Nagy számítási terhek tehermentesítése |
| Csomópont-RED | Műveletek összehangolása | Nyílt forráskódú | Vizuális folyamatok, MQTT-barát |
Lépésről lépésre építés: Az első hanghurkod 🧩
A Porcupine-t fogjuk használni az ébresztőszóhoz, a Whispert az átíráshoz, egy könnyű „agyfüggvényt” a válaszhoz (cseréld le a választott LLM-edre), és a Pipert a beszédhez. Tartsd minimálisan, majd iterálj.
1) Függőségek telepítése
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install hangeszköz numpy
-
Porcupine: töltsd le a nyelvedhez tartozó SDK-t/kötéseket, és kövesd a gyorsindítási útmutatót (hozzáférési kulcs + kulcsszólista + hangkeretek →
.process). [2] -
Whisper (CPU-barát): build whisper.cpp :
git klón 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
A fentiek a projekt gyors indulását tükrözik. [4]
Inkább a Pythont részesíted előnyben?
A faster-whisper(CTranslate2) gyakran gyorsabb, mint a hagyományos Python szerényebb processzorokon.
2) Piper TTS beállítása
git clone https://github.com/rhasspy/piper cd piper make # Tölts le egy hangmintát, ami tetszik, pl. hu_US-amy echo "Szia." | ./piper --model voices/hu/hu_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
A Piper eszközön belüli TTS-hez készült, több hang-/nyelvi opcióval. [5]
3) Minimális asszisztens ciklus Pythonban
Szándékosan kompakt: vár egy ébresztő kifejezésre (csonkra), rögzíti, átírja a whisper.cpp , választ generál (helyőrző), majd Piperen keresztül beszél. Cserélje ki a helyőrzőt a kedvenc LLM-edre vagy szabálylogikádra.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # csere Porcupine-ra éles környezetben [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(másodperc * 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 "Nem látom a felhőket, de lehet, hogy rendben lesznek. Hozz magaddal kabátot, minden esetre." return "Azt mondtad: " + 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("Asszisztens kész. Írd be az ébresztő kifejezést a teszteléshez.") 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("Felhasználó:", text); print("Asszisztens:", válasz) speak(válasz) else: print("Írd be az ébresztő kifejezést a ciklus teszteléséhez.")
Valódi ébresztőszó-észleléshez integrálja a Porcupine streaming-detektorát (alacsony CPU-igény, kulcsszónkénti érzékenység). [2]
Hangolás, Ami Tényleg Számít 🎚️
Néhány apró javítással tízszer okosabbnak érzed majd az asszisztensed:
-
Mikrofon távolság : A 30–60 cm az ideális távolság sok USB mikrofon esetében.
-
Szintek
a raspi-configsegítségével kezelhetjük . [1] -
Szobaakusztika : a kemény falak visszhangot okoznak; egy puha szőnyeg a mikrofon alá segít.
-
Ébresztőszó küszöbérték : túl érzékeny → szellemindítók; túl szigorú → a műanyagra fogsz kiabálni. A Porcupine-ban kulcsszónként módosíthatod az érzékenységet. [2]
-
Hőmérséklet : a Pi 5 hosszú átiratai a hivatalos aktív hűtőnek köszönhetően tartós teljesítményt nyújtanak. [1]
Játékból háztartási géppé válás: Szolgáltatások, automatikus indítás, állapotfelmérések 🧯
Az emberek elfelejtik a szkripteket futtatni. A számítógépek elfelejtik a kedvességet. Alakítsd át a ciklusodat felügyelt szolgáltatássá:
-
Hozz létre egy systemd egységet:
[Egység] Leírás=DIY Voice Assistant After=network.target sound.target [Szolgáltatás] Felhasználó=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Telepítés] WantedBy=multi-user.target
-
Engedélyezze:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Rönkfarkok:
journalctl -u assistant -f
Most már rendszerindításkor elindul, összeomláskor újraindul, és általában úgy viselkedik, mint egy eszköz. Egy kicsit unalmas, de sokkal jobb.
Képességrendszer: Tedd igazán hasznossá otthon 🏠✨
Miután a hangbemenet és a hangkimenet stabil, adjon hozzá műveleteket:
-
Intent router : egyszerű kulcsszóalapú útvonalak gyakori feladatokhoz.
-
Okosotthon : események közzététele az MQTT-n, vagy a Home Assistant HTTP-végpontjainak meghívása.
-
Bővítmények : gyors Python függvények, mint például
a set_timer,what_is_the_time,play_radio,run_scene.
Még egy felhőalapú LLM esetén is a ciklusban a nyilvánvaló helyi parancsokat kell először irányítani a sebesség és a megbízhatóság érdekében.
Csak helyi szolgáltatás vs. Felhőalapú segítség: Kompromisszumok, amiket érezni fogsz 🌓
Csak helyi használatra
Előnyök: privát, offline, kiszámítható költségek.
Hátrányok: a nehezebb modellek lassúak lehetnek kisebb táblákon. A Whisper többnyelvű betanítása segít a robusztusság fenntartásában, ha az eszközön vagy egy közeli szerveren tárolod. [3]
Felhőalapú segítségnyújtás
Előnyök: hatékony érvelés, nagyobb kontextuális ablakok.
Hátrányok: az adatok elhagyják az eszközt, hálózati függőség, változó költségek.
Egy hibrid gyakran nyer: ébresztőszó + ASR lokális → API hívása logikai válaszhoz → TTS lokális. [2][3][5]
Hibaelhárítás: Furcsa gremlinek és gyors megoldások 👾
-
Ébresztőszó okozta téves riasztások : csökkentse az érzékenységet, vagy próbáljon ki egy másik mikrofont. [2]
-
ASR késleltetés : használjon kisebb Whisper modellt, vagy fordítsa le
a whisper.cppfájlt kiadási jelzőkkel (-j --config Release). [4] -
Akadozó TTS : előre generáljon gyakori kifejezéseket; ellenőrizze az audioeszközt és a mintavételi frekvenciákat.
-
Nem észlelhető mikrofon : ellenőrizd
az arecord -l parancsotés a keverőket. -
Hőszabályozás : a tartós teljesítmény érdekében használja a Pi 5 hivatalos aktív hűtőjét. [1]
Biztonsági és adatvédelmi megjegyzések, amelyeket feltétlenül el kell olvasnia 🔒
-
Tartsd naprakészen a Pi-det az APT segítségével.
-
Ha felhőalapú API-t használ, naplózza az elküldött adatokat, és először fontolja meg a személyes bitek helyi szerkesztését.
-
Futtassa a szolgáltatásokat a lehető legkevesebb jogosultsággal; kerülje
a sudo parancsotaz ExecStartban, kivéve, ha feltétlenül szükséges. -
Biztosítson csak helyi hívásokra alkalmas módot a vendégek számára, vagy csendes órákat.
Változatok építése: Keverd és párosítsd, mint egy szendvicset 🥪
-
Ultralokális : Porcupine + whisper.cpp + Piper + egyszerű szabályok. Privát és stabil. [2][4][5]
-
Gyors felhőasszisztens : Porcupine + (kisebb helyi Whisper vagy felhőalapú ASR) + helyi TTS + felhőalapú LLM.
-
Otthonautomatizálási központ : Node-RED vagy Home Assistant folyamatok hozzáadása rutinokhoz, jelenetekhez és érzékelőkhöz.
Példa Skill: Lights On MQTT-n keresztül 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "otthon/nappali/világítás/beállítás" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "BE" if state.lower().startswith("be") else "KI" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # if "kapcsold fel a villanyt" in text: set_light("be")
Adj hozzá egy olyan bemondószöveget, mint például: „kapcsold fel a nappali lámpáját”, és úgy fogod érezni magad, mint egy varázsló.
Miért működik ez a verem a gyakorlatban 🧪
-
A Porcupine hatékony és pontos a figyelmeztető szavak felismerésében kis táblákon, ami lehetővé teszi a folyamatos figyelést. [2]
-
A Whisper széleskörű, többnyelvű képzése robusztussá teszi a változatos környezetekhez és akcentusokhoz. [3]
-
A whisper.cppezt az energiát olyan csak CPU-s eszközökön is felhasználhatóvá teszi, mint a Pi. [4] -
A Piper fürgén tartja a válaszokat anélkül, hogy hanganyagot küldene egy felhőalapú TTS-re. [5]
Túl hosszú, nem olvastam el
Építs egy moduláris, privát, barkácsolt MI asszisztenst Raspberry Pi-vel a Porcupine ébresztőszóhoz, a Whisper ( a whisper.cpp- ) ASR-hez, a választott agyad a válaszokhoz és a Piper a helyi TTS-hez kombinálásával. Csomagold be systemd szolgáltatásként, hangold a hangot, és kösd be MQTT vagy HTTP műveletekbe. Olcsóbb, mint gondolnád, és furcsa módon élvezetes vele élni. [1][2][3][4][5]
Referenciák
-
Raspberry Pi szoftver és hűtés – Raspberry Pi Imager (letöltés és használat) és Pi 5 Active Cooler termékinformációk
-
Porcupine Wake Word – SDK és gyors üzembe helyezés (kulcsszavak, érzékenység, lokális következtetés)
-
Whisper (ASR modell) – Többnyelvű, robusztus ASR, ~680 ezer órányi betanítással
-
Radford és munkatársai, Robusztus beszédfelismerés nagyléptékű gyenge felügyelettel (Whisper): bővebben
-
-
whisper.cpp – CPU-barát Whisper-következtetés CLI-vel és build lépésekkel
-
Piper TTS – Gyors, helyi neurális TTS több hanggal/nyelvvel