Îți dorești un asistent vocal minuscul care să te urmeze cu adevărat, să funcționeze pe propriul hardware și să nu comande accidental doisprezece ananasuri pentru că te-a auzit greșit? Un asistent AI DIY cu Raspberry Pi este surprinzător de realizabil, distractiv și flexibil. Vei conecta un cuvânt de trezire, recunoaștere vocală (ASR = recunoaștere automată a vorbirii), un creier pentru limbaj natural (reguli sau un LLM) și text-to-speech (TTS). Adaugă câteva scripturi, unul sau două servicii și câteva setări audio atente și ai o boxă inteligentă de buzunar care respectă regulile tale.
Hai să te ducem de la zero la a vorbi cu Pi-ul tău, fără obișnuitele smucituri. Vom acoperi componentele, configurarea, codul, comparațiile, problemele... tot burrito-ul. 🌯
Articole pe care ți-ar putea plăcea să le citești după acesta:
🔗 Cum să studiezi eficient inteligența artificială
Creați o foaie de parcurs pentru studiu, exersați proiecte și urmăriți progresul.
🔗 Cum să pornești o companie de inteligență artificială
Validarea problemei, construirea MVP-ului, formarea echipei, asigurarea clienților inițiali.
🔗 Cum să folosești inteligența artificială pentru a fi mai productiv
Automatizează sarcinile de rutină, eficientizează fluxurile de lucru și sporește producția creativă.
🔗 Cum să integrezi inteligența artificială în afacerea ta
Identificați procese cu impact ridicat, implementați proiecte pilot, măsurați rentabilitatea investiției, scalați.
Ce face un asistent AI DIY bun cu Raspberry Pi ✅
-
Privat în mod implicit – păstrează sunetul local acolo unde este posibil. Tu decizi ce iese de pe dispozitiv.
-
Modular – componente de înlocuire precum Lego: motor de cuvinte de trezire, ASR, LLM, TTS.
-
Accesibil – în mare parte open source, microfoane, difuzoare și un Pi obișnuite.
-
Hackabil – vrei automatizare a locuinței, tablouri de bord, rutine, abilități personalizate? Simplu.
-
Fiabil – gestionat de servicii, pornește și începe să asculte automat.
-
Distractiv – vei învăța multe despre audio, procese și design bazat pe evenimente.
Un mic sfat: Dacă folosești un Raspberry Pi 5 și intenționezi să folosești modele locale mai grele, un cooler cu clips te ajută la sarcină susținută. (Dacă ai dubii, alege coolerul activ oficial conceput pentru Pi 5.) [1]
Piese și unelte de care veți avea nevoie 🧰
-
Raspberry Pi : Se recomandă Pi 4 sau Pi 5 pentru spațiu liber.
-
Card microSD : se recomandă 32 GB+.
-
Microfon USB : un microfon USB simplu pentru conferințe este excelent.
-
Difuzor : difuzor USB sau de 3,5 mm sau un amplificator I2S HAT.
-
Rețea : Ethernet sau Wi-Fi.
-
Dotări opționale: carcasă, răcitor activ pentru Pi 5, buton pentru funcția „apasă și vorbește”, inel LED. [1]
Configurarea sistemului de operare și a liniei de bază
-
Flashează sistemul de operare Raspberry Pi cu Raspberry Pi Imager. Este modalitatea simplă de a obține o cartelă microSD bootabilă cu presetările dorite. [1]
-
Porniți, conectați-vă la rețea, apoi actualizați pachetele:
sudo apt update && sudo apt upgrade -y
-
Noțiuni de bază despre audio : Pe Raspberry Pi OS puteți seta ieșirea implicită, nivelurile și dispozitivele prin intermediul interfeței desktop sau al
funcției raspi-config. Ieșirea audio USB și HDMI este acceptată pe toate modelele; ieșirea Bluetooth este disponibilă pe modelele cu Bluetooth. [1] -
Verificați dispozitivele:
arecord -l redare -l
Apoi testează captura și redarea. Dacă nivelurile par ciudate, verifică mixerele și setările implicite înainte de a da vina pe microfon.

Arhitectura dintr-o privire 🗺️
Un asistent AI DIY practic cu Raspberry Pi flow arată astfel:
Cuvânt de trezire → captură audio live → transcriere ASR → gestionarea intenției sau LLM → text de răspuns → TTS → redare audio → acțiuni opționale prin MQTT sau HTTP.
-
Cuvânt cheie : Porcupine este mic, precis și rulează local cu control al sensibilității pentru fiecare cuvânt cheie în parte. [2]
-
ASR : Whisper este un model ASR multilingv, de uz general, antrenat pe parcursul a ~680k ore; este robust la accente/zgomot de fundal. Pentru utilizare pe dispozitiv,
whisper.cppoferă o cale de inferență C/C++ simplificată. [3][4] -
Brain : Alegerea ta – un LLM în cloud prin API, un motor de reguli sau inferență locală, în funcție de putere.
-
TTS : Piper generează vorbire naturală local, suficient de rapid pentru răspunsuri rapide pe hardware modest. [5]
Tabel comparativ rapid 🔎
| Instrument | Cel mai bun pentru | Preț cam mic | De ce funcționează |
|---|---|---|---|
| Porcupine Wake Word | Declanșator de ascultare permanentă | Nivel gratuit + | CPU redus, precis, legături ușoare [2] |
| Șoaptă.cpp | ASR local pe Pi | Sursă deschisă | Precizie bună, prietenos cu procesorul [4] |
| Șoaptă mai rapidă | ASR mai rapid pe CPU/GPU | Sursă deschisă | Optimizări CTranslate2 |
| Piper TTS | Ieșire vocală locală | Sursă deschisă | Voci rapide, multe limbi [5] |
| API-ul Cloud LLM | Raționament bogat | Bazat pe utilizare | Elimină sarcinile de calcul intense |
| Nod-RED | Orchestrarea acțiunilor | Sursă deschisă | Fluxuri vizuale, compatibile cu MQTT |
Construcție pas cu pas: Prima ta buclă vocală 🧩
Vom folosi Porcupine pentru cuvântul de trezire, Whisper pentru transcriere, o funcție ușoară „creier” pentru răspuns (înlocuiți cu LLM-ul ales) și Piper pentru vorbire. Păstrați-l minimal, apoi iterați.
1) Instalați dependențele
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 instalează sounddevice numpy
-
Porcupine: ia SDK-ul/legaturile pentru limba ta și urmează instrucțiunile de pornire rapidă (cheie de acces + listă de cuvinte cheie + cadre audio →
.process). [2] -
Whisper (prietenos cu procesorul): construiește whisper.cpp :
clonă 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 fișierul_tau.wav -otxt
Cele de mai sus reflectă demararea rapidă a proiectului. [4]
Preferi Python?
faster-whisper(CTranslate2) este adesea mai rapid decât Python standard pe procesoare modeste.
2) Configurați Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # Descarcă un model vocal care îți place, de ex., ro_US-amy echo „Salut.” | ./piper --model voices/ro/ro_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper este conceput pentru TTS pe dispozitiv cu opțiuni multiple de voce/limbă. [5]
3) O buclă asistentă minimală în Python
Deliberat compact: așteaptă o frază de activare (stub), înregistrează, transcrie cu whisper.cpp , generează un răspuns (substitut), apoi vorbește prin Piper. Schimbați substituentul cu LLM-ul sau logica de regulă preferată.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # schimbă pentru Porcupine în producție [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(secunde * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') sd.wait() cu wave.open(cale, 'wb') ca 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 "vreme" in prompt.lower(): return "Nu văd norii, dar s-ar putea să fie bine. Adu-ți o jachetă pentru orice eventualitate." return "Ai spus: " + 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("Asistentul este gata. Introduceți fraza de activare pentru testare.") 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("Utilizator:", text); print("Asistent:", reply) speak(reply) else: print("Introduceți fraza de activare pentru a testa bucla.")
Pentru detectarea reală a cuvintelor cheie, integrați detectorul de streaming din Porcupine (sensibilitate redusă a CPU-ului, per cuvânt cheie). [2]
Reglarea audio care chiar contează 🎚️
Câteva mici remedieri îl fac pe asistentul tău să pară de 10 ori mai inteligent:
-
Distanța microfonului : 30–60 cm este un punct ideal pentru multe microfoane USB.
-
Niveluri : evitați clipping-ul la intrare și mențineți redarea sănătoasă; remediați rutarea înainte de a urmări codul fantomă. Pe Raspberry Pi OS, puteți gestiona dispozitivul de ieșire și nivelurile prin intermediul instrumentelor de sistem sau
al raspi-config. [1] -
Acustica camerei : pereții tari provoacă ecouri; un covoraș moale sub microfon ajută.
-
Pragul cuvântului de activare : prea sensibil → declanșatoare fantomă; prea strict → vei țipa la plastic. Porcupine îți permite să ajustezi sensibilitatea în funcție de cuvântul cheie. [2]
-
Termicitate : transcripțiile lungi de pe Pi 5 beneficiază de răcitorul activ oficial pentru performanță susținută. [1]
De la jucărie la electrocasnic: Servicii, pornire automată, verificări ale stării de funcționare 🧯
Oamenii uită să ruleze scripturi. Calculatoarele uită să fie amabile. Transformă-ți bucla într-un serviciu gestionat:
-
Creați o unitate systemd:
[Unitate] Descriere=Asistent vocal DIY După=network.target sound.target [Serviciu] Utilizator=pi Director de lucru=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Instalare] WantedBy=multi-user.target
-
Activează-l:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Cozi de jurnal:
journalctl -u asistent -f
Acum pornește la bootare, repornește la blocare și, în general, se comportă ca un dispozitiv. Un pic plictisitor, mult mai bun.
Sistem de abilități: Fă-l cu adevărat util acasă 🏠✨
După ce vocea de intrare și de ieșire este solidă, adăugați acțiuni:
-
Router de intenție : rute simple de cuvinte cheie pentru sarcini comune.
-
Casă inteligentă : publicați evenimente în MQTT sau apelați punctele finale HTTP ale Home Assistant.
-
Plugin-uri : funcții rapide Python precum
set_timer,what_is_the_time,play_radio,run_scene.
Chiar și cu un LLM în cloud în buclă, direcționați mai întâi comenzile locale evidente pentru viteză și fiabilitate.
Numai Local vs. Asistență în Cloud: Compromisuri pe care le vei simți 🌓
Numai local
Avantaje: privat, offline, costuri previzibile.
Dezavantaje: modelele mai grele pot fi lente pe plăci mici. Antrenamentul multilingv al Whisper ajută la robustețe dacă îl păstrați pe dispozitiv sau pe un server din apropiere. [3]
asistență în cloud
: raționament puternic, ferestre contextuale mai mari.
Dezavantaje: datele părăsesc dispozitivul, dependență de rețea, costuri variabile.
Un hibrid câștigă adesea: cuvânt de activare + ASR local → apelează un API pentru raționament → TTS local. [2][3][5]
Depanare: Gremlini ciudați și remedieri rapide 👾
-
Declanșări false ale cuvântului de activare : reduceți sensibilitățile sau încercați un alt microfon. [2]
-
Lag ASR : folosiți un model Whisper mai mic sau construiți
whisper.cppcu semnalizatoare de lansare (-j --config Release). [4] -
TTS sacadat : pre-generează fraze comune; confirmă dispozitivul audio și ratele de eșantionare.
-
Niciun microfon detectat : verificați
arecord -lși mixerele. -
Limitare termică : utilizați sistemul oficial de răcire activă de pe Pi 5 pentru performanță susținută. [1]
Note de securitate și confidențialitate pe care ar trebui să le citești cu adevărat 🔒
-
Menține-ți Pi-ul actualizat cu APT.
-
Dacă folosești orice API în cloud, înregistrează ceea ce trimiți și ia în considerare mai întâi cenzurarea locală a informațiilor personale.
-
Rulați serviciile cu cele mai puține privilegii; evitați
sudoîn ExecStart decât dacă este necesar. -
Oferiți un mod exclusiv local pentru oaspeți sau în orele liniștite.
Variante de construcție: Combină și asortează ca un sandviș 🥪
-
Ultra-local : Porcupine + whisper.cpp + Piper + reguli simple. Privat și robust. [2][4][5]
-
Asistență rapidă în cloud : Porcupine + (Whisper local mai mic sau ASR în cloud) + TTS local + LLM în cloud.
-
Centrală de automatizare a locuinței : Adăugați fluxuri Node-RED sau Home Assistant pentru rutine, scene și senzori.
Exemplu de abilitate: Aprinderea luminilor prin MQTT 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "acasă/sufragerie/lumină/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 "aprinde luminile" in text: set_light("on")
Adaugă o replică vocală precum: „aprinde lampa din sufragerie” și te vei simți ca un vrăjitor.
De ce funcționează această stivă în practică 🧪
-
Porcupine este eficient și precis în detectarea cuvintelor cheie pe plăci mici, ceea ce face posibilă ascultarea permanentă. [2]
-
Antrenamentul amplu și multilingv al programului Whisper îl face robust în medii și accente variate. [3]
-
whisper.cppmenține acea putere utilizabilă pe dispozitivele care folosesc doar CPU, cum ar fi Pi. [4] -
Piper menține răspunsurile rapide fără a trimite sunetul către un TTS în cloud. [5]
Prea lung, nu l-am citit
asistent AI modular, privat, , combinând Porcupine pentru cuvântul de trezire, Whisper (prin whisper.cpp ) pentru ASR, creierul ales pentru răspunsuri și Piper pentru TTS local. Împachetează-l ca un serviciu systemd, ajustează sunetul și conectează acțiunile MQTT sau HTTP. Este mai ieftin decât crezi și, în mod ciudat, plăcut de utilizat. [1][2][3][4][5]
Referințe
-
Software și răcire Raspberry Pi – Raspberry Pi Imager (descărcare și utilizare) și informații despre produsul Pi 5 Active Cooler
-
Raspberry Pi Imager: citește mai mult
-
Răcitor activ (Pi 5): citește mai mult
-
-
Porcupine Wake Word – SDK și pornire rapidă (cuvinte cheie, sensibilitate, inferență locală)
-
Whisper (model ASR) – ASR robust, multilingv, antrenat pe o perioadă de ~680.000 de ore
-
Radford și colab., Recunoaștere robustă a vorbirii prin supraveghere slabă la scară largă (Whisper): citește mai mult
-
-
whisper.cpp – Inferență Whisper prietenoasă cu procesorul, cu CLI și pași de compilare
-
Piper TTS – TTS neuronal local rapid, cu voci/limbi multiple