Ako si s Raspberry Pi vytvoriť svojpomocného asistenta s umelou inteligenciou

Ako si s Raspberry Pi vytvoriť svojpomocného asistenta s umelou inteligenciou

Chcete malého hlasového asistenta, ktorý skutočne nasleduje vaše pokyny, beží na vašom vlastnom hardvéri a omylom si neobjedná dvanásť ananásov, pretože vás zle počul? Vlastnoručne vyrobený hlasový asistent s umelou inteligenciou a Raspberry Pi je prekvapivo dosiahnuteľný, zábavný a flexibilný. Zapojíte budíce slovo, rozpoznávanie reči (ASR = automatické rozpoznávanie reči), mozog pre prirodzený jazyk (pravidlá alebo LLM) a prevod textu na reč (TTS). Pridajte niekoľko skriptov, jednu alebo dve služby a niekoľko starostlivých úprav zvuku a máte vreckový inteligentný reproduktor, ktorý dodržiava vaše pravidlá.

Poďme vás dostať od nuly k tomu, ako sa rozprávať s vaším Pi, bez obvyklého ťahania za vlasy. Preberieme si súčiastky, nastavenie, kód, porovnania, chyby... celé burrito. 🌯

Články, ktoré by ste si mohli prečítať po tomto:

🔗 Ako efektívne študovať umelú inteligenciu
Vytvorte si študijný plán, precvičujte si projekty a sledujte svoj pokrok.

🔗 Ako založiť spoločnosť zameranú na umelú inteligenciu
Overiť problém, vytvoriť MVP, zostaviť tím, zabezpečiť prvých zákazníkov.

🔗 Ako využiť umelú inteligenciu na zvýšenie produktivity
Automatizujte rutinné úlohy, zefektívnite pracovné postupy a zvýšte kreatívny výstup.

🔗 Ako začleniť umelú inteligenciu do vášho podnikania
Identifikujte procesy s vysokým dopadom, implementujte pilotné projekty, merajte návratnosť investícií, škálujte.


Čo robí dobrého DIY AI asistenta s Raspberry Pi ✅

  • Predvolene súkromné ​​– zvuk sa uchováva lokálne, pokiaľ je to možné. Vy rozhodujete o tom, čo zariadenie opustí.

  • Modulárne – vymieňajte si komponenty ako Lego: engine pre prebudenie slov, ASR, LLM, TTS.

  • Cenovo dostupné – väčšinou open source, bežne dostupné mikrofóny, reproduktory a Raspberry Pi.

  • Hackovateľné – chcete domácu automatizáciu, dashboardy, rutiny, vlastné zručnosti? Jednoduché.

  • Spoľahlivý – spravovaný službou, automaticky sa spúšťa a začína počúvať.

  • Zábava – dozviete sa veľa o zvuku, procesoch a dizajne riadenom udalosťami.

Malý tip: Ak používate Raspberry Pi 5 a plánujete používať ťažšie lokálne modely, pri dlhodobom zaťažení vám pomôže pripínací chladič. (V prípade pochybností si vyberte oficiálny aktívny chladič určený pre Pi 5.) [1]


Súčiastky a nástroje, ktoré budete potrebovať 🧰

  • Raspberry Pi : Odporúča sa Pi 4 alebo Pi 5 kvôli dostatočnej priestorovej výške.

  • Pamäťová karta microSD : odporúča sa 32 GB+.

  • USB mikrofón : jednoduchý USB konferenčný mikrofón je skvelý.

  • Reproduktor : USB alebo 3,5 mm reproduktor, alebo zosilňovač I2S HAT.

  • Sieť : Ethernet alebo Wi-Fi.

  • Voliteľné vychytávky: puzdro, aktívny chladič pre Pi 5, tlačidlo pre funkciu push-to-talk, LED krúžok. [1]

OS a základné nastavenie

  1. Flashujte operačný systém Raspberry Pi pomocou Raspberry Pi Imager. Je to jednoduchý spôsob, ako získať bootovaciu microSD kartu s požadovanými predvoľbami. [1]

  2. Spustite systém, pripojte sa k sieti a potom aktualizujte balíky:

aktualizácia sudo apt && aktualizácia sudo apt -y
  1. Základy zvuku : V systéme Raspberry Pi OS môžete nastaviť predvolený výstup, úrovne a zariadenia prostredníctvom používateľského rozhrania na počítači alebo súboru raspi-config . Zvuk cez USB a HDMI je podporovaný vo všetkých modeloch; výstup Bluetooth je k dispozícii na modeloch s rozhraním Bluetooth. [1]

  2. Overenie zariadení:

arecord -l aplay -l

Potom otestujte nahrávanie a prehrávanie. Ak sa úrovne zdajú byť zvláštne, skontrolujte mixéry a predvolené nastavenia predtým, ako z toho obviníte mikrofón.

 

Raspberry Pi s umelou inteligenciou

Architektúra na prvý pohľad 🗺️

Rozumný DIY AI asistent s Raspberry Pi vyzerá takto:

Budiace slovo → živý záznam zvuku → transkripcia ASR → spracovanie zámeru alebo LLM → text odpovede → TTS → prehrávanie zvuku → voliteľné akcie cez MQTT alebo HTTP.

  • Budiace slovo : Porcupine je malý, presný a beží lokálne s ovládaním citlivosti pre každé kľúčové slovo. [2]

  • ASR : Whisper je viacjazyčný model ASR na všeobecné použitie, ktorý bol natrénovaný približne na 680 000 hodinách; je odolný voči akcentom/šumu v pozadí. Pre použitie na zariadení súbor shippet.cpp jednoduchú inferenčnú cestu pre C/C++. [3][4]

  • Brain : Váš výber – cloudový LLM cez API, systém pravidiel alebo lokálna inferencia v závislosti od výkonu.

  • TTS : Piper generuje prirodzenú reč lokálne, dostatočne rýchlo pre rýchle odpovede na skromnom hardvéri. [5]


Rýchla porovnávacia tabuľka 🔎

Nástroj Najlepšie pre Približná cena Prečo to funguje
Slovo prebudenia dikobraza Spúšťač neustáleho počúvania Bezplatná úroveň + Nízka náročnosť CPU, presnosť, jednoduché viazanie [2]
Whisper.cpp Lokálne ASR na Pi Otvorený zdroj Dobrá presnosť, nenáročné na CPU [4]
Rýchlejšie šepotanie Rýchlejšie ASR na CPU/GPU Otvorený zdroj Optimalizácie CTranslate2
Piper TTS Lokálny hlasový výstup Otvorený zdroj Rýchle hlasy, veľa jazykov [5]
Cloud LLM API Bohaté uvažovanie Na základe používania Zníži záťaž náročných výpočtov
Node-RED Orchestrovanie akcií Otvorený zdroj Vizuálne toky, kompatibilné s MQTT

Postupná tvorba: Vaša prvá hlasová slučka 🧩

Na prebudenie slova použijeme Porcupine, na prepis Whisper, na odpoveď ľahkú „mozgovú“ funkciu (nahraďte ju vami vybraným LLM) a na reč Piper. Nech je to minimalistické a potom to opakujte.

1) Inštalácia závislostí

sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 nainštalovať zvukové zariadenie numpy
  • Porcupine: stiahnite si SDK/viazania pre váš jazyk a postupujte podľa pokynov pre rýchly štart (prístupový kľúč + zoznam kľúčových slov + zvukové snímky → .process ). [2]

  • Whisper (priateľský k CPU): zostaviť shittle.cpp :

git clone 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

Vyššie uvedené odráža rýchly štart projektu. [4]

Uprednostňujete Python? faster-whisper (CTranslate2) je na skromnejších procesoroch často svižnejší ako tradičný Python.

2) Nastavte si Piper TTS

git clone https://github.com/rhasspy/piper cd piper make # Stiahnite si hlasový model, ktorý sa vám páči, napr. en_US-amy echo "Ahoj." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav

Piper je navrhnutý pre TTS v zariadení s viacerými možnosťami hlasu/jazyka. [5]

3) Minimálna asistenčná slučka v Pythone

Zámerne kompaktné: čaká na frázu prebudenia (stub), zaznamenáva, prepisuje pomocou whispett.cpp , generuje odpoveď (zástupný symbol) a potom hovorí cez Piper. Vymeňte zástupný symbol za váš obľúbený LLM alebo logiku pravidla.

import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # výmena za Porcupine v produkcii [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(cesta, sekundy=RECORD_SECONDS): audio = sd.rec(int(sekundy * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=KANÁLY, dtype='int16') sd.wait() with wave.open(cesta, 'wb') as w: w.setnchannels(KANÁLY); 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 "Nevidím oblaky, ale mohlo by to byť v poriadku. Pre istotu si prineste bundu." vrátiť "Povedali ste: " + 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 je pripravený. Zadajte frázu prebudenia, ktorú chcete otestovať.") 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("Používateľ:", text); print("Asistent:", odpovedať) speak(odpovedať) else: print("Zadajte frázu prebudenia na otestovanie slučky.")

Pre skutočnú detekciu aktivačných slov integrujte detektor streamovania Porcupine (nízka náročnosť CPU, citlivosť na kľúčové slovo). [2]


Ladenie zvuku, na ktorom skutočne záleží 🎚️

Niekoľko drobných opráv spôsobí, že sa váš asistent bude cítiť 10-krát múdrejší:

  • Vzdialenosť mikrofónu : 30 – 60 cm je ideálna vzdialenosť pre mnoho USB mikrofónov.

  • Úrovne : vyhnite sa orezávaniu na vstupe a zachovajte plynulosť prehrávania; opravte smerovanie pred naháňaním sa za ignorovanými kódmi. V Raspberry Pi OS môžete spravovať výstupné zariadenie a úrovne pomocou systémových nástrojov alebo raspi-config . [1]

  • Akustika miestnosti : tvrdé steny spôsobujú ozveny; mäkká podložka pod mikrofónom pomáha.

  • Prah prebudenia slova : príliš citlivý → spúšťa virtuálne tajomstvá; príliš prísny → budete kričať na plast. Porcupine vám umožňuje upraviť citlivosť pre každé kľúčové slovo. [2]

  • Teploty : dlhé prepisy na Pi 5 profitujú z oficiálneho aktívneho chladenia pre trvalý výkon. [1]


Prechod od hračky k spotrebiču: Servis, automatické spustenie, kontroly stavu 🧯

Ľudia zabúdajú spúšťať skripty. Počítače zabúdajú byť milé. Premeňte svoj cyklus na spravovanú službu:

  1. Vytvorte jednotku systemd:

[Jednotka] Popis=DIY Hlasový asistent Po=network.target sound.target [Služba] Používateľ=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=vždy RestartSec=3 [Inštalácia] WantedBy=multi-user.target
  1. Povoliť:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
  1. Chvosty protokolov:

journalctl -u asistent -f

Teraz sa spúšťa pri bootovaní, reštartuje pri páde a vo všeobecnosti sa správa ako zariadenie. Trochu nudné, ale oveľa lepšie.


Systém zručností: Urobte ho skutočne užitočným doma 🏠✨

Keď sú hlasové vstupy a výstupy prehľadné, pridajte akcie:

  • Intent router : jednoduché kľúčové slová pre trasy pre bežné úlohy.

  • Inteligentná domácnosť : publikovanie udalostí do MQTT alebo volanie koncových bodov HTTP Home Assistant.

  • Pluginy : rýchle funkcie Pythonu ako set_timer , what_is_the_time , play_radio , run_scene .

Aj keď je v slučke cloudový LLM, najprv smerujte zrejmé lokálne príkazy kvôli rýchlosti a spoľahlivosti.


Lokálne iba verzus cloudová asistencia: Kompromisy, ktoré pocítite 🌓

Iba lokálne
Výhody: súkromné, offline, predvídateľné náklady.
Nevýhody: ťažšie modely môžu byť na malých doskách pomalé. Viacjazyčné školenie Whisperu pomáha s robustnosťou, ak ho uchovávate na zariadení alebo na blízkom serveri. [3]

cloudovej asistencie
: výkonné uvažovanie, väčšie kontextové okná.
Nevýhody: dáta opúšťajú zariadenie, závislosť od siete, variabilné náklady.

Hybrid často vyhráva: budiace slovo + lokálny ASR → volanie API na uvažovanie → lokálny TTS. [2][3][5]


Riešenie problémov: Zvláštni Gremlini a rýchle opravy 👾

  • Falošné spúšťače aktivačného slova : znížte citlivosť alebo vyskúšajte iný mikrofón. [2]

  • Oneskorenie ASR : použite menší model Whisper alebo zostavte súbor whisper.cpp s príznakmi vydania ( -j --config Release ). [4]

  • Trhaný text na reč : predgenerovanie bežných fráz; potvrdenie zvukového zariadenia a vzorkovacích frekvencií.

  • Nezistil sa mikrofón : skontrolujte arecord -l a mixéry.

  • Tepelné obmedzenie : pre trvalý výkon použite na Pi 5 oficiálny aktívny chladič. [1]


Poznámky o bezpečnosti a ochrane osobných údajov, ktoré by ste si mali prečítať 🔒

  • Udržujte svoj Pi aktualizovaný pomocou APT.

  • Ak používate cloudové API, zaznamenávajte odoslané údaje a najprv zvážte lokálne odstránenie osobných údajov.

  • Spúšťajte služby s najnižšími oprávneniami; vyhnite sa príkazu sudo v ExecStart, pokiaľ to nie je potrebné.

  • Zabezpečte lokálny režim pre hostí alebo tiché hodiny.


Varianty zostavenia: Mixujte a kombinujte ako sendvič 🥪

  • Ultra-lokálne : Porcupine + whisper.cpp + Piper + jednoduché pravidlá. Súkromné ​​a robustné. [2][4][5]

  • Rýchla cloudová asistencia : Porcupine + (menší lokálny Whisper alebo cloudový ASR) + lokálny TTS + cloudový LLM.

  • Centrála domácej automatizácie : Pridajte postupy Node-RED alebo Home Assistant pre rutiny, scény a senzory.


Príklad zručnosti: Rozsvietenie svetiel cez MQTT 💡

import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "home/obývačka/svetlo/nastavenie" 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() # ak je v texte "zapnúť svetlá": set_light("on")

Pridajte hlasovú vetu ako: „zapni lampu v obývačke“ a budete sa cítiť ako čarodejník.


Prečo tento stack funguje v praxi 🧪

  • Porcupine je efektívny a presný pri detekcii „wake-word“ na malých doskách, čo umožňuje neustále počúvanie. [2]

  • Rozsiahle, viacjazyčné školenie Whisperu ho robí odolným voči rôznym prostrediam a prízvukom. [3]

  • Súbor shipset.cpp udržiava túto energiu použiteľnú aj na zariadeniach s procesorom, ako je napríklad Raspberry Pi. [4]

  • Piper udržiava odpovede rýchle bez toho, aby odosielal zvuk do cloudového prevodu textu na reč. [5]


Príliš dlhé, nečítal som to

Vytvorte si modulárneho, súkromného DIY AI asistenta s Raspberry Pi kombináciou Porcupine pre slovo prebudenia, Whisper (prostredníctvom whisper.cpp ) pre ASR, vášho výberu brain pre odpovede a Piper pre lokálny TTS. Zabaľte to ako službu systemd, nalaďte zvuk a prepojte s akciami MQTT alebo HTTP. Je to lacnejšie, ako si myslíte, a zvláštne príjemné na používanie. [1][2][3][4][5]


Referencie

  1. Softvér a chladenie Raspberry Pi – Raspberry Pi Imager (stiahnutie a použitie) a informácie o produkte Pi 5 Active Cooler

  2. Porcupine Wake Word – SDK a rýchly štart (kľúčové slová, citlivosť, lokálna inferencia)

  3. Whisper (model ASR) – Viacjazyčný, robustný ASR natrénovaný na približne 680 000 hodinách

    • Radford a kol., Robustné rozpoznávanie reči prostredníctvom rozsiahleho slabého dohľadu (šepkanie): čítať ďalej

  4. whispett.cpp – inferencia Whisper s rozhraním CPU, CLI a krokmi zostavenia

  5. Piper TTS – Rýchly, lokálny neurónový TTS s viacerými hlasmi/jazykami

Nájdite najnovšiu umelú inteligenciu v oficiálnom obchode s asistentmi umelej inteligencie

O nás


Späť na blog