Kas soovid pisikest häälassistenti, mis päriselt järgib sinu juhiseid, töötab sinu enda riistvaral ega telli kogemata kahtteist ananassi, kuna kuulis sind valesti? Isetehtud tehisintellekti assistent Raspberry Pi-ga on üllatavalt teostatav, lõbus ja paindlik. Sa pead ühendama äratussõna, kõnetuvastuse (ASR = automaatne kõnetuvastus), aju loomuliku keele jaoks (reeglid või LLM) ja tekstist kõneks teisendamise (TTS). Lisa paar skripti, üks või kaks teenust ja mõned hoolikad helimuudatused ning sul on taskukohane nutikõlar, mis kuuletub sinu reeglitele.
Aitame sul nullist Pi-ga vestelda ilma tavapärase juukseid sikutamiseta. Käsitleme osi, seadistamist, koodi, võrdlusi, vigu... kogu burritot. 🌯
Artiklid, mida võiksite pärast seda lugeda:
🔗 Kuidas tehisintellekti tõhusalt uurida
Loo õppekava, harjuta projekte ja jälgi edusamme.
🔗 Kuidas alustada tehisintellektiga tegelevat ettevõtet
Probleemi valideerimine, MVP loomine, meeskonna kokkupanek, esmaste klientide leidmine.
🔗 Kuidas tehisintellekti abil produktiivsem olla
Automatiseeri rutiinseid ülesandeid, lihtsusta töövooge ja suurenda loomingulist väljundit.
🔗 Kuidas tehisintellekti oma ettevõttesse integreerida
Tuvastage suure mõjuga protsessid, rakendage pilootprojekte, mõõtke investeeringutasuvust ja skaleerige.
Mis teeb Raspberry Pi-st hea isetehtud tehisintellekti assistendi ✅
-
Vaikimisi privaatne – hoia heli võimaluse korral lokaalsena. Teie otsustate, mis seadmest lahkub.
-
Modulaarne – vaheta komponente nagu Lego: äratussõnade mootor, ASR, LLM, TTS.
-
Taskukohane – enamasti avatud lähtekoodiga, tavalised mikrofonid, kõlarid ja Pi.
-
Häkitav – soovid koduautomaatikat, juhtpaneele, rutiine, kohandatud oskusi? Lihtne.
-
Usaldusväärne – teenusepõhine, käivitub ja hakkab kuulama automaatselt.
-
Lõbus – õpid palju heli, protsesside ja sündmuspõhise disaini kohta.
Väike nipp: kui kasutate Raspberry Pi 5 ja plaanite kasutada raskemaid lokaalseid mudeleid, aitab püsiva koormuse korral klambriga jahuti. (Kahtluse korral valige Pi 5 jaoks mõeldud ametlik aktiivjahuti.) [1]
Vajalikud osad ja tööriistad 🧰
-
Raspberry Pi : Pearuumi tagamiseks on soovitatav Pi 4 või Pi 5.
-
microSD-kaart : soovitatavalt 32 GB+.
-
USB-mikrofon : lihtne USB-konverentsimikrofon on suurepärane.
-
Kõlar : USB või 3,5 mm kõlar või I2S võimendi HAT.
-
Võrk : Ethernet või WiFi.
-
Lisavarustus: korpus, aktiivjahuti Pi 5 jaoks, nupp rääkimiseks, LED-rõngas. [1]
OS ja baastaseme seadistus
-
Flashi Raspberry Pi operatsioonisüsteem Raspberry Pi Imageriga. See on lihtne viis saada käivitatav microSD-kaart soovitud eelseadetega. [1]
-
Käivitage, looge ühendus võrguga ja seejärel värskendage pakette:
sudo apt update && sudo apt upgrade -y
-
Heli põhitõed
raspi-configkaudu määrata vaikeväljundi, helitugevuse ja seadmed . USB- ja HDMI-heli toetatakse kõikides mudelites; Bluetooth-väljund on saadaval Bluetoothiga mudelitel. [1] -
Seadmete kontrollimine:
arecord -l aplay -l
Seejärel testi salvestamist ja taasesitust. Kui helitasemed tunduvad imelikud, kontrolli enne mikrofoni süüdistamist miksereid ja vaikeseadeid.

Arhitektuur lühidalt 🗺️
Mõistlik isetehtud tehisintellekti assistent Raspberry Pi vooluga näeb välja selline:
Äratussõna → reaalajas heli salvestamine → ASR-transkriptsioon → kavatsuse käsitlemine või LLM → vastusetekst → TTS → heli taasesitus → valikulised toimingud MQTT või HTTP kaudu.
-
Äratussõna : Porcupine on väike, täpne ja töötab lokaalselt märksõnapõhise tundlikkuse juhtimisega. [2]
-
ASR : Whisper on mitmekeelne ja üldotstarbeline ASR-mudel, mida on treenitud ~680 000 tunni jooksul; see on vastupidav aktsentidele/taustamürale. Seadmesiseseks kasutamiseks
whisper.cpplihtsat C/C++ järeldusteed. [3][4] -
Aju : Teie valik – pilvepõhine LLM API kaudu, reeglimootor või lokaalne järeldus, olenevalt võimsusest.
-
TTS : Piper genereerib lokaalselt loomulikku kõnet, mis on piisavalt kiire, et tagasihoidlikul riistvaral kiireid vastuseid anda. [5]
Kiire võrdlustabel 🔎
| Tööriist | Parima jaoks | Hinnaline | Miks see toimib |
|---|---|---|---|
| Sealiha äratussõna | Alati kuulav päästik | Tasuta aste + | Madal protsessori koormus, täpne ja lihtne sidumisvõime [2] |
| Sosin.cpp | Kohalik ASR Pi-l | Avatud lähtekoodiga | Hea täpsus, protsessorisõbralik [4] |
| Kiirem sosin | Kiirem ASR protsessoril/graafikaprotsessoril | Avatud lähtekoodiga | CTranslate2 optimeerimised |
| Piperi TTS | Kohalik kõneväljund | Avatud lähtekoodiga | Kiired hääled, palju keeli [5] |
| Pilve LLM API | Rikkalik arutluskäik | Kasutuspõhine | Vähendab rasket arvutuskoormust |
| Node-RED | Toimingute orkestreerimine | Avatud lähtekoodiga | Visuaalsed vood, MQTT-sõbralikud |
Samm-sammult juhend: teie esimene häälesilmus 🧩
Äratussõna jaoks kasutame Porcupine'i, transkriptsiooniks Whisperit, vastuse jaoks kerget "aju" funktsiooni (asenda oma valitud õigusteaduse keelega) ja kõne jaoks Piperit. Hoidke see minimaalsena ja seejärel itereerige.
1) Sõltuvuste installimine
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install heliseade numpy
-
Porcupine: haara oma keele SDK/sidumised ja järgi kiirjuhendit (pääsuklahv + märksõnade loend + helikaadrid →
.process). [2] -
Whisper (protsessorisõbralik): build whisper.cpp :
giti kloon 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 sinu.wav -otxt
Eelnev peegeldab projekti kiiret algust. [4]
Eelistad Pythonit?
faster-whisper(CTranslate2) on tagasihoidlike protsessorite puhul sageli kiirem kui tavaline Python.
2) Piper TTS-i seadistamine
git clone https://github.com/rhasspy/piper cd piper make # Laadi alla endale meelepärane häälemudel, nt et_US-amy echo "Tere." | ./piper --model voices/et/et_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper on loodud seadmesiseseks tekstisisestussüsteemiks (TTS) mitme hääle-/keelevalikuga. [5]
3) Minimaalne abitsükli funktsioon Pythonis
Tahtlikult kompaktne: ootab äratusfraasi (tõlki), salvestab, transkribeerib whisper.cpp-ga , genereerib vastuse (kohatäide) ja seejärel räägib Piperi kaudu. Vaheta kohatäide oma lemmik LLM-i või reegliloogikaga.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hei arvuti" # vaheta Porcupine'i vastu tootmises [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(sekundid * SAMPLE_RATE), samplerate=SAMPLE_RATE, kanalid=KANALID, dtype='int16') sd.wait() with wave.open(path, 'wb') as w: w.setnchannels(KANALID); 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 "ilm" in prompt.lower(): return "Ma ei näe pilvi, aga see võib olla hea. Võta igaks juhuks jope kaasa." return "Sa ütlesid: " + 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 on valmis. Tippige testimiseks äratusfraas.") 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("Kasutaja:", text); print("Assistent:", reply) speak(reply) else: print("Tsükli testimiseks sisesta äratusfraas.")
Tõelise äratussõna tuvastamiseks integreerige Porcupine'i voogedastusdetektor (madal protsessori koormus, märksõnapõhine tundlikkus). [2]
Heli häälestamine, mis on tegelikult oluline 🎚️
Mõned pisikesed parandused muudavad teie assistendi 10 korda targemaks:
-
Mikrofonide kaugus : 30–60 cm on paljude USB-mikrofonide jaoks ideaalne kaugus.
-
Tasemed : vältige sisendsignaali kärpimist ja hoidke taasesitus mõistlik; parandage marsruutimine enne koodi varikate tagaajamist. Raspberry Pi OS-is saate väljundseadet ja tasemeid hallata süsteemitööriistade või
raspi-config. [1] -
Ruumiakustika : kõvad seinad tekitavad kaja; pehme matt mikrofoni all aitab.
-
Äratussõna lävi : liiga tundlik → kummituslikud päästikud; liiga range → karjud plastiku peale. Porcupine võimaldab tundlikkust märksõnade kaupa reguleerida. [2]
-
Termosed : Pi 5 pikad transkriptsioonid kasutavad püsiva jõudluse tagamiseks ametlikku aktiivjahutit. [1]
Mänguasjast kodumasinaks: teenused, automaatne käivitamine, tervisekontrollid 🧯
Inimesed unustavad skripte käivitada. Arvutid unustavad viisakad olla. Muutke oma tsükkel hallatavaks teenuseks:
-
Loo systemd üksus:
[Ühik] Kirjeldus=Isetehtud häälassistent Pärast=network.target sound.target [Teenus] Kasutaja=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
-
Luba see:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Palgi sabad:
journalctl -u assistant -f
Nüüd käivitub see käivitamisel, taaskäivitub krahhi korral ja käitub üldiselt nagu seade. Natuke igav, aga palju parem.
Oskuste süsteem: muuda see kodus päriselt kasulikuks 🏠✨
Kui sisse- ja väljahäälestamine on paigas, lisage toimingud:
-
Intent router : lihtsad märksõnade marsruudid tavaliste ülesannete jaoks.
-
Nutikas kodu : avaldage sündmused MQTT-s või helistage Home Assistant'i HTTP-lõpp-punktidesse.
-
Pluginad : kiired Pythoni funktsioonid nagu
set_timer,what_is_the_time,play_radio,run_scene.
Isegi kui tsüklis on pilvepõhine LLM, suunake kiiruse ja töökindluse tagamiseks esmalt ilmsed kohalikud käsud.
Ainult kohalik vs pilveabi: kompromissid, mida tunned 🌓
Ainult kohalikul tasandil.
Plussid: privaatne, võrguühenduseta, prognoositavad kulud.
Miinused: raskemad mudelid võivad väikestel platvormidel aeglased olla. Whisperi mitmekeelne treenimine aitab vastupidavust säilitada, kui hoiate seda seadmes või lähedalasuvas serveris. [3]
Pilveteenuse abi
plussid: võimas arutluskäik, suuremad kontekstiaknad.
Miinused: andmed lahkuvad seadmest, võrgusõltuvus, muutuvad kulud.
Hübriid võidab sageli: äratussõna + ASR local → kutsub API arutluskäiguks välja → TTS local. [2][3][5]
Veaotsing: Kummalised Gremlinid ja kiired lahendused 👾
-
Äratussõna valed päästikud : vähendage tundlikkust või proovige teist mikrofoni. [2]
-
ASR-lag : kasutage väiksemat Whisperi mudelit või looge
whisper.cppfail väljalaskemärkidega (-j --config Release). [4] -
Katkendlik TTS : genereerige eelnevalt levinud fraasid; kinnitage oma heliseade ja diskreetimissagedused.
-
Mikrofoni ei tuvastatud : kontrollige
käsku arecord -lja miksereid. -
Termiline piiramine : püsiva jõudluse tagamiseks kasutage Pi 5 ametlikku aktiivjahutit. [1]
Turvalisuse ja privaatsuse märkmed, mida peaksite tegelikult lugema 🔒
-
Hoidke oma Pi APT-ga ajakohasena.
-
Kui kasutate pilve API-t, logige saadetud andmed ja kaaluge esmalt isiklike andmete lokaalset redigeerimist.
-
Käivita teenuseid minimaalsete õigustega; väldi
sudokasutamist ExecStartis, kui see pole vajalik. -
Pakkuge külalistele ainult kohalikku režiimi
Variantide loomine: sega ja sobita nagu võileib 🥪
-
Ülikohalik : Porcupine + whisper.cpp + Piper + lihtsad reeglid. Privaatne ja vastupidav. [2][4][5]
-
Kiire pilveabi : Porcupine + (väiksem kohalik Whisper või pilve-ASR) + kohalik TTS + pilve-LLM.
-
Koduautomaatika keskus : lisage rutiinide, stseenide ja andurite jaoks Node-RED või Home Assistant vooge.
Näidisoskus: Tuled põlevad MQTT kaudu 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "kodu/elutuba/valgus/komplekt" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "SEES" if state.lower().startswith("sees") else "VÄLJAS" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # if "lülita tuled sisse" in text: set_light("sees")
Lisa häälrida nagu: „Lülita elutoa lamp põlema” ja tunned end võlurina.
Miks see virn praktikas töötab 🧪
-
Porcupine on väikestel tahvlitel äratussõnade tuvastamisel tõhus ja täpne, mis teeb pideva kuulamise teostatavaks. [2]
-
Whisperi ulatuslik ja mitmekeelne koolitus muudab selle vastupidavaks erinevatele keskkondadele ja aktsentidele. [3]
-
whisper.cpphoiab selle võimsuse kasutatavana ainult protsessoriga seadmetel, näiteks Pi-l. [4] -
Piper hoiab vastused kiired ilma heli pilvepõhisesse TTS-i edastamata. [5]
Liiga pikk, ei lugenud läbi
Ehita Raspberry Pi abil modulaarne ja privaatne tehisintellekti assistent, kombineerides Porcupine'i äratussõna jaoks, Whisperi (via whisper.cpp ) ASR-i jaoks, oma valitud aju vastuste jaoks ja Piperi kohaliku TTS-i jaoks. Paki see süsteemse teenusena, häälesta heli ja ühenda MQTT või HTTP toimingutega. See on odavam, kui arvad, ja kummalisel kombel on sellega mõnus elada. [1][2][3][4][5]
Viited
-
Raspberry Pi tarkvara ja jahutus – Raspberry Pi Imager (allalaadimine ja kasutamine) ja Pi 5 Active Cooler tooteinfo
-
Raspberry Pi Imager: loe lähemalt
-
Aktiivjahuti (Pi 5): loe lähemalt
-
-
Porcupine Wake Word – SDK ja kiirjuhend (märksõnad, tundlikkus, lokaalne järeldamine)
-
Whisper (ASR-mudel) – mitmekeelne, töökindel ASR, mida on treenitud ~680 000 tundi
-
Radford jt, Tugev kõnetuvastus laiaulatusliku nõrga järelevalve abil (Whisper): loe lähemalt
-
-
whisper.cpp – protsessorisõbralik Whisperi järeldamine CLI ja ehitusetappidega
-
Piper TTS – kiire, lokaalne neuraal-TTS mitme hääle/keelega