Kif tibni Assistent tal-AI DIY b'Raspberry Pi

Kif tibni Assistent tal-AI DIY b'Raspberry Pi

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

  1. Flash Raspberry Pi OS b'Raspberry Pi Imager. Huwa l-mod sempliċi biex tikseb microSD bootable bil-presets li trid. [1]

  2. Ibbutja, qabbad man-netwerk, imbagħad aġġorna l-pakketti:

aġġornament sudo apt && aġġornament sudo apt -y
  1. 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]

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

 

Pi tal-lampun AI

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.cpp jipprovdi 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:

  1. 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
  1. Ippermettiha:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
  1. 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.cpp bil-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 -l u 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-sudo f'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.cpp iż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

  1. Softwer u Tkessiħ tar-Raspberry Pi – Informazzjoni dwar Raspberry Pi Imager (niżżel u uża) u l-prodott Pi 5 Active Cooler

  2. Porcupine Wake Word – SDK & bidu rapidu (kliem kjavi, sensittività, inferenza lokali)

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

  4. whisper.cpp – Inferenza Whisper li tuża s-CPU b'CLI u passi tal-bini

  5. Piper TTS – TTS newrali lokali u veloċi b'ħafna vuċijiet/lingwi

Sib l-Aħħar AI fil-Ħanut Uffiċjali tal-Assistent tal-AI

Dwarna


Lura għall-blogg