Želite malenog glasovnog asistenta koji vas zapravo prati, radi na vašem hardveru i neće slučajno naručiti dvanaest ananasa jer vas je krivo čuo? DIY AI asistent s Raspberry Pijem je iznenađujuće ostvariv, zabavan i fleksibilan. Spojit ćete riječ za buđenje, prepoznavanje govora (ASR = automatsko prepoznavanje govora), mozak za prirodni jezik (pravila ili LLM) i pretvaranje teksta u govor (TTS). Dodajte nekoliko skripti, jednu ili dvije usluge i neka pažljiva podešavanja zvuka i dobit ćete džepni pametni zvučnik koji se pokorava vašim pravilima.
Odvešćemo vas od nule do razgovora sa svojim Pi-jem bez uobičajenog čupanja kose. Pokrit ćemo dijelove, postavljanje, kod, usporedbe, nedostatke... cijeli burrito. 🌯
Članci koje biste možda željeli pročitati nakon ovog:
🔗 Kako učinkovito proučavati umjetnu inteligenciju
Izradite plan učenja, vježbajte projekte i pratite napredak.
🔗 Kako pokrenuti tvrtku za umjetnu inteligenciju
Validirati problem, izgraditi MVP, okupiti tim, osigurati početne kupce.
🔗 Kako koristiti umjetnu inteligenciju za veću produktivnost
Automatizirajte rutinske zadatke, pojednostavite tijekove rada i povećajte kreativni učinak.
🔗 Kako uključiti umjetnu inteligenciju u svoje poslovanje
Identificirajte procese s visokim utjecajem, implementirajte pilot projekte, izmjerite povrat ulaganja, skalirajte.
Što čini dobrog DIY AI asistenta s Raspberry Pijem ✅
-
Privatno prema zadanim postavkama – zvuk se pohranjuje lokalno gdje je to moguće. Vi odlučujete što će napustiti uređaj.
-
Modularno – zamjenjive komponente poput Lega: mehanizam za budilice, ASR, LLM, TTS.
-
Pristupačno – uglavnom otvorenog koda, standardni mikrofoni, zvučnici i Pi.
-
Hakirano – želite automatizaciju doma, nadzorne ploče, rutine, prilagođene vještine? Jednostavno.
-
Pouzdan – upravljan uslugom, pokreće se i počinje automatski slušati.
-
Zabavno – naučit ćete puno o zvuku, procesima i dizajnu vođenom događajima.
Mali savjet: Ako koristite Raspberry Pi 5 i planirate koristiti teže lokalne modele, hladnjak s kopčom pomaže pri dugotrajnom opterećenju. (U slučaju sumnje, odaberite službeni aktivni hladnjak dizajniran za Pi 5.) [1]
Dijelovi i alati koji će vam trebati 🧰
-
Raspberry Pi: Pi 4 ili Pi 5 preporučuje se za veći prostor.
-
microSD kartica: preporučuje se 32 GB+.
-
USB mikrofon: jednostavan USB konferencijski mikrofon je odličan.
-
Zvučnik: USB ili 3,5 mm zvučnik ili I2S pojačalo HAT.
-
Mreža: Ethernet ili Wi-Fi.
-
Dodatne pogodnosti: kućište, aktivni hladnjak za Pi 5, tipka za pritisni i razgovaraj, LED prsten. [1]
OS i osnovne postavke
-
Flashirajte Raspberry Pi OS s Raspberry Pi Imagerom. To je jednostavan način za dobivanje bootabilne microSD kartice s unaprijed postavljenim postavkama koje želite. [1]
-
Pokrenite računalo, spojite se na mrežu, a zatim ažurirajte pakete:
sudo apt ažuriranje && sudo apt nadogradnja -y
-
Osnove zvuka: Na Raspberry Pi OS-u možete postaviti zadani izlaz, razine i uređaje putem korisničkog sučelja na radnoj površini ili
raspi-config. USB i HDMI zvuk podržani su na svim modelima; Bluetooth izlaz dostupan je na modelima s Bluetoothom. [1] -
Provjerite uređaje:
arecord -l aplay -l
Zatim testirajte snimanje i reprodukciju. Ako vam se razine čine čudnima, provjerite miksere i zadane postavke prije nego što okrivite mikrofon.

Arhitektura na prvi pogled 🗺️
Praktičan DIY AI asistent s Raspberry Pi tokom izgleda ovako:
Buđenje → snimanje zvuka uživo → ASR transkripcija → rukovanje namjerom ili LLM → tekst odgovora → TTS → reprodukcija zvuka → opcionalne radnje putem MQTT-a ili HTTP-a.
-
Buđenje: Porcupine je malen, točan i radi lokalno s kontrolom osjetljivosti za svaku ključnu riječ. [2]
-
ASR: Whisper je višejezični ASR model opće namjene obučen na ~680 tisuća sati; otporan je na akcente/pozadinsku buku. Za korištenje na uređaju,
shippe.cpppruža jednostavan C/C++ inferencijski put. [3][4] -
Brain: Vaš izbor - cloud LLM putem API-ja, mehanizam pravila ili lokalno zaključivanje ovisno o snazi.
-
TTS: Piper generira prirodni govor lokalno, dovoljno brzo za brze odgovore na skromnoj opremi. [5]
Tablica brze usporedbe 🔎
| Alat | Najbolje za | Prilično skupo | Zašto to funkcionira |
|---|---|---|---|
| Riječ za buđenje dikobraza | Okidač za stalno slušanje | Besplatna razina + | Nisko opterećenje CPU-a, precizno, jednostavno povezivanje [2] |
| Whisper.cpp | Lokalni ASR na Pi-ju | Otvoreni kod | Dobra točnost, prilagođeno CPU-u [4] |
| Brže šaputanje | Brži ASR na CPU/GPU | Otvoreni kod | Optimizacije CTranslate2 |
| Piper TTS | Lokalni govorni izlaz | Otvoreni kod | Brzi glasovi, mnogo jezika [5] |
| API za LLM u oblaku | Bogato obrazloženje | Na temelju upotrebe | Rasterećuje opterećenje računalstva |
| Čvor-CRVENI | Orkestriranje akcija | Otvoreni kod | Vizualni tokovi, prilagođeni MQTT-u |
Izrada korak po korak: Vaša prva glasovna petlja 🧩
Koristit ćemo Porcupine za riječ koja vas budi, Whisper za transkripciju, laganu "brain" funkciju za odgovor (zamijenite je s odabranim LLM-om) i Piper za govor. Neka bude minimalistička, a zatim iterirajte.
1) Instalirajte ovisnosti
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install zvučni uređaj numpy
-
Porcupine: preuzmite SDK/veze za svoj jezik i slijedite upute za brzi početak (pristupna tipka + popis ključnih riječi + audio okviri →
.process). [2] -
Whisper (prilagođeno CPU-u): izgraditi shittle.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
Gore navedeno odražava brzi početak projekta. [4]
Preferirate Python?
faster-whisper(CTranslate2) je često brži od običnog Pythona na skromnijim CPU-ima.
2) Postavite Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # Preuzmite glasovni model koji vam se sviđa, npr. en_US-amy echo "Pozdrav." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper je dizajniran za TTS na uređaju s više opcija glasa/jezika. [5]
3) Minimalna pomoćna petlja u Pythonu
Namjerno kompaktno: čeka frazu za buđenje (stub), snima, prepisuje s shittle.cpp, generira odgovor (privremeno mjesto), a zatim govori putem Pipera. Zamijenite privremenu frazu svojim omiljenim LLM-om ili logikom pravila.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # zamjena za Porcupine u produkciji [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(sekunde * 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 "Ne vidim oblake, ali možda će biti u redu. Ponesite jaknu za svaki slučaj." vratiti "Rekli ste: " + prompt def speak(tekst): 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 spreman. Upišite frazu za buđenje za testiranje.") while True: typed = input("> ").strip().lower() if typed == RIJEČ_BUĐENJA: wav_path = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transcribe(wav_path) reply = generate_reply(tekst) print("Korisnik:", text); print("Asistent:", odgovor) speak(odgovor) else: print("Upišite frazu za buđenje kako biste testirali petlju.")
Za stvarno otkrivanje riječi koje izazivaju buđenje, integrirajte Porcupineov detektor streaminga (nizak CPU, osjetljivost po ključnoj riječi). [2]
Podešavanje zvuka koje je zaista važno 🎚️
Nekoliko sitnih ispravaka čini da se vaš asistent osjeća 10 puta pametnije:
-
Udaljenost mikrofona: 30–60 cm je idealna vrijednost za mnoge USB mikrofone.
-
Razine: izbjegavajte rezanje na ulazu i održavajte reprodukciju razumnom; ispravite usmjeravanje prije nego što se uhvatite za probleme s kodom. Na Raspberry Pi OS-u možete upravljati izlaznim uređajem i razinama putem sistemskih alata ili
raspi-config-a. [1] -
Akustika prostorije: tvrdi zidovi uzrokuju odjeke; mekana podloga ispod mikrofona pomaže.
-
Prag za buđenje riječi: preosjetljivo → okidači duhova; prestrogo → vikati ćete na plastiku. Porcupine vam omogućuje podešavanje osjetljivosti po ključnoj riječi. [2]
-
Termalni sustavi: dugi transkripci na Pi 5 imaju koristi od službenog aktivnog hladnjaka za održive performanse. [1]
Od igračke do uređaja: Servisi, automatsko pokretanje, provjere ispravnosti 🧯
Ljudi zaboravljaju pokretati skripte. Računala zaboravljaju biti ljubazna. Pretvorite svoju petlju u upravljanu uslugu:
-
Kreirajte systemd jedinicu:
[Jedinica] Opis=DIY Glasovni asistent Nakon=network.target sound.target [Usluga] Korisnik=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=uvijek RestartSec=3 [Instalacija] WantedBy=multi-user.target
-
Omogući:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Repovi trupaca:
journalctl -u asistent -f
Sada se pokreće pri pokretanju, ponovno pokreće pri rušenju i općenito se ponaša kao uređaj. Malo dosadno, puno bolje.
Sustav vještina: Učinite ga doista korisnim kod kuće 🏠✨
Nakon što su glasovni ulaz i izlaz čvrsti, dodajte radnje:
-
Intent router: jednostavne rute s ključnim riječima za uobičajene zadatke.
-
Pametni dom: objavljivanje događaja na MQTT-u ili pozivanje HTTP krajnjih točaka Home Assistanta.
-
Dodaci: brze Python funkcije poput
set_timer,what_is_the_time,play_radio,run_scene.
Čak i s LLM-om u oblaku u petlji, prvo usmjerite očite lokalne naredbe radi brzine i pouzdanosti.
Samo lokalno u odnosu na Cloud Assist: Kompromisi koje ćete osjetiti 🌓
Samo lokalno
Prednosti: privatno, izvan mreže, predvidljivi troškovi.
Nedostaci: teži modeli mogu biti spori na malim pločama. Whisperova višejezična obuka pomaže u robusnosti ako ga držite na uređaju ili na obližnjem poslužitelju. [3]
Pomoć u oblaku.
Prednosti: snažno zaključivanje, veći kontekstni prozori.
Nedostaci: podaci napuštaju uređaj, ovisnost o mreži, varijabilni troškovi.
Hibrid često pobjeđuje: riječ za buđenje + lokalni ASR → poziv API-ja za zaključivanje → lokalni TTS. [2][3][5]
Rješavanje problema: Čudni Gremlini i brza rješenja 👾
-
Lažni okidači riječi za buđenje: smanjite osjetljivost ili isprobajte drugi mikrofon. [2]
-
ASR kašnjenje: koristite manji Whisper model ili izgradite
shittle.cppsa zastavicama za izdavanje (-j --config Release). [4] -
Isprekidani TTS: unaprijed generirajte uobičajene fraze; potvrdite svoj audio uređaj i brzine uzorkovanja.
-
Nije detektiran mikrofon: provjerite
arecord -li miksere. -
Termalno ograničavanje: koristite službeni Active Cooler na Pi 5 za održive performanse. [1]
Napomene o sigurnosti i privatnosti koje biste zapravo trebali pročitati 🔒
-
Održavajte svoj Pi ažuriranim pomoću APT-a.
-
Ako koristite bilo koji cloud API, zabilježite što šaljete i prvo razmislite o lokalnom redigiranju osobnih podataka.
-
Pokreni servise s najmanjim privilegijama; izbjegavaj
sudou ExecStartu osim ako nije potrebno. -
Osigurajte samo lokalni način rada za goste ili tihe sate.
Varijante izgradnje: Kombinirajte kao sendvič 🥪
-
Ultra-lokalno: Porcupine + shittle.cpp + Piper + jednostavna pravila. Privatno i čvrsto. [2][4][5]
-
Brza pomoć u oblaku: Porcupine + (manji lokalni Whisper ili cloud ASR) + TTS lokalni + cloud LLM.
-
Centrala za kućnu automatizaciju: Dodajte Node-RED ili Home Assistant tokove za rutine, scene i senzore.
Primjer vještine: Uključivanje svjetla putem MQTT-a 💡
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() # ako je "uključi svjetla" u tekstu: set_light("on")
Dodajte glasovnu rečenicu poput: „upali lampu u dnevnoj sobi“ i osjećat ćete se kao čarobnjak.
Zašto ovaj stek funkcionira u praksi 🧪
-
Porcupine je učinkovit i precizan u detekciji riječi koje izazivaju budnost na malim pločama, što omogućuje stalno slušanje. [2]
-
Whisperova opsežna, višejezična obuka čini je otpornom na različita okruženja i naglaske. [3]
-
shippe.cppomogućuje korištenje te snage na uređajima koji koriste samo CPU, poput Pi-ja. [4] -
Piper održava odgovore brzima bez slanja zvuka u TTS u oblaku. [5]
Predugo, nisam pročitao/la
Izgradite modularnog, privatnog DIY AI asistenta s Raspberry Pijem kombinirajući Porcupine za riječ za buđenje, Whisper (putem shittle.cpp) za ASR, vaš izbor brain za odgovore i Piper za lokalni TTS. Zamotajte ga kao systemd uslugu, podesite zvuk i povežite MQTT ili HTTP akcije. Jeftinije je nego što mislite i neobično ugodno za život. [1][2][3][4][5]
Reference
-
Raspberry Pi softver i hlađenje – Raspberry Pi Imager (preuzimanje i korištenje) i informacije o proizvodu Pi 5 Active Cooler
-
Raspberry Pi Imager: pročitajte više
-
Aktivni hladnjak (Pi 5): pročitajte više
-
-
Porcupine Wake Word – SDK i brzi početak (ključne riječi, osjetljivost, lokalno zaključivanje)
-
Whisper (ASR model) – Višejezični, robusni ASR obučen na ~680 tisuća sati
-
Radford i dr., Robusno prepoznavanje govora putem slabog nadzora velikih razmjera (šapat): pročitajte više
-
-
shippe.cpp – Whisper inferencija prilagođena CPU-u s CLI-jem i koracima izgradnje
-
Piper TTS – Brzi, lokalni neuronski TTS s više glasova/jezika