Uburyo bwo gukora DIY Assistant AI ukoresheje Raspberry Pi

Uburyo bwo gukora DIY Assistant AI ukoresheje Raspberry Pi

Urashaka umufasha w'ijwi muto ukurikiza amabwiriza yawe, ukoresha ibikoresho byawe bwite, kandi utagutumije inanasi cumi n'ebyiri ku bw'impanuka kuko yakumva nabi? Umufasha wa DIY AI ufite Raspberry Pi aratangaje kugerwaho, araryoshye, kandi aroroshye. Uzahuza ijambo ribyutse, kumenya imvugo (ASR = kumenya imvugo byikora), ubwonko bw'ururimi karemano (amategeko cyangwa LLM), na TTS. Ongeraho inyandiko nke, serivisi imwe cyangwa ebyiri, hamwe n'uburyo bwo guhindura amajwi witonze, kandi ufite indangururamajwi nziza yubaha amategeko yawe.

Reka tugukure kuri zeru tujye kuvugira kuri Pi yawe nta gukurura umusatsi bisanzwe. Tuzavuga ku bice, imiterere, kode, igereranya, gushakisha ... burrito yose. 🌯

Ingingo ushobora gukunda gusoma nyuma y'iyi:

🔗 Uburyo bwo kwiga ubuhanga bwo gukora imibonano mpuzabitsina (AI) neza
Kora gahunda y'inyigo, shyira mu bikorwa imishinga, kandi ukurikirane aho iterambere rigeze.

🔗 Uburyo bwo gutangiza ikigo cy’ubuhanga mu bya siyansi (AI)
Emeza ikibazo, wubake MVP, teranya itsinda, urinde abakiriya ba mbere.

🔗 Uburyo bwo gukoresha ubuhanga bwo gukora imibonano mpuzabitsina (AI) kugira ngo urusheho gutanga umusaruro
Hindura imirimo isanzwe, worohereze imikorere, kandi wongere umusaruro w'ubuhanzi.

🔗 Uburyo bwo gushyiramo ubuhanga bwo gukora imibonano mpuzabitsina (AI) mu bucuruzi bwawe
Kumenya inzira zigira ingaruka zikomeye, gushyira mu bikorwa ibizamini, gupima inyungu y'abaturage, n'ibipimo.


Ni iki gituma umuntu akora neza nka AI Assistant ukoresheje Raspberry Pi ✅

  • Ibanga ku buryo busanzwe - shyira amajwi aho bishoboka. Ni wowe ugena ikiva muri igikoresho.

  • Modular – hinduranya ibice nka Lego: wake word engine, ASR, LLM, TTS.

  • Ihendutse - ahanini ifunguye, indangururamajwi zikoreshwa mu buryo bw'ibicuruzwa, indangururamajwi, na Pi.

  • Hackable - urashaka ikoranabuhanga ryo mu rugo, dashboards, gahunda, ubuhanga bwihariye? Biroroshye.

  • Yizewe - icungwa na serivisi, itangira kumva mu buryo bwikora.

  • Bishimishije – uziga byinshi ku bijyanye n'amajwi, imikorere, n'igishushanyo mbonera gishingiye ku bikorwa.

Inama nto: Niba ukoresha Raspberry Pi 5 kandi ugateganya gukoresha moderi zikomeye zo mu gace utuyemo, icyuma gikonjesha gifasha mu gihe cy'umutwaro uhoraho. (Iyo ushidikanya, hitamo Active Cooler yemewe yagenewe Pi 5.) [1]


Ibice n'ibikoresho uzakenera 🧰

  • Raspberry Pi : Pi 4 cyangwa Pi 5 ni byiza ku muntu ukoresha headroom.

  • Ikarita ya microSD : 32 GB+ isabwa.

  • Mikoro ya USB : mikoro yoroshye ya USB conference ni nziza cyane.

  • Indangururamajwi : Indangururamajwi ya USB cyangwa 3.5 mm, cyangwa I2S amp HAT.

  • Umuyoboro : Ethernet cyangwa Wi-Fi.

  • Ibintu byiza byifashishwa: agasanduku, icyuma gikonjesha cya Pi 5, akabuto ko gukanda kugira ngo uvuge, impeta ya LED. [1]

Imiterere y'imikorere ya mudasobwa n'ibanze

  1. Flash Raspberry Pi OS ikoresheje Raspberry Pi Imager. Ni bwo buryo bworoshye bwo kubona microSD ikoresha ikoranabuhanga rya "bootable" hamwe n'ibikoresho wifuza. [1]

  2. Fungura, huza kuri interineti, hanyuma uvugurure paki:

kuvugurura sudo apt && kuvugurura sudo apt -y
  1. Iby'ibanze by'amajwi : Kuri Raspberry Pi OS ushobora gushyiraho umusaruro usanzwe, urwego, n'ibikoresho ukoresheje UI ya desktop cyangwa raspi-config . Amajwi ya USB na HDMI ashyigikirwa muri moderi zose; umusaruro wa Bluetooth uraboneka kuri moderi zifite Bluetooth. [1]

  2. Emeza ibikoresho:

arecord -l aplay -l

Hanyuma gerageza gufata no gukina. Niba urwego rusa n'urutangaje, reba mixers na defaults mbere yo gushinja mikoro.

 

AI raspberry pi

Imiterere y'inyubako mu buryo burambuye 🗺️

w’ubwenge wo gukora imibonano mpuzabitsina (DIY Assistant) ufite umurongo wa Raspberry Pi usa gutya:

Kura ijambo → gufata amajwi mu buryo bw'imbonankubone → Kwandika ASR → Gufata umugambi cyangwa LLM → Inyandiko yo gusubiza → TTS → Gukina amajwi → Ibikorwa bidasabwa binyuze muri MQTT cyangwa HTTP.

  • Ijambo ry'ibyuka : Porcupine ni nto, ifite ukuri, kandi ikora neza mu gace runaka ikoresheje uburyo bwo kugenzura uburyo umuntu akoresha ijambo ry'ingenzi. [2]

  • ASR : Whisper ni moderi ya ASR ikoreshwa mu ndimi nyinshi kandi ikoreshwa muri rusange yatojwe amasaha agera kuri 680k; ikomeye mu gukoresha amajwi/urusaku rw'inyuma. Ku ikoreshwa rya mudasobwa, whisper.cpp itanga inzira yo gusesengura C/C++ idakoresha ikoranabuhanga. [3][4]

  • Ubwonko : Icyo wahisemo - LLM y'ibicu binyuze kuri API, moteri y'amategeko, cyangwa igitekerezo cy'aho uherereye bitewe n'imbaraga z'imbaraga.

  • TTS : Piper ikora imvugo isanzwe aho iherereye, vuba bihagije kugira ngo isubize vuba ku bikoresho biciriritse. [5]


Imbonerahamwe y'igereranya ryihuse 🔎

Igikoresho Ibyiza Kuri Igiciro gikwiye Impamvu Ikora
Ijambo ry'ingurube Imbaraga zo gutega amatwi buri gihe Icyiciro cy'ubuntu + CPU nke, ifite ubushobozi bwo guhuza neza kandi byoroshye [2]
Whisper.cpp ASR yo mu gace kuri Pi Isoko ifunguye Ubuhanga bwiza, butangiza CPU [4]
Ijwi ryihuse ASR yihuta kuri CPU/GPU Isoko ifunguye Uburyo bwo kunoza CTranslate2
Piper TTS Ibisohoka mu majwi yo mu gace Isoko ifunguye Amajwi yihuta, indimi nyinshi [5]
API ya LLM yo mu bicu Gutekereza gukomeye Hashingiwe ku mikoreshereze Ikuramo ikoranabuhanga rihambaye ry'ikoranabuhanga
Node-RED Ibikorwa byo gutegurira hamwe Isoko ifunguye Uburyo bwo kureba, bworoshye gukoresha MQTT

Intambwe ku yindi: Ijwi ryawe rya mbere 🧩

Tuzakoresha Porcupine mu gukangura ijambo, Whisper mu kwandika, "ubwonko" bworoheje mu gusubiza (usimbuze LLM wihitiyemo), na Piper mu kuvuga. Bikore ku rugero ruto, hanyuma usubiremo.

1) Gushyiraho ibintu bifitanye isano

sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
  • Porcupine: fata SDK/ibifunga by'ururimi rwawe hanyuma ukurikize uburyo bwo gutangira vuba (urufunguzo rwo kwinjira + urutonde rw'amagambo y'ingenzi + amakaramu y'amajwi → .process ). [2]

  • Whisper (ikoresha CPU): yubaka whisper.cpp :

git clone 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

Ibivuzwe haruguru bigaragaza uburyo umushinga watangiye vuba. [4]

Ukunda Python? Wihutira kuvuga (CBTranslate2) akenshi irushaho kuba nziza kurusha vanilla Python kuri CPU nto.

2) Gushyiraho Piper TTS

git clone https://github.com/rhasspy/piper cd piper make # Kuramo icyitegererezo cy'ijwi ukunda, urugero, en_US-amy echo "Muraho." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav

Piper yagenewe gukoresha TTS iri kuri terefone hamwe n'amahitamo menshi y'ijwi/ururimi. [5]

3) Umuyoboro muto w'ubufasha muri Python

Ikora ku bushake: itegereza interuro ifunguye (stub), ikandika, ikandika na whisper.cpp , igatanga igisubizo (placeholder), hanyuma ikavuga binyuze kuri Piper. Hindura placeholder ukoresheje LLM cyangwa amategeko ukunda.

import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # swap for Porcupine iri gukorwa [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(amasegonda * ISHUSHO_RY'UMUSARURO), icyitegererezo=ISHUSHO_RY'UMUSARURO, imiyoboro=IMIYOBORO, dtype='int16') sd.tegereza() hamwe na wave.open(inzira, 'wb') nka w: w.setnchannels(IMIYOBORO); 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) hamwe na open(path.replace().wav", ".txt"), "r", encoding="utf-8") as f: return f.read().strip() def generate_reply(prompt): if "weather" muri prompt.lower(): return "Simbona ibicu, ariko bishobora kuba byiza. Zana ikoti mu gihe bibaye ngombwa." subiza "Wavuze uti: " + 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("Assistant yiteguye. Andika interuro yo kubyuka kugirango ugerageze.") mugihe True: typed = input("> ").strip().lower() niba typed == WAKE_WORD: wav_path = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transcribe(wav_path) reply = generate_reply(text) print("User:", text); print ("Umufasha:", subiza) vuga (subiza) ikindi: print ("Andika interuro yo kubyuka kugira ngo ugerageze umurongo.")

Kugira ngo umenye neza ijambo rihishurwa, shyiramo uburyo bwa Porcupine bwo kureba amashusho (CPU nke, uburyo bwo kumva ijambo ku ijambo). [2]


Gutunganya amajwi bifite akamaro mu by'ukuri 🎚️

Udukoso duto duto dutuma umufasha wawe yumva ashoboye gukora ibintu 10×:

  • Intera ya mikoro : cm 30–60 ni ahantu heza kuri mikoro nyinshi za USB.

  • Urwego : irinde gukata kuri input kandi ukomeze gukina neza; kosora routing mbere yo gukurikirana code ghosts. Kuri Raspberry Pi OS, ushobora gucunga igikoresho n'urwego bisohoka ukoresheje sisitemu cyangwa raspi-config . [1]

  • Amajwi yo mu cyumba : inkuta zikomeye zitera amajwi; agatambaro koroshye munsi ya mikoro karafasha.

  • Umwanya w'amagambo : urushaho kugira ubwenge → ibitera umwuka; ukabije → uzaba urimo gusakuza kuri pulasitiki. Porcupine igufasha guhindura uburyo bwo kumva ijambo ry'ingenzi. [2]

  • Ubushyuhe : inyandiko ndende kuri Pi 5 zigira akamaro ka cooler yemewe kugira ngo ikomeze gukora neza. [1]


Kuva ku gikinisho kugeza ku gikoresho: Serivisi, Gutangiza byihuse, Gusuzuma ubuzima 🧯

Abantu bibagirwa gukoresha inyandiko. Mudasobwa zibagirwa kuba nziza. Hindura umurongo wawe muri serivisi icungwa:

  1. Kora urwego rwa systemd:

[Igice] Ibisobanuro=DIY Voice Assistant After=network.target sound.target [Serivisi] User=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Shyiramo] WantedBy=multi-user.target
  1. Bikoreshe:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
  1. Imirongo y'ibiti:

journalctl -u umufasha -f

Noneho itangira ikimara gufungurwa, ikongera igatangira gukora iyo igonze, kandi muri rusange ikora nk'igikoresho. Birambiranye gato, ni byiza cyane.


Sisitemu y'Ubuhanga: Igire akamaro mu rugo 🏠✨

Iyo ijwi ryumvikana n'ijwi risohoka byose bihamye, ongeramo ibikorwa:

  • Router y'intego : inzira zoroheje z'amagambo y'ingenzi ku mirimo isanzwe.

  • Smart home : tangaza ibikorwa kuri MQTT cyangwa uhamagare HTTP endpoints za Home Assistant.

  • Plugins : imikorere ya Python yihuta nka set_timer , what_is_the_time , play_radio , run_scene .

Nubwo LLM y'igicu iri mu murongo, banza ukoreshe amabwiriza agaragara yo mu gace runaka kugira ngo umenye umuvuduko n'ubwizerwe.


Uburyo bwo gufasha abantu mu buryo bwa Local Only ugereranije n'uburyo bwo gufasha mu buryo bwa Cloud: Uburyo bwo kugabanya amafaranga uzumva 🌓

mu gace k’iwanyu gusa
: ibiciro byihariye, bitari kuri interineti, kandi bishobora kugaragara neza.
Ibibi: moderi ziremereye zishobora gutinda ku mbaho ​​nto. Amahugurwa ya Whisper mu ndimi nyinshi afasha mu gukomera niba uyigumisha kuri terefone cyangwa kuri seriveri iri hafi aho. [3]

Ubufasha mu bicu
Ibyiza: gutekereza gukomeye, amadirishya manini y'aho ibintu biherereye.
Ibibi: amakuru asigara ku bikoresho, gushingira ku muyoboro, ikiguzi gihinduka.

Ihurizo rikunze gutsinda: wake word + ASR local → hamagara API kugira ngo usobanukirwe → TTS local. [2][3][5]


Gukemura ibibazo: Amakosa adasanzwe ya Gremlins n'ibisubizo byihuse 👾

  • Kuraho amagambo atari yo : kugabanya ubushobozi bwo kumva cyangwa kugerageza indi mikoro. [2]

  • ASR lag : koresha moderi nto ya Whisper cyangwa wubake whisper.cpp hamwe n'amabendera yo kurekura ( -j --config Release ). [4]

  • Choppy TTS : banza utange interuro zisanzwe; yemeza igikoresho cyawe cy'amajwi n'ibiciro by'ingero.

  • Nta mikoro yabonetse : reba arecord -l na mixers.

  • Gukoresha ubushyuhe bukabije : koresha Active Cooler yemewe kuri Pi 5 kugira ngo ukomeze gukora neza. [1]


Inyandiko z'umutekano n'ubuzima bwite ugomba gusoma 🔒

  • Komeza uvugurure Pi yawe ukoresheje APT.

  • Niba ukoresha API iyo ari yo yose yo mu bicu, andika ibyo wohereza hanyuma utekereze ku guhindura ibice by'umuntu ku giti cye mu gace utuyemo mbere na mbere.

  • Koresha serivisi zifite amahirwe make; irinde sudo muri ExecStart keretse bibaye ngombwa.

  • Tanga uburyo bwo gukorera mu gace utuyemo gusa cyangwa amasaha y'ituze.


Ubwubatsi bw'Ibintu Bitandukanye: Vanga Uhuze Nk'Umugati 🥪

  • Ifite aho iherereye cyane : Porcupine + whisper.cpp + Piper + amategeko yoroshye. Yihariye kandi irakomeye. [2][4][5]

  • Ubufasha bw'ibicu byihuta : Porcupine + (whisper ntoya yo mu gace cyangwa ASR yo mu bicu) + TTS yo mu gace + LLM yo mu bicu.

  • Ikigo gishinzwe gukora ikoranabuhanga ryo mu rugo : Ongeraho uburyo bwa Node-RED cyangwa Home Assistant bwo gukoresha porogaramu, amashusho, n'ibikoresho.


Urugero rw'ubuhanga: Gucana ukoresheje MQTT 💡

import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "home/loving/light/set" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "ON" niba state.lower().startswith("on") ikindi "OFF" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # niba "cana amatara" mu nyandiko: set_light("on")

Ongeraho ijwi nk'iri: “cana itara ryo mu cyumba cyo kubamo,” maze uzumva umeze nk'umupfumu.


Impamvu iyi Stack ikora mu bikorwa 🧪

  • Inyoni ifite ubushobozi bwo kumenya neza amagambo ahishwe ku mbaho ​​nto, bigatuma gutega amatwi igihe cyose bishoboka. [2]

  • Amahugurwa manini ya Whisper mu ndimi nyinshi atuma ikomera mu bidukikije bitandukanye no mu mivugire itandukanye. [3]

  • whisper.cpp igumana ubwo bubasha bukoreshwa ku bikoresho bya CPU gusa nka Pi. [4]

  • Piper ikomeza gusubiza vuba nta kohereza amajwi kuri TTS yo mu bicu. [5]


Igihe kirekire cyane, sinagisomye

Kora porogaramu yihariye ya DIY AI Assistant hamwe na Raspberry Pi uhuza Porcupine na wake word, Whisper (ukoresheje whisper.cpp ) kuri ASR, ubwonko bwawe bwo guhitamo ibisubizo, na Piper kuri TTS yo mu gace utuyemo. Bishyire nk'uburyo bwo gukoresha systemd, tunganya amajwi, kandi ushyiremo umurongo mu bikorwa bya MQTT cyangwa HTTP. Birahendutse kurusha uko ubitekereza, kandi biraryoshye cyane kubaho. [1][2][3][4][5]


Amareferensi

  1. Porogaramu ya Raspberry Pi & Gukonjesha – Raspberry Pi Imager (kuramo no gukoresha) n'amakuru ku bicuruzwa bya Pi 5 Active Cooler

  2. Porcupine Wake Word – SDK & quick start (amagambo y'ingenzi, uburyo bwo kumenya ibintu, igitekerezo cyo mu gace)

  3. Kuvuga mu rurimi rw'Icyongereza (ASR) – Kumenya indimi nyinshi kandi zihamye za ASR byahuguriwe amasaha agera ku bihumbi 680

    • Radford n'abandi, Kumenya imvugo mu buryo bukomeye binyuze mu kugenzura abantu mu buryo bukabije (Whisper): soma byinshi

  4. whisper.cpp – Uburyo bwo gusesengura Whisper bukoresha CLI n'intambwe zo kubaka

  5. Piper TTS – Imyakura yihuse, yo mu gace hamwe n'amajwi/indimi nyinshi

Shaka ubuhanga bwa AI bugezweho mu iduka ryemewe rya AI Assistant Store

Ku bijyanye natwe


Garuka kuri blog