Haluatko pienen ääniavustajan, joka oikeasti seuraa käskyjäsi, toimii omalla laitteistollasi eikä tilaa vahingossa kahtatoista ananasta, koska se kuuli sinut väärin? Tee-se-itse-tekoälyavustaja Raspberry Pillä on yllättävän saavutettavissa oleva, hauska ja joustava. Kytket vain herätyssanan, puheentunnistuksen (ASR = automaattinen puheentunnistus), aivot luonnollista kieltä varten (säännöt tai LLM) ja tekstistä puheeksi -ominaisuuden (TTS). Lisää muutama skripti, yksi tai kaksi palvelua ja huolellisia äänentoiston säätöjä, niin saat taskukokoisen älykaiuttimen, joka tottelee sääntöjäsi.
Viedään sinut nollasta Pi:n kanssa keskustelemiseen ilman tavanomaista hiusten vetämistä. Käymme läpi osat, asennuksen, koodin, vertailut, kummatkin asiat... koko burriton. 🌯
Artikkelit, joita saatat haluta lukea tämän jälkeen:
🔗 Kuinka tutkia tekoälyä tehokkaasti
Luo opiskelun etenemissuunnitelma, harjoittele projekteja ja seuraa edistymistä.
🔗 Kuinka perustaa tekoälyyritys
Validoi ongelma, rakenna MVP, kokoa tiimi ja hanki ensimmäiset asiakkaat.
🔗 Kuinka hyödyntää tekoälyä tuottavampana
Automatisoi rutiinitehtäviä, virtaviivaista työnkulkuja ja paranna luovaa tuotostasi.
🔗 Kuinka ottaa tekoäly käyttöön yrityksessäsi
Tunnista vaikuttavat prosessit, toteuta pilottihankkeita, mittaa sijoitetun pääoman tuottoa ja skaalaa.
Mikä tekee Raspberry Pi:stä hyvän tee-se-itse-tekoälyassistentin ✅
-
Oletusarvoisesti yksityinen – pidä ääni paikallisesti aina kun mahdollista. Sinä päätät, mitä laitteelta lähtee.
-
Modulaarinen – vaihda komponentteja, kuten Lego: herätyssanamoottori, ASR, LLM, TTS.
-
Edullinen – enimmäkseen avoimen lähdekoodin, perusmikrofonit, kaiuttimet ja Pi.
-
Hakkeroitava – haluatko kodin automaatiota, kojelaudat, rutiinit, mukautettuja taitoja? Helppoa.
-
Luotettava – palvelun hallinnoima, käynnistyy ja alkaa kuunnella automaattisesti.
-
Hauskaa – opit paljon äänestä, prosesseista ja tapahtumalähtöisestä suunnittelusta.
Pieni vinkki: Jos käytät Raspberry Pi 5:tä ja aiot käyttää raskaampia paikallisia malleja, klipsijäähdytin auttaa jatkuvassa kuormituksessa. (Epävarmoissa tapauksissa valitse Pi 5:lle suunniteltu virallinen aktiivijäähdytin.) [1]
Tarvitsemasi osat ja työkalut 🧰
-
Raspberry Pi : Pi 4 tai Pi 5 suositellaan tilantarpeen vuoksi.
-
microSD-kortti : Suositellaan vähintään 32 Gt:n kokoista microSD-korttia.
-
USB-mikrofoni : yksinkertainen USB-konferenssimikrofoni on loistava.
-
Kaiutin : USB- tai 3,5 mm:n kaiutin tai I2S-vahvistin HAT.
-
Verkko : Ethernet tai Wi-Fi.
-
Lisävarusteet: kotelo, aktiivijäähdytin Pi 5:lle, painike puhelua varten, LED-rengas. [1]
Käyttöjärjestelmä ja lähtöasetukset
-
Flash-asenna Raspberry Pi -käyttöjärjestelmä Raspberry Pi Imagerilla. Se on helppo tapa hankkia käynnistettävä microSD-kortti haluamillasi esiasetuksilla. [1]
-
Käynnistä, yhdistä verkkoon ja päivitä paketit:
sudo apt-päivitys && sudo apt-päivitys -y
-
Äänen perusteet : Raspberry Pi -käyttöjärjestelmässä voit asettaa oletuslähdön, -tasot ja -laitteet työpöydän käyttöliittymän tai
raspi-config-komennon. USB- ja HDMI-ääntä tuetaan kaikissa malleissa; Bluetooth-lähtö on saatavilla Bluetoothia sisältävissä malleissa. [1] -
Tarkista laitteet:
arecord -l aplay -l
Testaa sitten tallennusta ja toistoa. Jos tasot tuntuvat oudoilta, tarkista mikserit ja oletusasetukset ennen kuin syytät mikrofonia.

Arkkitehtuuri yhdellä silmäyksellä 🗺️
Järkevä tee-se-itse-tekoälyavustaja Raspberry Pi -työnkululla näyttää tältä:
Herätyssana → live-äänen tallennus → ASR-transkriptio → aikomuksen käsittely tai LLM → vastausteksti → TTS → äänen toisto → valinnaiset toiminnot MQTT:n tai HTTP:n kautta.
-
Herätyssana : Porcupine on pieni, tarkka ja toimii paikallisesti avainsanakohtaisella herkkyyshajoituksella. [2]
-
ASR : Whisper on monikielinen, yleiskäyttöinen ASR-malli, jota on koulutettu noin 680 000 tunnilla; se kestää aksentteja ja taustamelua. Laitekäyttöön
whisper.cpptarjoaa sujuvan C/C++-päättelypolun. [3][4] -
Aivot : Valintasi – pilvipohjainen LLM API:n kautta, sääntömoottori tai paikallinen päättely tehosta riippuen.
-
TTS : Piper tuottaa luonnollista puhetta paikallisesti, riittävän nopeasti nopeisiin vastauksiin vaatimattomalla laitteistolla. [5]
Nopea vertailutaulukko 🔎
| Työkalu | Paras | Hinta-laatusuhteeltaan | Miksi se toimii |
|---|---|---|---|
| Piikkisian herätyssana | Aina kuunteleva liipaisin | Ilmainen taso + | Matala suorittimen käyttö, tarkka ja helppo sidonta [2] |
| Whisper.cpp | Paikallinen ASR Pi:llä | Avoin lähdekoodi | Hyvä tarkkuus, prosessoriystävällinen [4] |
| Faster-Whisper | Nopeampi ASR suorittimella/näytönohjaimella | Avoin lähdekoodi | CTranslate2-optimoinnit |
| Piper TTS | Paikallinen puheen tuotos | Avoin lähdekoodi | Nopeita ääniä, monia kieliä [5] |
| Pilvipohjainen LLM-rajapinta | Rikas päättely | Käyttöön perustuva | Keventää raskasta laskentatehoa |
| Solmu-RED | Toimintojen orkestrointi | Avoin lähdekoodi | Visuaaliset virtaukset, MQTT-yhteensopivat |
Vaiheittainen rakentaminen: Ensimmäinen äänisilmukkasi 🧩
Käytämme Porcupinea herätyssanaan, Whisperiä litterointiin, kevyttä "aivofunktiota" vastaukseen (korvaa valitsemallasi oikeustieteen maisterilla) ja Piperia puheeseen. Pidä se mahdollisimman pienenä ja iteroi sitten.
1) Asenna riippuvuudet
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install äänilaite numpy
-
Porcupine: hanki kielesi SDK/sidokset ja seuraa pika-aloitusta (käyttöavain + avainsanaluettelo + äänikehykset →
.process). [2] -
Whisper (CPU-ystävällinen): build whisper.cpp :
git-klooni 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
Yllä oleva heijastaa projektin nopeaa alkua. [4]
Pidätkö enemmän Pythonia?
faster-whisper(CTranslate2) on usein nopeampi kuin perus-Python vaatimattomilla prosessoreilla.
2) Piper TTS:n määrittäminen
git clone https://github.com/rhasspy/piper cd piper make # Lataa mieleisesi äänimalli, esim. fi_US-amy echo "Hei." | ./piper --model voices/fi/fi_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper on suunniteltu laitteen sisäistä tekstinsyöttämistä varten, ja siinä on useita ääni-/kielivaihtoehtoja. [5]
3) Minimalistinen avustajasilmukka Pythonissa
Tarkoituksellisesti kompakti: odottaa herätyslausetta (tynkää), tallentaa, litteroi whisper.cpp: , luo vastauksen (paikkamerkki) ja puhuu sitten Piperin kautta. Vaihda paikkamerkki suosikki LLM:ään tai sääntölogiikkaan.
import os, aliprosessi, wave import sounddevice as sd WAKE_WORD = "hei tietokone" # vaihdetaan Porcupineen tuotannossa [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(sekuntia * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') sd.wait() with wave.open(path, 'wb') as 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 "sää" in prompt.lower(): return "En näe pilviä, mutta se saattaa olla ihan ok. Ota takki mukaan varmuuden vuoksi." return "Sanoit: " + 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("Assistentti valmis. Kirjoita testattava herätyslauseke.") 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("Käyttäjä:", text); print("Assistentti:", reply) speak(reply) else: print("Kirjoita herätyslauseke testataksesi silmukkaa.")
Todellisen herätyssanan tunnistuksen saavuttamiseksi integroi Porcupinen suoratoiston ilmaisin (alhainen suorittimen teho, avainsanakohtainen herkkyys). [2]
Äänen viritys, jolla on oikeasti väliä 🎚️
Muutamalla pienellä korjauksella avustajasi tuntuu 10 kertaa älykkäämmältä:
-
Mikrofonien etäisyys : 30–60 cm on ihanteellinen etäisyys monille USB-mikrofoneille.
-
Tasot : vältä syötteen leikkautumista ja pidä toisto järkevänä; korjaa reititys ennen koodihaamujen jahtaamista. Raspberry Pi -käyttöjärjestelmässä voit hallita lähtölaitetta ja tasoja järjestelmätyökaluilla tai
raspi-config-komennolla. [1] -
Huoneakustiikka : kovat seinät aiheuttavat kaikuja; pehmeä matto mikrofonin alla auttaa.
-
Herätyssanan kynnysarvo : liian herkkä → haamulaukaisimet; liian tiukka → huudat muoville. Porcupine antaa sinun säätää herkkyyttä avainsanakohtaisesti. [2]
-
Lämpö : Pi 5:n pitkät transkriptiot hyötyvät virallisesta aktiivijäähdyttimestä jatkuvan suorituskyvyn takaamiseksi. [1]
Lelusta kodinkoneeksi: Palvelut, automaattinen käynnistys, kuntotarkastukset 🧯
Ihmiset unohtavat suorittaa skriptejä. Tietokoneet unohtavat olla kilttejä. Tee silmukastasi hallittu palvelu:
-
Luo systemd-yksikkö:
[Yksikkö] Kuvaus=Tee-se-itse-ääniavustaja Jälkeen=network.target ääni.target [Palvelu] Käyttäjä=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Asenna] WantedBy=multi-user.target
-
Ota se käyttöön:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Lokin pyrstöt:
journalctl -u assistant -f
Nyt se käynnistyy käynnistyksen yhteydessä, käynnistyy uudelleen kaatuessaan ja käyttäytyy yleisesti ottaen kuin laite. Hieman tylsä, paljon parempi.
Taitojärjestelmä: Tee siitä oikeasti hyödyllinen kotona 🏠✨
Kun ääni sisään ja ulos ovat valmiita, lisää toiminnot:
-
Intent-reititin : yksinkertaisia avainsanareittejä yleisiin tehtäviin.
-
Älykoti : julkaise tapahtumia MQTT:hen tai soita Home Assistantin HTTP-päätepisteisiin.
-
Lisäosat : nopeita Python-funktioita, kuten
set_timer,what_is_the_time,play_radio,run_scene.
Vaikka silmukassa olisi pilvipohjainen LLM, reititä ilmeisimmät paikalliset komennot ensin nopeuden ja luotettavuuden takaamiseksi.
Vain paikallinen vs. pilviavustin: Kompromissit, jotka tulet tuntemaan 🌓
Vain paikallisesti Hyvät
puolet: yksityinen, offline-käyttö, ennustettavat kustannukset.
Huonot puolet: raskaammat mallit voivat olla hitaita pienillä levyillä. Whisperin monikielinen koulutus auttaa parantamaan kestävyyttä, jos pidät sitä laitteella tai lähellä olevalla palvelimella. [3]
Pilvipalvelun
hyvät puolet: tehokas päättely, suuremmat konteksti-ikkunat.
Haitat: data poistuu laitteelta, verkkoriippuvuus, muuttuvat kustannukset.
Hybridiratkaisu voittaa usein: herätyssana + ASR-paikallinen → kutsu API:a päättelyä varten → TTS-paikallinen. [2][3][5]
Vianmääritys: Oudot gremliinit ja pikakorjaukset 👾
-
Herätyssanan aiheuttamat väärät laukaisevat tekijät : pienennä herkkyyttä tai kokeile eri mikrofonia. [2]
-
ASR-viive : käytä pienempää Whisper-mallia tai luo
whisper.cpp-tiedosto julkaisulipuilla (-j --config Release). [4] -
Nykivä TTS : luo yleisiä lauseita etukäteen; vahvista äänilaitteesi ja näytteenottotaajuudet.
-
Ei mikrofonia havaittu : tarkista
arecord -lja mikserit. -
Lämpökuristus : käytä Pi 5:n virallista aktiivijäähdytintä jatkuvan suorituskyvyn saavuttamiseksi. [1]
Turvallisuus- ja tietosuojahuomautukset, jotka sinun kannattaa lukea 🔒
-
Pidä Pi-tietosi ajan tasalla APT:n avulla.
-
Jos käytät pilvirajapintaa API:lla, kirjaa lähettämäsi tiedot ja harkitse ensin henkilökohtaisten tietojen poistamista paikallisesti.
-
Suorita palveluita pienimmillä oikeuksilla; vältä
sudo-komentoa ExecStartissa, ellei sitä tarvita. -
Tarjoa vieraille vain paikallisille tarkoitettu tila
Rakenna variantteja: Sekoita ja yhdistele kuin voileipä 🥪
-
Erittäin paikallinen : Porcupine + whisper.cpp + Piper + yksinkertaiset säännöt. Yksityinen ja tukeva. [2][4][5]
-
Nopea pilviavustaja : Porcupine + (pienempi paikallinen Whisper tai pilvi-ASR) + paikallinen TTS + pilvi-LLM.
-
Kodin automaatiokeskus : Lisää Node-RED- tai Home Assistant -työnkulut rutiineille, tilanteille ja antureille.
Esimerkkitaito: Valot päälle MQTT:n kautta 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "koti/olohuone/valo/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 "sytytä valot" in text: set_light("on")
Lisää lause, kuten "sytytä olohuoneen lamppu", ja tunnet olosi velhoksi.
Miksi tämä pino toimii käytännössä 🧪
-
Porcupine on tehokas ja tarkka herätyssanan tunnistuksessa pienillä levyillä, mikä tekee jatkuvasta kuuntelusta mahdollisen. [2]
-
Whisperin laaja ja monikielinen koulutus tekee siitä kestävän vaihtelevissa ympäristöissä ja aksenteissa. [3]
-
whisper.cpppitää tuon tehon käytettävissä vain suoritinta käyttävillä laitteilla, kuten Pi:llä. [4] -
Piper pitää vastaukset näppärinä ilman, että ääntä lähetetään pilvipohjaiseen tekstinsyötteeseen. [5]
Liian pitkä, en lukenut sitä
Rakenna modulaarinen, yksityinen tee-se-itse-tekoälyassistentti Raspberry Pillä yhdistämällä Porcupine herätysviestiä varten, Whisper ( whisper.cpp: ) ASR:ää varten, valitsemasi aivot vastauksia varten ja Piper paikallista tekstinsyötteen toistamista varten. Kääri se systemd-palveluksi, viritä ääni ja kytke MQTT- tai HTTP-toimintoihin. Se on halvempaa kuin luuletkaan, ja omituisen miellyttävää käyttää. [1][2][3][4][5]
Viitteet
-
Raspberry Pi -ohjelmisto ja jäähdytys – Raspberry Pi Imager (lataa ja käytä) ja Pi 5 Active Cooler -tuotetiedot
-
Porcupine Wake Word – SDK ja pika-aloitus (avainsanat, herkkyys, paikallinen päättely)
-
Whisper (ASR-malli) – Monikielinen, luotettava ASR-koulutus noin 680 000 tunnilla
-
Radford ym., Vankka puheentunnistus laaja-alaisen heikon valvonnan avulla (Whisper): lue lisää
-
-
whisper.cpp – CPU-ystävällinen Whisper-päättely komentoriviltä ja rakennusvaiheet
-
Piper TTS – Nopea, paikallinen neuroverkkopohjainen TTS useilla äänillä/kielillä