Trid assistent tal-vuċi ċkejken li fil-fatt isegwi l-gwida tiegħek, jaħdem fuq il-hardware tiegħek stess, u ma jordnax tnax-il ananas aċċidentalment għax ikun semgħek ħażin? Assistent tal-AI DIY b'Raspberry Pi huwa sorprendentament possibbli, divertenti, u flessibbli. Se tqabbad kelma ta' qawmien, rikonoxximent tad-diskors (ASR = rikonoxximent awtomatiku tad-diskors), moħħ għal-lingwa naturali (regoli jew LLM), u test-għal-diskors (TTS). Żid ftit skripts, servizz jew tnejn, u xi tweaks tal-awdjo bir-reqqa, u jkollok kelliem intelliġenti li jista' jinġarr fil-but li jobdi r-regoli tiegħek.
Ejja ngħinuk titkellem mal-Pi tiegħek mingħajr ma jkollok għalfejn tgerger. Se nkopru l-partijiet, is-setup, il-kodiċi, it-tqabbil, il-problemi... il-burrito kollu. 🌯
Artikoli li forsi tixtieq taqra wara dan:
🔗 Kif tistudja l-IA b'mod effettiv
Oħloq pjan direzzjonali għall-istudju, ipprattika proġetti, u segwi l-progress.
🔗 Kif tibda kumpanija tal-AI
Ivvalida l-problema, ibni l-MVP, iġbor it-tim, u assigura l-klijenti inizjali.
🔗 Kif tuża l-AI biex tkun aktar produttiv
Awtomatizza l-kompiti ta' rutina, issimplifika l-flussi tax-xogħol, u żid il-produzzjoni kreattiva.
🔗 Kif tinkorpora l-AI fin-negozju tiegħek
Identifika proċessi b'impatt għoli, implimenta proġetti pilota, kejjel l-ROI, agħmel skala.
X'jagħmel Assistent tal-AI DIY tajjeb b'Raspberry Pi ✅
-
Privat awtomatikament – żomm l-awdjo lokali fejn possibbli. Inti tiddeċiedi x'joħroġ mill-apparat.
-
Modulari – komponenti tal-bdil bħal-Lego: magna tal-kliem tal-qawmien, ASR, LLM, TTS.
-
Affordabbli – l-aktar open source, mikrofoni komuni, kelliema, u Pi.
-
Hackable – trid awtomazzjoni tad-dar, dashboards, rutini, ħiliet personalizzati? Faċli.
-
Affidabbli – immaniġġjat mis-servizz, jibbutja u jibda jisma' awtomatikament.
-
Pjaċevoli – se titgħallem ħafna dwar l-awdjo, il-proċessi, u d-disinn immexxi mill-avvenimenti.
Tip żgħir: Jekk tuża Raspberry Pi 5 u qed tippjana li tħaddem mudelli lokali itqal, apparat li jkessaħ bil-klipp jgħin taħt tagħbija sostnuta. (Meta jkollok xi dubju, agħżel l-Active Cooler uffiċjali ddisinjat għall-Pi 5.) [1]
Partijiet u Għodda li Se Jkollok Bżonn 🧰
-
Raspberry Pi : Pi 4 jew Pi 5 rakkomandat għall-ispazju 'l fuq.
-
Karta microSD : 32 GB+ rakkomandata.
-
Mikrofonu USB : mikrofonu sempliċi tal-konferenzi USB huwa tajjeb ħafna.
-
Kelliem : Kelliem USB jew ta' 3.5 mm, jew amp I2S HAT.
-
Netwerk : Ethernet jew Wi-Fi.
-
Aċċessorji mhux obbligatorji: kaxxa, apparat li jkessaħ attiv għall-Pi 5, buttuna push-to-talk, ċirku LED. [1]
Konfigurazzjoni tas-Sistema Operattiva u tal-Linja Bażika
-
Flash Raspberry Pi OS b'Raspberry Pi Imager. Huwa l-mod sempliċi biex tikseb microSD bootable bil-presets li trid. [1]
-
Ibbutja, qabbad man-netwerk, imbagħad aġġorna l-pakketti:
aġġornament sudo apt && aġġornament sudo apt -y
-
Bażiċi tal-awdjo : Fuq Raspberry Pi OS tista' tissettja l-output, il-livelli u l-apparati default permezz tal-UI tad-desktop jew
raspi-config. L-awdjo USB u HDMI huma appoġġjati fil-mudelli kollha; l-output Bluetooth huwa disponibbli fuq mudelli bil-Bluetooth. [1] -
Ivverifika l-apparati:
rekord -l aplay -l
Imbagħad ittestja l-qbid u l-plejbek. Jekk il-livelli jidhru strambi, iċċekkja l-mixers u d-defaults qabel ma twaħħal fil-mikrofonu.

L-Arkitettura f'daqqa t'għajn 🗺️
sensibbli b'Raspberry Pi flow jidher hekk:
Kelma ta' qawmien → qbid awdjo dirett → traskrizzjoni ASR → immaniġġjar tal-intenzjoni jew LLM → test tar-rispons → TTS → daqq tal-awdjo → azzjonijiet fakultattivi permezz ta' MQTT jew HTTP.
-
Kelma ta' twissija : Porcupine huwa żgħir, preċiż, u jaħdem lokalment b'kontroll tas-sensittività għal kull kelma ewlenija. [2]
-
ASR : Whisper huwa mudell ASR multilingwi u ta' skop ġenerali mħarreġ fuq ~680k siegħa; huwa robust għall-aċċenti/ħoss fl-isfond. Għall-użu fuq l-apparat,
whisper.cppjipprovdi mogħdija ta' inferenza C/C++ sempliċi. [3][4] -
Moħħ : L-għażla tiegħek – LLM fuq il-cloud permezz tal-API, magna tar-regoli, jew inferenza lokali skont il-qawwa.
-
TTS : Piper jiġġenera diskors naturali lokalment, veloċi biżżejjed għal tweġibiet ħfief fuq ħardwer modest. [5]
Tabella ta' Paragun Malajr 🔎
| Għodda | L-Aħjar Għal | Prezzjuż | Għaliex Jaħdem |
|---|---|---|---|
| Kelma tal-Qawwa tal-Porkupin | Trigger li dejjem jisma' | Livell b'xejn + | CPU baxx, preċiż, rabtiet faċli [2] |
| Whisper.cpp | ASR lokali fuq Pi | Sors miftuħ | Preċiżjoni tajba, faċli biex tuża s-CPU [4] |
| Faster-Whisper | ASR aktar mgħaġġel fuq CPU/GPU | Sors miftuħ | Ottimizzazzjonijiet ta' CTranslate2 |
| Piper TTS | Ħruġ tad-diskors lokali | Sors miftuħ | Vuċijiet veloċi, ħafna lingwi [5] |
| API tal-Cloud LLM | Raġunament rikk | Ibbażat fuq l-użu | Ineħħi l-komputazzjoni tqila |
| Node-RED | Orkestrazzjoni ta' azzjonijiet | Sors miftuħ | Flussi viżwali, favur l-MQTT |
Bini Pass Pass: L-Ewwel Loop tal-Vuċi Tiegħek 🧩
Se nużaw Porcupine għall-kelma ta' qawmien, Whisper għat-traskrizzjoni, funzjoni ħafifa ta' "moħħ" għat-tweġiba (ibdel bl-LLM tal-għażla tiegħek), u Piper għad-diskors. Żommha minima, imbagħad irrepeti.
1) Installa d-dipendenzi
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
-
Porcupine: aqbad l-SDK/bindings għal-lingwa tiegħek u segwi l-bidu rapidu (aċċess key + lista ta' kliem kjavi + frejms tal-awdjo →
.process). [2] -
Whisper (favur is-CPU): ibni whisper.cpp :
klonu tal-git 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 tiegħek.wav -otxt
Dan ta’ hawn fuq jirrifletti l-bidu mgħaġġel tal-proġett. [4]
Tippreferi Python?
faster-whisper(CTranslate2) ħafna drabi huwa aktar mgħaġġel minn Python vanilla fuq CPUs modesti.
2) Issettja Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # Niżżel mudell tal-vuċi li jogħġbok, eż. en_US-amy echo "Bongu." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper huwa ddisinjat għal TTS fuq l-apparat b'għażliet multipli ta' vuċi/lingwa. [5]
3) Ċirkwit minimu ta' assistent f'Python
Kompatt apposta: jistenna frażi ta' qawmien (stub), jirreġistra, jittraskrivi b'whisper.cpp , jiġġenera tweġiba (placeholder), imbagħad jitkellem permezz ta' Piper. Ibdel il-placeholder bl-LLM jew il-loġika tar-regola favorita tiegħek.
importa os, subprocess, wave importa sounddevice bħala sd WAKE_WORD = "hey computer" # swap għal Porcupine fil-produzzjoni [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(sekondi * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') sd.wait() ma' wave.open(path, 'wb') bħala 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 "temp" in prompt.lower(): return "Ma nistax nara s-sħab, imma jista' jkun tajjeb. Ġib ġakketta f'każ li jkun hemm bżonn." return "Int għedt: " + 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("Assistent lest. Ittajpja l-frażi tal-qawmien biex tittestja.") while True: typed = input("> ").strip().lower() jekk ittajpjat == WAKE_WORD: wav_path = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transcribe(wav_path) reply = generate_reply(text) print("Utent:", text); print("Assistent:", tweġiba) tkellem(tweġiba) inkella: print("Ittajpja l-frażi tal-qawmien biex tittestja l-linja.")
Għal skoperta reali ta' wake-word, integra d-ditekter tal-istreaming ta' Porcupine (sensittività baxxa tas-CPU, għal kull kelma ewlenija). [2]
Irfinar tal-Awdjo Li Verament Jimporta 🎚️
Ftit tiswijiet żgħar jagħmlu lill-assistent tiegħek iħossu 10 darbiet aktar intelliġenti:
-
Distanza tal-mikrofonu : 30–60 ċm hija punt ideali għal ħafna mikrofoni USB.
-
Livelli : evita l-qtugħ fuq l-input u żomm il-plejbek san; irranġa r-rottaġġ qabel ma ssegwi l-kodiċi "ghosts". Fuq Raspberry Pi OS, tista' timmaniġġja l-apparat tal-output u l-livelli permezz tal-għodod tas-sistema jew
raspi-config. [1] -
Akustika tal-kamra : ħitan iebsin jikkawżaw eku; tapit artab taħt il-mikrofonu jgħin.
-
Limitu tal-kelma ta' attivazzjoni : sensittiv wisq → triggers tal-fantażma; strett wisq → se tkun qed tgħajjat lill-plastik. Porcupine jippermettilek li tbiddel is-sensittività għal kull kelma prinċipali. [2]
-
Termali : traskrizzjonijiet twal fuq Pi 5 jibbenefikaw mill-apparat li jkessaħ attiv uffiċjali għal prestazzjoni sostnuta. [1]
Minn Ġugarell għal Apparat: Servizzi, Autostart, Verifiki tas-Saħħa 🧯
Il-bnedmin jinsew imexxu l-iskripts. Il-kompjuters jinsew ikunu ġentili. Ibdel il-linja tiegħek f'servizz immaniġġjat:
-
Oħloq unità systemd:
[Unità] Deskrizzjoni=Assistent tal-Vuċi DIY Wara=network.target sound.target [Servizz] Utent=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=dejjem RestartSec=3 [Installa] WantedBy=multi-user.target
-
Ippermettiha:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Denb tal-log:
journalctl -u assistent -f
Issa jibda mal-boot, jerġa' jibda meta jiġġarraf, u ġeneralment iġib ruħu bħal appliance. Ftit tedjanti, ħafna aħjar.
Sistema ta' Ħiliet: Agħmilha Tassew Utli fid-Dar 🏠✨
Ladarba l-vuċi 'l ġewwa u l-vuċi 'l barra jkunu solidi, żid l-azzjonijiet:
-
Router tal-intenzjoni : rotot sempliċi ta' kliem kjavi għal kompiti komuni.
-
Dar intelliġenti : ippubblika avvenimenti fuq MQTT jew ċempel l-endpoints HTTP tal-Home Assistant.
-
Plugins : funzjonijiet Python veloċi bħal
set_timer,what_is_the_time,play_radio,run_scene.
Anke b'LLM tal-cloud fil-linja, iddirezzjona l-kmandi lokali ovvji l-ewwel għall-veloċità u l-affidabbiltà.
Lokali Biss vs Assistenza fuq il-Cloud: Kompromessi li Se Tħoss 🌓
Lokali biss
Vantaġġi: privati, offline, spejjeż prevedibbli.
Żvantaġġi: mudelli itqal jistgħu jkunu bil-mod fuq bordijiet żgħar. It-taħriġ multilingwi ta' Whisper jgħin bir-robustezza jekk iżżommu fuq l-apparat jew fuq server fil-qrib. [3]
tal-assistenza fuq il-cloud
: raġunament qawwi, twieqi ta' kuntest akbar.
Żvantaġġi: id-dejta titlaq mit-tagħmir, dipendenza fuq in-netwerk, spejjeż varjabbli.
Ibridu spiss jirbaħ: wake word + ASR lokali → sejħa ta' API għar-raġunar → TTS lokali. [2][3][5]
Issolvi l-Problemi: Gremlins Strambi u Soluzzjonijiet Mgħaġġla 👾
-
Kelma ta' attivazzjoni falza li tattiva : baxxi s-sensittivitajiet jew ipprova mikrofonu differenti. [2]
-
Dewmien tal-ASR : uża mudell Whisper iżgħar jew ibni
whisper.cppbil-bnadar tar-rilaxx (-j --config Release). [4] -
TTS imqatta' : iġġenera minn qabel frażijiet komuni; ikkonferma l-apparat awdjo tiegħek u r-rati tal-kampjunar.
-
Ma nstab l-ebda mikrofonu : iċċekkja
arecord -lu l-mixers. -
Throttling termali : uża l-Active Cooler uffiċjali fuq il-Pi 5 għal prestazzjoni sostnuta. [1]
Noti dwar is-Sigurtà u l-Privatezza li Għandek Tabilħaqq Taqra 🔒
-
Żomm il-Pi tiegħek aġġornat bl-APT.
-
Jekk tuża xi API tal-cloud, irreġistra dak li tibgħat u kkunsidra li teditja l-biċċiet personali lokalment l-ewwel.
-
Mexxi s-servizzi bl-inqas privileġġ; evita
s-sudof'ExecStart sakemm ma jkunx meħtieġ. -
Ipprovdi modalità lokali biss għall-mistednin jew għal ħinijiet kwieti.
Ibni Varjanti: Ħallat u Qabbel Bħal Sandwich 🥪
-
Ultra-lokali : Porcupine + whisper.cpp + Piper + regoli sempliċi. Privat u b'saħħtu. [2][4][5]
-
Assistenza veloċi fis-sħab : Porcupine + (Whisper lokali iżgħar jew ASR fis-sħab) + TTS lokali + LLM fis-sħab.
-
Ċentrali tal-awtomazzjoni tad-dar : Żid flussi ta' Node-RED jew Home Assistant għal rutini, xeni, u sensuri.
Eżempju ta' Ħila: Dwal Mixgħula permezz ta' MQTT 💡
importa paho.mqtt.client bħala mqtt MQTT_HOST = "192.168.1.10" TOPIC = "dar/kamra tal-għixien/dawl/sett" def set_light(stat: str): klijent = mqtt.Client() klijent.connect(MQTT_HOST, 1883, 60) payload = "ON" jekk state.lower().startswith("on") inkella "OFF" klijent.publish(TOPIC, payload, qos=1, retain=False) klijent.disconnect() # jekk "ixgħel id-dwal" fit-test: set_light("on")
Żid linja bil-vuċi bħal: “ixgħel il-lampa tal-kamra tal-għixien,” u tħossok bħal saħħar.
Għaliex Dan l-Istack Jaħdem fil-Prattika 🧪
-
Porcupine huwa effiċjenti u preċiż fl-iskoperta ta' kliem imqajjem fuq bordijiet żgħar, u dan jagħmilha possibbli li tisma' dejjem. [2]
-
It-taħriġ kbir u multilingwi ta' Whisper jagħmilha robusta għal ambjenti u aċċenti varjati. [3]
-
whisper.cppiżomm dik il-qawwa użabbli fuq apparati tas-CPU biss bħall-Pi. [4] -
Piper iżomm ir-risposti veloċi mingħajr ma jibgħat l-awdjo lil TTS fuq il-cloud. [5]
Twil wisq, ma qrajtux
Ibni Assistent AI DIY modulari u privat b'Raspberry Pi billi tgħaqqad Porcupine għall-kelma ta' qawmien, Whisper (permezz ta' whisper.cpp ) għall-ASR, il-moħħ tal-għażla tiegħek għat-tweġibiet, u Piper għat-TTS lokali. Daħħlu bħala servizz systemd, irfina l-awdjo, u qabbad azzjonijiet MQTT jew HTTP. Huwa orħos milli taħseb, u strambament pjaċevoli biex tgħix bih. [1][2][3][4][5]
Referenzi
-
Softwer u Tkessiħ tar-Raspberry Pi – Informazzjoni dwar Raspberry Pi Imager (niżżel u uża) u l-prodott Pi 5 Active Cooler
-
Raspberry Pi Imager: aqra aktar
-
Cooler Attiv (Pi 5): aqra aktar
-
-
Porcupine Wake Word – SDK & bidu rapidu (kliem kjavi, sensittività, inferenza lokali)
-
Whisper (mudell ASR) – ASR multilingwi u robust imħarreġ fuq ~680k siegħa
-
Radford et al., Rikonoxximent Robust tad-Diskors permezz ta' Superviżjoni Dgħajfa fuq Skala Kbira (Whisper): aqra aktar
-
-
whisper.cpp – Inferenza Whisper li tuża s-CPU b'CLI u passi tal-bini
-
Piper TTS – TTS newrali lokali u veloċi b'ħafna vuċijiet/lingwi