Kako napraviti DIY AI asistenta s Raspberry Pi-jem

Kako napraviti DIY AI asistenta s Raspberry Pi-jem

Ž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

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

  2. Pokrenite računalo, spojite se na mrežu, a zatim ažurirajte pakete:

sudo apt ažuriranje && sudo apt nadogradnja -y
  1. 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]

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

 

Umjetna inteligencija Raspberry Pi

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.cpp pruž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:

  1. 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
  1. Omogući:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
  1. 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.cpp sa 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 -l i 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 sudo u 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.cpp omoguć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

  1. Raspberry Pi softver i hlađenje – Raspberry Pi Imager (preuzimanje i korištenje) i informacije o proizvodu Pi 5 Active Cooler

  2. Porcupine Wake Word – SDK i brzi početak (ključne riječi, osjetljivost, lokalno zaključivanje)

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

  4. shippe.cpp – Whisper inferencija prilagođena CPU-u s CLI-jem i koracima izgradnje

  5. Piper TTS – Brzi, lokalni neuronski TTS s više glasova/jezika

Pronađite najnoviju umjetnu inteligenciju u službenoj trgovini AI Assistant

O nama


Natrag na blog