Si të ndërtoni një asistent AI DIY me Raspberry Pi

Si të ndërtoni një asistent AI DIY me Raspberry Pi

Dëshironi një asistent të vogël zëri që ndjek shembullin tuaj, funksionon me harduerin tuaj dhe nuk do të porosisë aksidentalisht dymbëdhjetë ananas sepse ju ka dëgjuar gabim? Një asistent AI i bërë vetë me Raspberry Pi është çuditërisht i arritshëm, argëtues dhe fleksibël. Do të krijoni një fjalë zgjimi, njohje të të folurit (ASR = njohje automatike e të folurit), një tru për gjuhën natyrore (rregulla ose një LLM) dhe tekst-në-fjalë (TTS). Shtoni disa skripte, një ose dy shërbime dhe disa ndryshime të kujdesshme audio, dhe keni një altoparlant inteligjent të xhepit që i bindet rregullave tuaja.

Le t'ju çojmë nga zero në bisedën me Pi-në tuaj pa tërheqjen e flokëve të zakonshme. Do të trajtojmë pjesët, konfigurimin, kodin, krahasimet, të metat... të gjithë burriton. 🌯

Artikuj që mund t'ju pëlqejnë të lexoni pas këtij:

🔗 Si ta studiojmë në mënyrë efektive inteligjencën artificiale
Krijo një plan studimi, praktiko projekte dhe ndiq progresin.

🔗 Si të hapni një kompani të inteligjencës artificiale
Validoni problemin, ndërtoni MVP-në, mblidhni ekipin, siguroni klientët fillestarë.

🔗 Si ta përdorni inteligjencën artificiale për të qenë më produktiv
Automatizoni detyrat rutinë, përmirësoni rrjedhat e punës dhe rrisni rezultatet krijuese.

🔗 Si ta përfshini inteligjencën artificiale në biznesin tuaj
Identifikoni proceset me ndikim të lartë, zbatoni projekte pilot, matni kthimin e investimit, shkallëzoni.


Çfarë e bën një asistent të mirë të inteligjencës artificiale (AI) me Raspberry Pi ✅

  • Privat si parazgjedhje – mbajeni audion lokale aty ku është e mundur. Ju vendosni se çfarë del nga pajisja.

  • Modular – ndërroni komponentë si Lego: motori i fjalëve wake, ASR, LLM, TTS.

  • i përballueshëm – kryesisht mikrofonë, altoparlantë dhe një Pi, me burim të hapur.

  • I hakueshëm – dëshironi automatizim në shtëpi, panele kontrolli, rutina, aftësi të personalizuara? E lehtë.

  • I besueshëm – i menaxhuar nga shërbimi, nis dhe fillon të dëgjojë automatikisht.

  • Argëtuese – do të mësoni shumë rreth audios, proceseve dhe dizajnit të drejtuar nga ngjarjet.

Këshillë e vogël: Nëse përdorni një Raspberry Pi 5 dhe planifikoni të përdorni modele lokale më të rënda, një ftohës me kapëse ndihmon nën ngarkesë të qëndrueshme. (Kur keni dyshime, zgjidhni ftohësin zyrtar aktiv të projektuar për Pi 5.) [1]


Pjesë dhe Vegla që do t'ju Nevojiten 🧰

  • Raspberry Pi : Pi 4 ose Pi 5 i rekomanduar për hapësirën e kokës.

  • Kartë microSD : Rekomandohet 32 ​​GB+.

  • Mikrofon USB : një mikrofon i thjeshtë USB për konferencë është shumë i mirë.

  • Altoparlant : Altoparlant USB ose 3.5 mm, ose një I2S amp HAT.

  • Rrjeti : Ethernet ose Wi-Fi.

  • Pajisje shtesë: kuti, ftohës aktiv për Pi 5, buton për të folur me zë, unazë LED. [1]

Konfigurimi i sistemit operativ dhe bazës

  1. Fshij sistemin operativ Raspberry Pi me Raspberry Pi Imager. Është mënyra më e thjeshtë për të marrë një microSD të nisshme me cilësimet e paracaktuara që dëshironi. [1]

  2. Nise, lidhu me rrjetin dhe pastaj përditëso paketat:

përditësimi i sudo apt && përmirësimi i sudo apt -y
  1. Bazat e audios : Në Raspberry Pi OS mund të caktoni daljen, nivelet dhe pajisjet e parazgjedhura nëpërmjet ndërfaqes së përdoruesit të desktopit ose raspi-config . Audio USB dhe HDMI mbështeten në të gjitha modelet; Dalja Bluetooth është e disponueshme në modelet me Bluetooth. [1]

  2. Verifikoni pajisjet:

arecord -l luaj -l

Pastaj testoni kapjen dhe riprodhimin. Nëse nivelet duken të çuditshme, kontrolloni mikserët dhe cilësimet fillestare përpara se të fajësoni mikrofonin.


Arkitektura me një vështrim 🗺️

Një asistent i zgjuar i inteligjencës artificiale DIY me Raspberry Pi flow duket kështu:

Fjala e zgjimit → kapja e drejtpërdrejtë e audios → transkriptimi ASR → trajtimi i qëllimit ose LLM → teksti i përgjigjes → TTS → riprodhimi i audios → veprime opsionale nëpërmjet MQTT ose HTTP.

  • Fjala e Zgjimit : Porcupine është i vogël, i saktë dhe funksionon lokalisht me kontroll të ndjeshmërisë për çdo fjalë kyçe. [2]

  • ASR : Whisper është një model ASR shumëgjuhësh dhe me qëllim të përgjithshëm, i trajnuar në ~680 mijë orë; është rezistent ndaj thekseve/zhurmës së sfondit. Për përdorim në pajisje, whisper.cpp ofron një rrugë të thjeshtë inference C/C++. [3][4]

  • Truri : Zgjedhja juaj – një LLM në cloud nëpërmjet API-t, një motor rregullash ose inferencë lokale në varësi të fuqisë.

  • TTS : Piper gjeneron ligjërim natyral në nivel lokal, mjaftueshëm shpejt për përgjigje të shpejta në pajisje të thjeshta. [5]


Tabela e Krahasimit të Shpejtë 🔎

Mjet Më e mira për Çmime të larta Pse funksionon
Fjala e Zgjimit të Porcupine Shkaktues gjithmonë i dëgjimit Niveli falas + CPU i ulët, lidhje të sakta dhe të lehta [2]
Whisper.cpp ASR lokale në Pi Burim i hapur Saktësi e mirë, miqësore me CPU-në [4]
Faster-Whisper ASR më i shpejtë në CPU/GPU Burim i hapur Optimizime të CTranslate2
Piper TTS Prodhimi lokal i të folurit Burim i hapur Zëra të shpejtë, shumë gjuhë [5]
API-ja e LLM-së në Cloud Arsyetim i pasur Bazuar në përdorim Zvogëlon ngarkesën e rëndë të llogaritjes
Nyja-KUQE Orkestrimi i veprimeve Burim i hapur Rrjedha vizuale, miqësore me MQTT

Ndërtim hap pas hapi: Cikli juaj i parë me zë 🧩

Do të përdorim Porcupine për fjalën e zgjimit, Whisper për transkriptimin, një funksion të lehtë "truri" për përgjigjen (zëvendësojeni me LLM-në tuaj të preferuar) dhe Piper për të folurit. Mbajeni minimal, pastaj përsëriteni.

1) Instaloni varësitë

sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
  • Porcupine: merrni SDK-në/lidhjet për gjuhën tuaj dhe ndiqni hapat e shpejtë (çelësi i aksesit + lista e fjalëve kyçe + kornizat audio → .process ). [2]

  • Whisper (i përshtatshëm për CPU): ndërto whisper.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

Sa më sipër pasqyron fillimin e shpejtë të projektit. [4]

Preferoni Python? Faster-whisper (CTranslate2) është shpesh më i shpejtë se Python i thjeshtë në CPU-të modeste.

2) Konfiguroni Piper TTS

git clone https://github.com/rhasspy/piper cd piper make # Shkarkoni një model zëri që ju pëlqen, p.sh., en_US-amy echo "Përshëndetje." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav

Piper është projektuar për TTS në pajisje me opsione të shumëfishta zëri/gjuhe. [5]

3) Një lak minimal asistent në Python

Qëllimisht kompakt: pret për një frazë zgjimi (stub), regjistron, transkripton me whisper.cpp , gjeneron një përgjigje (placeholder), pastaj flet nëpërmjet Piper. Zëvendësoni placeholder me LLM-në ose logjikën e rregullave tuaja të preferuara.

importo os, nënproces, valë importo pajisjen e zërit si sd WAKE_WORD = "hej kompjuter" # ndërro për Porcupine në prodhim [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=E Vërtetë) def record_wav(shtegu, sekondat=RECORD_SECONDS): audio = sd.rec(int(sekonda * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') sd.wait() me wave.open(path, 'wb') si 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 "Nuk i shoh retë, por mund të jetë mirë. Sillni një xhaketë për çdo rast." return "Ju thatë: " + 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("Asistent gati. Shkruaj frazën e zgjimit për të testuar.") 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("Përdoruesi:", text); print("Asistent:", reply) speak(reply) else: print("Shkruani frazën e zgjimit për të testuar ciklin.")

Për zbulimin e vërtetë të fjalëve të zgjimit, integroni detektorin e rrjedhës së Porcupine (ndjeshmëri e ulët e CPU-së, për çdo fjalë kyçe). [2]


Akordimi i audios që ka vërtet rëndësi 🎚️

Disa rregullime të vogla e bëjnë asistentin tuaj të ndihet 10 herë më i zgjuar:

  • Distanca e mikrofonit : 30–60 cm është një distancë ideale për shumë mikrofonë USB.

  • Nivelet : shmangni prerjen e të dhënave hyrëse dhe mbajeni riprodhimin të rregullt; rregulloni rrugëzimin përpara se të ndiqni fantazmat e kodit. Në Raspberry Pi OS, mund të menaxhoni pajisjen dalëse dhe nivelet nëpërmjet mjeteve të sistemit ose raspi-config . [1]

  • Akustika e dhomës : muret e forta shkaktojnë jehonë; një dyshek i butë nën mikrofon ndihmon.

  • Pragu i fjalës së zgjimit : shumë i ndjeshëm → shkaktarë fantazmë; shumë i rreptë → do t'i bërtasësh plastikës. Porcupine ju lejon të ndryshoni ndjeshmërinë për çdo fjalë kyçe. [2]

  • Termike : transkriptimet e gjata në Pi 5 përfitojnë nga ftohësi zyrtar aktiv për performancë të qëndrueshme. [1]


Kalimi nga lodra në pajisje shtëpiake: Shërbime, nisje automatike, kontrolle shëndetësore 🧯

Njerëzit harrojnë të ekzekutojnë skripte. Kompjuterët harrojnë të jenë të sjellshëm. Shndërrojeni ciklin tuaj në një shërbim të menaxhuar:

  1. Krijo një njësi të sistemit:

[Njësia] Përshkrimi=Asistent Zëri DIY Pas=network.target sound.target [Shërbimi] Përdoruesi=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Instalo] WantedBy=multi-user.target
  1. Aktivizoje atë:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
  1. Bishtat e trungut:

journalctl -u asistent -f

Tani fillon gjatë nisjes, riniset pas bllokimit dhe në përgjithësi sillet si një pajisje. Paksa e mërzitshme, shumë më mirë.


Sistemi i Aftësive: Bëjeni të Dobishëm në Shtëpi 🏠✨

Pasi futja dhe dalja e zërit të jenë të sakta, shtoni veprimet:

  • Router i qëllimshëm : rrugë të thjeshta me fjalë kyçe për detyra të zakonshme.

  • Shtëpi inteligjente : publikoni ngjarje në MQTT ose telefononi pikat fundore HTTP të Home Assistant.

  • Shtojcat : funksione të shpejta në Python si set_timer , what_is_the_time , play_radio , run_scene .

Edhe me një LLM në cloud në ciklin e punës, drejtoni së pari komandat lokale të dukshme për shpejtësi dhe besueshmëri.


Vetëm Lokale kundrejt Ndihmës në Cloud: Kompromise që do t'i Ndiheni 🌓

Vetëm lokal
Përparësitë: private, jashtë linje, kosto të parashikueshme.
Kundër: modelet më të rënda mund të jenë të ngadalta në borde të vogla. Trajnimi shumëgjuhësh i Whisper ndihmon me qëndrueshmërinë nëse e mbani në pajisje ose në një server aty pranë. [3]

Ndihma në cloud.
Përparësitë: arsyetim i fuqishëm, dritare konteksti më të mëdha.
Kundër: të dhënat largohen nga pajisja, varësia nga rrjeti, kostot variabile.

Një hibrid shpesh fiton: fjala zgjuese + ASR lokale → thirrja e një API për arsyetim → TTS lokale. [2][3][5]


Zgjidhja e problemeve: Gremlinët e çuditshëm dhe zgjidhjet e shpejta 👾

  • Shkaktuesit e fjalës së rreme të zgjimit : ulni ndjeshmërinë ose provoni një mikrofon tjetër. [2]

  • Vonesa ASR : përdorni një model më të vogël Whisper ose ndërtoni whisper.cpp me flamuj lëshimi ( -j --config Lëshim ). [4]

  • TTS me ndërprerje : gjeneroni paraprakisht fraza të zakonshme; konfirmoni pajisjen tuaj audio dhe shkallët e mostrave.

  • Nuk u zbulua mikrofon : kontrolloni arecord -l dhe mikserët.

  • Rrotullim termik : përdorni ftohësin zyrtar aktiv në Pi 5 për performancë të qëndrueshme. [1]


Shënime për Sigurinë dhe Privatësinë që Duhet t'i Lexoni 🔒

  • Mbajeni Pi-në tuaj të përditësuar me APT.

  • Nëse përdorni ndonjë API të cloud-it, regjistroni atë që dërgoni dhe merrni në konsideratë redaktimin e bit-eve personale fillimisht në nivel lokal.

  • Ekzekutoni shërbimet me privilegjet më të pakta; shmangni sudo-n në ExecStart përveç nëse është e nevojshme.

  • Ofroni një modalitet vetëm lokal për mysafirët ose orare të qeta.


Variante Ndërtimi: Përziej dhe Përputh si një Sanduiç 🥪

  • Ultra-lokal : Porcupine + whisper.cpp + Piper + rregulla të thjeshta. Privat dhe i fortë. [2][4][5]

  • Ndihmë e shpejtë në cloud : Porcupine + (Whisper lokal më i vogël ose cloud ASR) + TTS lokal + LLM në cloud.

  • Qendra e automatizimit në shtëpi : Shtoni rrjedhat Node-RED ose Home Assistant për rutinat, skenat dhe sensorët.


Shembull i aftësisë: Ndezja e dritave nëpërmjet MQTT 💡

importo paho.mqtt.client si mqtt MQTT_HOST = "192.168.1.10" TOPIC = "shtëpi/dhomë ndenjeje/dritë/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() # if "ndiz dritat" në tekst: set_light("on")

Shtoni një replikë zanore si: "ndizni llambën e dhomës së ndenjes" dhe do të ndiheni si një magjistar.


Pse kjo Stack funksionon në praktikë 🧪

  • Porcupine është efikas dhe i saktë në zbulimin e fjalëve të zgjimit në tabela të vogla, gjë që e bën të mundur dëgjimin gjithmonë. [2]

  • Trajnimi i gjerë dhe shumëgjuhësh i Whisper e bën atë të qëndrueshëm ndaj mjediseve dhe thekseve të ndryshme. [3]

  • whisper.cpp e mban atë energji të përdorshme në pajisjet vetëm me CPU si Pi. [4]

  • Piper i mban përgjigjet e shpejta pa dërguar audion në një TTS në cloud. [5]


Shumë e gjatë, nuk e lexova

Ndërtoni një Asistent AI modular, privat, të bërë vetë me Raspberry Pi duke kombinuar Porcupine për fjalën e zgjimit, Whisper (nëpërmjet whisper.cpp ) për ASR, trurin tuaj të zgjedhur për përgjigjet dhe Piper për TTS lokale. Mbështilleni atë si një shërbim të sistemuar, akordoni audion dhe lidhni veprimet MQTT ose HTTP. Është më i lirë nga sa mendoni dhe çuditërisht i këndshëm për të jetuar me të. [1][2][3][4][5]


Referencat

  1. Softueri dhe Ftohja Raspberry Pi – Raspberry Pi Imager (shkarko dhe përdor) dhe informacion mbi produktin Pi 5 Active Cooler

  2. Porcupine Wake Word – SDK dhe fillim i shpejtë (fjalë kyçe, ndjeshmëri, përfundim lokal)

  3. Whisper (modeli ASR) – ASR shumëgjuhësh dhe i fuqishëm, i trajnuar në ~680 mijë orë.

    • Radford et al., Njohje e Fuqishme e të Folurit nëpërmjet Mbikëqyrjes së Dobëtë në Shkallë të Madhe (Whisper): lexoni më shumë

  4. whisper.cpp – Përfundim Whisper i përshtatshëm për CPU-në me CLI dhe hapa ndërtimi

  5. Piper TTS – TTS neuronale lokale dhe e shpejtë me zëra/gjuhë të shumëfishta

Gjeni IA-në më të fundit në Dyqanin Zyrtar të Asistentëve të IA-së

Rreth Nesh


Kthehu te blogu