Vai vēlaties nelielu balss asistentu, kas patiešām seko jūsu piemēram, darbojas uz jūsu aparatūras un nejauši nepasūtīs divpadsmit ananasus, jo ir jūs pārdzirdējis? Pašdarināts mākslīgā intelekta asistents ar Raspberry Pi ir pārsteidzoši paveicams, jautrs un elastīgs. Jums būs jāpieslēdz modināšanas vārds, runas atpazīšana (ASR = automātiskā runas atpazīšana), smadzenes dabiskās valodas atpazīšanai (noteikumi vai LLM) un teksta pārveidošana runā (TTS). Pievienojiet dažus skriptus, vienu vai divus pakalpojumus un dažas rūpīgas audio korekcijas, un jums būs kabatas izmēra viedā skaļrunis, kas pakļaujas jūsu noteikumiem.
Palīdzēsim tev sākt sarunu ar savu Pi bez ierastās matu raustīšanas. Apskatīsim detaļas, iestatīšanu, kodu, salīdzinājumus, ķibeles... visu burrito. 🌯
Raksti, kurus jūs varētu vēlēties izlasīt pēc šī raksta:
🔗 Kā efektīvi pētīt mākslīgo intelektu
Izveidojiet mācību plānu, praktizējiet projektus un sekojiet līdzi progresam.
🔗 Kā dibināt mākslīgā intelekta uzņēmumu
Validēt problēmu, izveidot MVP, salikt komandu, nodrošināt sākotnējos klientus.
🔗 Kā izmantot mākslīgo intelektu, lai palielinātu produktivitāti
Automatizējiet ikdienas uzdevumus, racionalizējiet darbplūsmas un palieliniet radošo rezultātu apjomu.
🔗 Kā integrēt mākslīgo intelektu savā uzņēmumā
Identificējiet procesus ar augstu ietekmi, ieviesiet pilotprojektus, izmēriet ieguldījumu atdevi (ROI), mērogojiet.
Kas padara Raspberry Pi par labu pašrocīgu mākslīgā intelekta palīgu ✅
-
Pēc noklusējuma privāts — saglabājiet audio lokālu, ja iespējams. Jūs izlemjat, kas atstāj ierīci.
-
Modulārs — maināmi komponenti, piemēram, Lego: Wake Word dzinējs, ASR, LLM, TTS.
-
Pieejamas cenas — pārsvarā atvērtā koda, standarta mikrofoni, skaļruņi un Pi.
-
Uzlaužams — vēlaties mājas automatizāciju, informācijas paneļus, rutīnas, pielāgotas prasmes? Vienkārši.
-
Uzticams — pakalpojuma pārvaldīts, automātiski palaižas un sāk klausīties.
-
Jautri — jūs daudz uzzināsiet par audio, procesiem un uz notikumiem balstītu dizainu.
Neliels padoms: ja izmantojat Raspberry Pi 5 un plānojat darbināt smagākus lokālos modeļus, ilgstošas slodzes gadījumā palīdz piespraužams dzesētājs. (Ja rodas šaubas, izvēlieties oficiālo aktīvo dzesētāju, kas paredzēts Pi 5.) [1]
Nepieciešamās detaļas un instrumenti 🧰
-
Raspberry Pi : brīvas vietas nodrošināšanai ieteicams Pi 4 vai Pi 5.
-
microSD karte : ieteicams 32 GB+.
-
USB mikrofons : vienkāršs USB konferenču mikrofons ir lielisks.
-
Skaļrunis : USB vai 3,5 mm skaļrunis vai I2S pastiprinātājs HAT.
-
Tīkls : Ethernet vai Wi-Fi.
-
Papildus nianses: korpuss, aktīvais dzesētājs Pi 5, spiedpoga sarunas funkcijai, LED gredzens. [1]
OS un bāzes iestatīšana
-
Flash Raspberry Pi OS ar Raspberry Pi Imager. Tas ir vienkāršs veids, kā iegūt startējamu microSD karti ar vēlamajiem iestatījumiem. [1]
-
Ielādējiet, izveidojiet savienojumu ar tīklu un pēc tam atjauniniet pakotnes:
sudo apt update && sudo apt upgrade -y
-
Audio pamati : Raspberry Pi operētājsistēmā noklusējuma izeju, līmeņus un ierīces var iestatīt, izmantojot darbvirsmas lietotāja saskarni vai
raspi-config. USB un HDMI audio tiek atbalstīts visos modeļos; Bluetooth izeja ir pieejama modeļos ar Bluetooth. [1] -
Pārbaudiet ierīces:
arecord -l aplay -l
Pēc tam pārbaudiet ierakstīšanu un atskaņošanu. Ja līmeņi šķiet dīvaini, pirms vainojat mikrofonu, pārbaudiet mikserus un noklusējuma iestatījumus.

Arhitektūra īsumā 🗺️
Gudrs DIY AI palīgs ar Raspberry Pi plūsmu izskatās šādi:
Aktivizēšanas vārds → tiešraides audio ierakstīšana → ASR transkripcija → nolūka apstrāde vai LLM → atbildes teksts → TTS → audio atskaņošana → papildu darbības, izmantojot MQTT vai HTTP.
-
Wake word : Porcupine ir mazs, precīzs un darbojas lokāli ar atslēgvārdu jutības kontroli. [2]
-
ASR : Whisper ir daudzvalodu, vispārējas nozīmes ASR modelis, kas apmācīts aptuveni 680 000 stundu laikā; tas ir izturīgs pret akcentiem/fona troksni. Lietošanai ierīcē
whisper.cppnodrošina vienkāršu C/C++ secinājumu ceļu. [3][4] -
Smadzenes : Jūsu izvēle — mākoņa LLM, izmantojot API, noteikumu dzinējs vai lokāla secinājuma izveide atkarībā no jaudas.
-
TTS : Piper lokāli ģenerē dabisku runu, kas ir pietiekami ātra, lai uz pieticīgas aparatūras sniegtu ātras atbildes. [5]
Ātrās salīdzināšanas tabula 🔎
| Rīks | Vislabāk piemērots | Dārgs | Kāpēc tas darbojas |
|---|---|---|---|
| Dzeloņcūku modināšanas vārds | Vienmēr klausīšanās aktivizētājs | Bezmaksas līmenis + | Zema centrālā procesora jauda, precīza, vienkārša saistīšana [2] |
| Čuksts.cpp | Lokālā ASR uz Pi | Atvērtā pirmkoda | Laba precizitāte, CPU draudzīgs [4] |
| Ātrāks čuksts | Ātrāka ASR uz centrālā procesora/grafiskā procesora | Atvērtā pirmkoda | CTranslate2 optimizācijas |
| Piper TTS | Lokālā runas izvade | Atvērtā pirmkoda | Ātras balsis, daudzas valodas [5] |
| Mākoņa LLM API | Bagātīga spriešana | Lietošanas pamatā | Atslogo lielos skaitļošanas resursus |
| Node-RED | Darbību organizēšana | Atvērtā pirmkoda | Vizuālās plūsmas, MQTT draudzīgas |
Soli pa solim veidot: jūsu pirmā balss cilpa 🧩
Modinājumam izmantosim Porcupine, transkripcijai Whisper, atbildei — vieglu “smadzeņu” funkciju (aizstājiet ar izvēlēto tiesību valodas maģistra programmu) un runai — Piper. Saglabājiet to minimālu un pēc tam atkārtojiet.
1) Instalējiet atkarības
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 instalēt skaņas ierīci numpy
-
Porcupine: paņemiet SDK/saistījumus savai valodai un izpildiet ātrās palaišanas norādījumus (piekļuves atslēga + atslēgvārdu saraksts + audio kadri →
.process). [2] -
Whisper (centrālajam procesoram draudzīgs): veidot whisper.cpp :
git klons 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
Iepriekš minētais atspoguļo projekta ātro sākumu. [4]
Vai dodat priekšroku Python?
faster-whisper(CTranslate2) bieži vien ir ātrāks nekā parastais Python uz pieticīgiem centrālajiem procesoriem.
2) Piper TTS iestatīšana
git clone https://github.com/rhasspy/piper cd piper make # Lejupielādējiet sev tīkamu balss modeli, piem., en_US-amy echo "Sveiki." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper ir izstrādāts ierīcē iebūvētai teksta pārraidei (TTS) ar vairākām balss/valodas opcijām. [5]
3) Minimāls palīgcikls Python valodā
Apzināti kompakts: gaida aktivizēšanas frāzi (stubu), ieraksta, pārraksta ar whisper.cpp , ģenerē atbildi (vietturi) un pēc tam runā, izmantojot Piper. Nomainiet vietturi ar savu iecienītāko LLM vai noteikumu loģiku.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # aizstāšana ar Porcupine ražošanas vidē [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(sekundes * 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 "laika apstākļi" in prompt.lower(): return "Es neredzu mākoņus, bet varētu būt labi. Paņemiet līdzi jaku, ja nu kas." return "Jūs teicāt: " + 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("Asistents ir gatavs. Ievadiet modināšanas frāzi, lai pārbaudītu.") 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("Lietotājs:", text); print("Asistents:", atbilde) speak(atbilde) citādi: print("Ierakstiet modināšanas frāzi, lai pārbaudītu ciklu.")
Lai noteiktu īstu aktivizēšanas vārdu, integrējiet Porcupine straumēšanas detektoru (zems procesora patēriņš, jutība pret atslēgvārdiem). [2]
Audio regulēšana, kurai patiešām ir nozīme 🎚️
Daži nelieli labojumi liek jūsu asistentam justies 10 reizes gudrākam:
-
Mikrofona attālums : 30–60 cm ir optimālais attālums daudziem USB mikrofoniem.
-
Līmeņi : izvairieties no signāla nogriešanas ieejā un saglabājiet atskaņošanas kvalitāti; pirms koda "vaku" meklēšanas salabojiet maršrutēšanu. Raspberry Pi OS var pārvaldīt izejas ierīci un līmeņus, izmantojot sistēmas rīkus vai
raspi-config. [1] -
Telpas akustika : cietas sienas rada atbalsi; mīksts paklājiņš zem mikrofona palīdz.
-
Atslēgvārda slieksnis : pārāk jutīgs → spoku izraisītāji; pārāk stingrs → jūs kliegsiet uz plastmasu. Porcupine ļauj pielāgot jutīgumu katram atslēgvārdam. [2]
-
Termiskā apstrāde : Pi 5 garās transkripcijas izmanto oficiālo aktīvo dzesētāju, lai nodrošinātu ilgstošu veiktspēju. [1]
Pāreja no rotaļlietas uz sadzīves tehniku: pakalpojumi, automātiskā palaišana, veselības pārbaudes 🧯
Cilvēki aizmirst palaist skriptus. Datori aizmirst būt jauki. Pārveidojiet savu ciklu par pārvaldītu pakalpojumu:
-
Izveidojiet systemd vienību:
[Vienība] Apraksts=DIY Voice Assistant Pēc=network.target sound.target [Pakalpojums] Lietotājs=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Instalēt] WantedBy=multi-user.target
-
Iespējot to:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Baļķu astes:
journalctl -u assistant -f
Tagad tas ieslēdzas startēšanas laikā, restartējas avārijas gadījumā un kopumā darbojas kā ierīce. Nedaudz garlaicīgi, bet daudz labāk.
Prasmju sistēma: padariet to patiešām noderīgu mājās 🏠✨
Kad balss ievade un izvade ir stabila, pievienojiet darbības:
-
Nodomu maršrutētājs : vienkārši atslēgvārdu maršruti bieži sastopamiem uzdevumiem.
-
Viedā māja : publicējiet notikumus MQTT vai izsauciet Home Assistant HTTP galapunktus.
-
Spraudņi : ātras Python funkcijas, piemēram
, set_timer,what_is_the_time,play_radio,run_scene.
Pat ja cilpā ir mākoņa LLM, vispirms maršrutējiet acīmredzamas lokālās komandas, lai nodrošinātu ātrumu un uzticamību.
Tikai lokāli salīdzinājumā ar mākoņa atbalstu: kompromisi, ko izjutīsiet 🌓
Tikai lokāli.
Plusi: privāts, bezsaistes režīms, paredzamas izmaksas.
Mīnusi: smagāki modeļi var būt lēni mazos dēļos. Whisper daudzvalodu apmācība palīdz nodrošināt stabilitāti, ja to glabājat ierīcē vai tuvējā serverī. [3]
Mākoņa palīdzības
plusi: spēcīga spriešana, lielāki konteksta logi.
Mīnusi: dati atstāj ierīci, atkarība no tīkla, mainīgas izmaksas.
Hibrīds bieži vien uzvar: modināšanas vārds + lokālais ASR → izsaukt API spriešanas nolūkos → lokālais TTS. [2][3][5]
Problēmu novēršana: dīvaini gremlini un ātri risinājumi 👾
-
Pamodināšanas vārda viltus izraisītāji : samaziniet jutību vai izmēģiniet citu mikrofonu. [2]
-
ASR aizture : izmantojiet mazāku Whisper modeli vai veidojiet
whisper.cppar izlaišanas karodziņiem (-j --config Release). [4] -
Saraustīta TTS : iepriekš ģenerējiet bieži lietotas frāzes; apstipriniet savu audioierīci un paraugu ņemšanas ātrumu.
-
Nav atrasts mikrofons : pārbaudiet
arecord -lun mikserus. -
Termiskā droseļvārstība : lai nodrošinātu ilgstošu veiktspēju, Pi 5 ierīcē izmantojiet oficiālo aktīvo dzesētāju. [1]
Drošības un privātuma piezīmes, kas jums patiešām vajadzētu izlasīt 🔒
-
Atjauniniet savu Pi ar APT.
-
Ja izmantojat mākoņa API, reģistrējiet nosūtīto informāciju un vispirms apsveriet personisko datu rediģēšanu lokāli.
-
Palaist pakalpojumus ar vismazākajām privilēģijām; izvairieties no
sudoizmantošanas ExecStart, ja vien tas nav nepieciešams. -
Nodrošiniet viesiem tikai lokālu režīmu
Veidojiet variantus: kombinējiet kā sviestmaizi 🥪
-
Ultralokāls : Porcupine + whisper.cpp + Piper + vienkārši noteikumi. Privāts un izturīgs. [2][4][5]
-
Ātra mākoņa palīdzība : Porcupine + (mazāks lokālais Whisper vai mākoņa ASR) + lokālais TTS + mākoņa LLM.
-
Mājas automatizācijas centrs : pievienojiet Node-RED vai Home Assistant plūsmas rutīnām, ainām un sensoriem.
Prasmes piemērs: Gaismas ieslēgšana, izmantojot MQTT 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "mājas/viesistaba/gaisma/komplekts" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "IESLĒGTS" if state.lower().startswith("ieslēgts") else "IZSLĒGTS" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # if "ieslēgt gaismas" in text: set_light("ieslēgts")
Pievienojiet balss frāzi, piemēram: “ieslēdziet viesistabas lampu”, un jūs jutīsieties kā burvis.
Kāpēc šis steks darbojas praksē 🧪
-
Porcupine efektīvi un precīzi nosaka modināšanas vārdus uz maziem dēļiem, kas padara iespējamu pastāvīgu klausīšanos. [2]
-
Whisper plašā, daudzvalodu apmācība padara to noturīgu dažādās vidēs un akcentos. [3]
-
whisper.cppnodrošina šīs jaudas izmantošanu ierīcēs ar tikai centrālo procesoru, piemēram, Pi. [4] -
Piper nodrošina ātras atbildes, nepārsūtot audio uz mākoņa TTS. [5]
Pārāk garš, neizlasīju
Izveidojiet modulāru, privātu mākslīgā intelekta palīgu ar Raspberry Pi , apvienojot Porcupine modināšanas vārdam, Whisper (izmantojot whisper.cpp ) ASR, jūsu izvēlēto smadzeņu atbildēm un Piper lokālai TTS. Aptiniet to kā systemd pakalpojumu, noregulējiet audio un pievienojiet MQTT vai HTTP darbības. Tas ir lētāk, nekā jūs domājat, un dīvainā kārtā patīkami ar to dzīvot. [1][2][3][4][5]
Atsauces
-
Raspberry Pi programmatūra un dzesēšana — Raspberry Pi Imager (lejupielāde un lietošana) un Pi 5 aktīvā dzesētāja produkta informācija
-
Raspberry Pi Imager: lasīt vairāk
-
Aktīvais dzesētājs (Pi 5): lasīt vairāk
-
-
Porcupine Wake Word — SDK un ātrā palaišana (atslēgvārdi, jutīgums, lokālā secināšana)
-
Whisper (ASR modelis) – daudzvalodu, stabila ASR apmācība, kuras ilgums ir aptuveni 680 000 stundu
-
Radford et al., Stabila runas atpazīšana, izmantojot liela mēroga vāju uzraudzību (Whisper): lasīt vairāk
-
-
whisper.cpp – procesoram draudzīga Whisper secinājumu ģenerēšana ar komandrindas komandu (CLI) un veidošanas soļiem
-
Piper TTS — ātra, lokāla neironu TTS ar vairākām balsīm/valodām