Kuinka rakentaa tee-se-itse-tekoälyavustaja Raspberry Pillä

Kuinka rakentaa tee-se-itse-tekoälyavustaja Raspberry Pillä

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

  1. Flash-asenna Raspberry Pi -käyttöjärjestelmä Raspberry Pi Imagerilla. Se on helppo tapa hankkia käynnistettävä microSD-kortti haluamillasi esiasetuksilla. [1]

  2. Käynnistä, yhdistä verkkoon ja päivitä paketit:

sudo apt-päivitys && sudo apt-päivitys -y
  1. Ää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]

  2. Tarkista laitteet:

arecord -l aplay -l

Testaa sitten tallennusta ja toistoa. Jos tasot tuntuvat oudoilta, tarkista mikserit ja oletusasetukset ennen kuin syytät mikrofonia.

 

Tekoälyinen vadelmapi

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.cpp tarjoaa 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:

  1. 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
  1. Ota se käyttöön:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
  1. 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 -l ja 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.cpp pitää 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

  1. Raspberry Pi -ohjelmisto ja jäähdytys – Raspberry Pi Imager (lataa ja käytä) ja Pi 5 Active Cooler -tuotetiedot

  2. Porcupine Wake Word – SDK ja pika-aloitus (avainsanat, herkkyys, paikallinen päättely)

  3. Whisper (ASR-malli) – Monikielinen, luotettava ASR-koulutus noin 680 000 tunnilla

    • Radford ym., Vankka puheentunnistus laaja-alaisen heikon valvonnan avulla (Whisper): lue lisää

  4. whisper.cpp – CPU-ystävällinen Whisper-päättely komentoriviltä ja rakennusvaiheet

  5. Piper TTS – Nopea, paikallinen neuroverkkopohjainen TTS useilla äänillä/kielillä

Löydä uusimmat tekoälytuotteet virallisesta tekoälyavustajakaupasta

Tietoa meistä


Takaisin blogiin