Hogyan építsünk egy barkács AI asszisztenst Raspberry Pi-vel

Hogyan építsünk egy barkács AI asszisztenst Raspberry Pi-vel

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

  1. 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]

  2. Indítás, csatlakozás a hálózathoz, majd csomagok frissítése:

sudo apt update && sudo apt upgrade -y
  1. Hang alapjai a raspi-config segí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]

  2. 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.

 

Mesterséges intelligencia Raspberry Pi

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.cpp egy 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-config segí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á:

  1. 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
  1. Engedélyezze:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
  1. 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.cpp fá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 parancsot az 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.cpp ezt 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

  1. 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

  2. Porcupine Wake Word – SDK és gyors üzembe helyezés (kulcsszavak, érzékenység, lokális következtetés)

  3. 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

  4. whisper.cpp – CPU-barát Whisper-következtetés CLI-vel és build lépésekkel

  5. Piper TTS – Gyors, helyi neurális TTS több hanggal/nyelvvel

Találd meg a legújabb mesterséges intelligenciát a hivatalos AI Assistant áruházban

Rólunk


Vissza a bloghoz