Želite majhnega glasovnega asistenta, ki dejansko sledi vašim navodilom, deluje na vaši strojni opremi in vam ne bo pomotoma naročil dvanajst ananasov, ker vas je narobe slišal? Naredi sam AI asistent z Raspberry Pi je presenetljivo dosegljiv, zabaven in prilagodljiv. Povezali boste budno besedo, prepoznavanje govora (ASR = samodejno prepoznavanje govora), možgane za naravni jezik (pravila ali LLM) in pretvorbo besedila v govor (TTS). Dodajte nekaj skriptov, eno ali dve storitvi in nekaj skrbnih zvočnih nastavitev in dobili boste žepni pametni zvočnik, ki upošteva vaša pravila.
Pojdimo od nič do pogovora s svojim Pi-jem brez običajnega vlečenja za lase. Pokrili bomo dele, nastavitev, kodo, primerjave, napake ... celoten burrito. 🌯
Članki, ki jih boste morda želeli prebrati po tem:
🔗 Kako učinkovito preučevati umetno inteligenco
Ustvarite načrt študija, vadite projekte in spremljajte napredek.
🔗 Kako ustanoviti podjetje za umetno inteligenco
Potrdite problem, zgradite MVP, sestavite ekipo, zagotovite začetne stranke.
🔗 Kako uporabljati umetno inteligenco za večjo produktivnost
Avtomatizirajte rutinska opravila, poenostavite delovne procese in povečajte ustvarjalnost.
🔗 Kako vključiti umetno inteligenco v vaše podjetje
Prepoznajte procese z visokim učinkom, izvedite pilotne projekte, izmerite donosnost naložbe in jih skalirajte.
Kaj naredi dobrega DIY pomočnika umetne inteligence z Raspberry Pi ✅
-
Privzeto zasebno – zvok naj bo, kjer je to mogoče, lokalen. Sami se odločite, kaj zapusti napravo.
-
Modularno – zamenjajte komponente, kot je Lego: mehanizem za prebujanje besed, ASR, LLM, TTS.
-
Cenovno dostopno – večinoma odprtokodni, standardni mikrofoni, zvočniki in Raspberry Pi.
-
Vlomljivo – želite domačo avtomatizacijo, nadzorne plošče, rutine, prilagojene veščine? Enostavno.
-
Zanesljivo – upravljano s storitvijo, se zažene in začne poslušati samodejno.
-
Zabavno – veliko se boste naučili o zvoku, procesih in dogodkovno vodenem oblikovanju.
Majhen nasvet: Če uporabljate Raspberry Pi 5 in nameravate uporabljati težje lokalne modele, vam bo pri dolgotrajni obremenitvi pomagal hladilnik s sponko. (V primeru dvoma izberite uradni aktivni hladilnik, zasnovan za Pi 5.) [1]
Deli in orodje, ki jih boste potrebovali 🧰
-
Raspberry Pi : Za prostor nad glavo je priporočljiv Pi 4 ali Pi 5.
-
Kartica microSD : priporočeno 32 GB ali več.
-
USB mikrofon : preprost USB konferenčni mikrofon je odličen.
-
Zvočnik : USB ali 3,5 mm zvočnik ali I2S ojačevalnik HAT.
-
Omrežje : Ethernet ali Wi-Fi.
-
Dodatna oprema: ohišje, aktivni hladilnik za Pi 5, gumb za pritisni in govori, LED obroč. [1]
Operacijski sistem in osnovna nastavitev
-
Flash operacijski sistem Raspberry Pi z Raspberry Pi Imager. To je preprost način za pridobitev zagonske kartice microSD z želenimi prednastavitvami. [1]
-
Zaženite sistem, povežite se z omrežjem in nato posodobite pakete:
posodobitev sudo apt && nadgradnja sudo apt -y
-
Osnove zvoka : V sistemu Raspberry Pi OS lahko nastavite privzeti izhod, nivoje in naprave prek uporabniškega vmesnika namizja ali
programa raspi-config. Zvok USB in HDMI sta podprta v vseh modelih; izhod Bluetooth je na voljo pri modelih z Bluetoothom. [1] -
Preverite naprave:
arecord -l aplay -l
Nato preizkusite zajem in predvajanje. Če se vam zdijo nivoji nenavadni, preverite mešalnike in privzete nastavitve, preden krivite mikrofon.

Arhitektura na prvi pogled 🗺️
Pametni DIY pomočnik umetne inteligence s tokom Raspberry Pi izgleda takole:
Budna beseda → zajem zvoka v živo → prepisovanje ASR → obravnavanje namere ali LLM → odgovorno besedilo → TTS → predvajanje zvoka → izbirna dejanja prek MQTT ali HTTP.
-
Budna beseda : Porcupine je majhna, natančna in deluje lokalno z nadzorom občutljivosti za vsako ključno besedo posebej. [2]
-
ASR : Whisper je večjezičen model ASR za splošno uporabo, usposobljen na približno 680 tisoč urah; je robusten na poudarke/šum v ozadju. Za uporabo v napravi
shippet.cppzagotavlja preprosto pot sklepanja C/C++. [3][4] -
Možgani : Vaša izbira – oblačni LLM prek API-ja, mehanizem pravil ali lokalno sklepanje, odvisno od moči.
-
TTS : Piper lokalno generira naravni govor, dovolj hitro za hitre odzive na skromni strojni opremi. [5]
Hitra primerjalna tabela 🔎
| Orodje | Najboljše za | Približno cena | Zakaj deluje |
|---|---|---|---|
| Beseda za prebujanje ježevcev | Sprožilec za vedno poslušanje | Brezplačna stopnja + | Nizka poraba procesorja, natančnost, enostavne povezave [2] |
| Šepet.cpp | Lokalni ASR na Pi-ju | Odprtokodna koda | Dobra natančnost, prijazno do procesorja [4] |
| Hitreje šepetanje | Hitrejši ASR na CPU/GPU | Odprtokodna koda | Optimizacije CTranslate2 |
| Piper TTS | Lokalni govorni izhod | Odprtokodna koda | Hitri glasovi, veliko jezikov [5] |
| API za LLM v oblaku | Bogato sklepanje | Na podlagi uporabe | Razbremeni težke računske zmogljivosti |
| Node-RED | Orkestriranje ukrepov | Odprtokodna koda | Vizualni tokovi, prijazni do MQTT |
Izdelava po korakih: Vaša prva glasovna zanka 🧩
Za besedo, ki vas prebudi, bomo uporabili Porcupine, za prepisovanje Whisper, za odgovor lahko funkcijo »brain« (zamenjajte jo z izbranim LLM) in za govor Piper. Naj bo minimalistično, nato pa ponovite.
1) Namestite odvisnosti
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 namestite zvočno napravo numpy
-
Porcupine: zgrabite SDK/vezave za svoj jezik in sledite navodilom za hitri začetek (dostopna tipka + seznam ključnih besed + zvočni okvirji →
.process). [2] -
Šepet (prijazno do procesorja): gradnja datoteke shepet.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
Zgornje odraža hiter začetek projekta. [4]
Imate raje Python?
faster-whisper(CTranslate2) je na skromnejših procesorjih pogosto hitrejši od običajnega Pythona.
2) Nastavite Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # Prenesite želeni glasovni model, npr. en_US-amy echo "Pozdravljeni." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper je zasnovan za pretvorbo besedila v govor na napravi z več možnostmi glasu/jezika. [5]
3) Minimalna pomožna zanka v Pythonu
Namerno kompaktno: čaka na frazo za prebujanje (stub), posname, prepiše s shepet.cpp , ustvari odgovor (nadomestno besedilo) in nato spregovori prek Piperja. Nadomestno besedilo zamenjajte s svojim najljubšim LLM ali logiko pravila.
import os, podproces, wave import sounddevice as sd WAKE_WORD = "hej računalnik" # zamenjava za Porcupine v produkciji [2] RECORD_SECONDS = 6 SAMPLE_RATE = 16000 KANALI = 1 WORKDIR = "/home/pi/asistent" 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(pot, sekunde=RECORD_SECONDS): audio = sd.rec(int(sekunde * SAMPLE_RITE), samplerate=SAMPLE_RITE, channels=CHANNELS, dtype='int16') sd.wait() z wave.open(pot, 'wb') kot 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 "Ne vidim oblakov, ampak morda bo v redu. Za vsak slučaj prinesite jakno." vrni "Rekli ste: " + prompt def speak(besedilo): 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("Pomočnik je pripravljen. Vnesite frazo za prebujanje, ki jo želite preizkusiti.") 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(besedilo) print("Uporabnik:", text); print("Pomočnik:", odgovori) speak(odgovori) else: print("Vnesite frazo za prebujanje, da preizkusite zanko.")
Za resnično zaznavanje besed, ki sprožijo prebujanje, integrirajte detektor pretakanja Porcupine (nizka poraba CPU-ja, občutljivost na ključno besedo). [2]
Uglaševanje zvoka, ki je resnično pomembno 🎚️
Nekaj drobnih popravkov naredi vašega pomočnika 10-krat pametnejšega:
-
Razdalja mikrofona : 30–60 cm je idealna razdalja za številne USB mikrofone.
-
Nivoji : izogibajte se orezovanju na vhodu in ohranite pravilno predvajanje; popravite usmerjanje, preden se lotite kodnih duhov. V Raspberry Pi OS lahko izhodno napravo in nivoje upravljate prek sistemskih orodij ali
raspi-config. [1] -
Akustika prostora : trde stene povzročajo odmeve; mehka podloga pod mikrofonom pomaga.
-
Prag za prebujanje besed : preobčutljivo → sprožilce duhov; prestrogo → kričali boste na plastiko. Porcupine vam omogoča prilagajanje občutljivosti za vsako ključno besedo. [2]
-
Termični sistemi : dolgi transkripcijski sistemi na Pi 5 imajo koristi od uradnega aktivnega hladilnika za trajnostno delovanje. [1]
Prehod iz igrače v aparat: storitve, samodejni zagon, pregledi zdravja 🧯
Ljudje pozabijo izvajati skripte. Računalniki pozabijo biti prijazni. Spremenite svojo zanko v upravljano storitev:
-
Ustvarite enoto systemd:
[Enota] Opis=DIY Glasovni asistent Po=network.target sound.target [Storitev] Uporabnik=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=vedno RestartSec=3 [Namestitev] WantedBy=multi-user.target
-
Omogočite:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Repi hlodov:
journalctl -u pomočnik -f
Zdaj se zažene ob zagonu, ponovno zažene ob sesutju in se na splošno obnaša kot naprava. Malo dolgočasno, a veliko bolje.
Sistem spretnosti: Naj bo doma dejansko uporaben 🏠✨
Ko sta glasovni vnos in izhod slišna, dodajte dejanja:
-
Usmerjevalnik namer : preproste poti s ključnimi besedami za pogosta opravila.
-
Pametni dom : objavljanje dogodkov v MQTT ali klicanje končnih točk HTTP programa Home Assistant.
-
Vtičniki : hitre Python funkcije, kot so
set_timer,what_is_the_time,play_radio,run_scene.
Tudi z oblačnim LLM v zanki najprej usmerite očitne lokalne ukaze zaradi hitrosti in zanesljivosti.
Samo lokalno v primerjavi s pomočjo v oblaku: Kompromisi, ki jih boste občutili 🌓
Samo lokalno
Prednosti: zasebno, brez povezave, predvidljivi stroški.
Slabosti: težji modeli so lahko počasni na majhnih ploščah. Whisperjevo večjezično učenje pomaga pri robustnosti, če ga hranite na napravi ali na bližnjem strežniku. [3]
Pomoč v oblaku
Prednosti: zmogljivo sklepanje, večja kontekstna okna.
Slabosti: podatki zapuščajo napravo, odvisnost od omrežja, spremenljivi stroški.
Hibrid pogosto zmaga: budilna beseda + lokalni ASR → klic API-ja za sklepanje → lokalni TTS. [2][3][5]
Odpravljanje težav: Čudni gremlini in hitre rešitve 👾
-
Lažni sprožilci ob prebujanju : zmanjšajte občutljivost ali poskusite z drugim mikrofonom. [2]
-
Zamik ASR : uporabite manjši model Whisper ali zgradite
datoteko whisper.cppz zastavicami za izdajo (-j --config Release). [4] -
Prekinjeno govorjenje v besedilu : predhodno generiranje pogostih fraz; potrditev zvočne naprave in vzorčnih frekvenc.
-
Mikrofon ni zaznan : preverite
arecord -lin mešalnike. -
Termično dušenje : za trajno delovanje uporabite uradni aktivni hladilnik na Pi 5. [1]
Opombe o varnosti in zasebnosti, ki jih morate dejansko prebrati 🔒
-
Poskrbite, da bo vaš Pi posodobljen z APT.
-
Če uporabljate kateri koli oblačni API, zabeležite, kaj pošljete, in najprej razmislite o lokalnem redigiranju osebnih podatkov.
-
Zaženite storitve z najmanj privilegiji; izogibajte se
ukazu sudov programu ExecStart, razen če je to potrebno. -
Zagotovite lokalni način za goste ali tihe ure.
Sestavite različice: Kombinirajte kot sendvič 🥪
-
Ultra-lokalno : Porcupine + whisper.cpp + Piper + preprosta pravila. Zasebno in robustno. [2][4][5]
-
Hitra pomoč v oblaku : Porcupine + (manjši lokalni Whisper ali oblačni ASR) + lokalni TTS + oblačni LLM.
-
Centrala za avtomatizacijo doma : Dodajte poteke Node-RED ali Home Assistant za rutine, prizore in senzorje.
Primer spretnosti: Prižig luči prek 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() # če je v besedilu "vklopi luči": set_light("on")
Dodajte še govorno vrstico, kot je: »prižgi luč v dnevni sobi«, in počutili se boste kot čarovnik.
Zakaj ta sklad deluje v praksi 🧪
-
Porcupine je učinkovit in natančen pri zaznavanju besed, ki sprožijo prebujanje, na majhnih ploščah, kar omogoča nenehno poslušanje. [2]
-
Obsežno, večjezično usposabljanje Whisperja ga naredi robustnega za različna okolja in naglase. [3]
-
whisper.cppomogoča uporabo te moči na napravah, ki uporabljajo samo procesor, kot je Pi. [4] -
Piper zagotavlja hitre odgovore, ne da bi zvok pošiljal v oblačni TTS. [5]
Predolgo, nisem prebral/a
Z Raspberry Pi lahko zgradite modularnega, zasebnega , tako da združite Porcupine za besedo za prebujanje, Whisper (prek whisper.cpp ) za ASR, vašo izbiro brain za odgovore in Piper za lokalno pretvorbo besedila v govor. Zavijte ga kot storitev systemd, uglasite zvok in ga povežite z dejanji MQTT ali HTTP. Je cenejši, kot si mislite, in nenavadno prijeten za življenje. [1][2][3][4][5]
Reference
-
Programska oprema in hlajenje za Raspberry Pi – Raspberry Pi Imager (prenos in uporaba) in informacije o izdelku Pi 5 Active Cooler
-
Raspberry Pi Imager: preberite več
-
Aktivni hladilnik (Pi 5): preberite več
-
-
Porcupine Wake Word – SDK in hitri začetek (ključne besede, občutljivost, lokalno sklepanje)
-
Whisper (model ASR) – večjezičen, robusten ASR, usposobljen za ~680 tisoč ur
-
Radford in sod., Robustno prepoznavanje govora s pomočjo šibkega nadzora v velikem obsegu (šepet): preberite več
-
-
whisper.cpp – sklepanje Whisper, prijazno do procesorja, s CLI in koraki gradnje
-
Piper TTS – Hiter, lokalni nevronski TTS z več glasovi/jeziki