Szukasz małego asystenta głosowego, który naprawdę podąża za Twoimi wskazówkami, działa na Twoim sprzęcie i nie zamówi przypadkiem dwunastu ananasów, bo źle Cię usłyszał? Asystent AI DIY z Raspberry Pi jest zaskakująco realny, przyjemny i elastyczny. Podłączysz słowo aktywujące, rozpoznawanie mowy (ASR = automatyczne rozpoznawanie mowy), mózg języka naturalnego (reguły lub LLM) i zamianę tekstu na mowę (TTS). Dodaj kilka skryptów, jedną lub dwie usługi i kilka przemyślanych poprawek audio, a otrzymasz kieszonkowy, inteligentny głośnik, który przestrzega Twoich zasad.
Przeprowadzimy Cię od zera do rozmowy z Twoim Pi bez typowego wyrywania sobie włosów. Omówimy części, konfigurację, kod, porównania, pułapki... całe burrito. 🌯
Artykuły, które mogą Ci się spodobać po przeczytaniu tego:
🔗 Jak skutecznie studiować sztuczną inteligencję
Utwórz plan nauki, realizuj projekty i śledź postępy.
🔗 Jak założyć firmę zajmującą się sztuczną inteligencją
Zweryfikuj problem, zbuduj MVP, skompletuj zespół, zabezpiecz pierwszych klientów.
🔗 Jak wykorzystać sztuczną inteligencję, aby zwiększyć produktywność
Zautomatyzuj rutynowe zadania, usprawnij przepływy pracy i zwiększ efektywność działań kreatywnych.
🔗 Jak włączyć sztuczną inteligencję do swojej firmy
Identyfikuj procesy o największym wpływie, wdrażaj programy pilotażowe, mierz zwrot z inwestycji, skaluj.
Co sprawia, że asystent AI DIY z Raspberry Pi jest dobry?
-
Domyślnie prywatne – dźwięk pozostaje lokalny, jeśli to możliwe. Ty decydujesz, co opuszcza urządzenie.
-
Modułowy – wymienne komponenty jak Lego: silnik słów kluczowych, ASR, LLM, TTS.
-
Przystępna cena – w większości oprogramowanie typu open source, standardowe mikrofony, głośniki i komputer Pi.
-
Podatne na hakowanie – potrzebujesz automatyki domowej, pulpitów nawigacyjnych, procedur, niestandardowych umiejętności? Proste.
-
Niezawodny – zarządzany przez usługę, uruchamia się i zaczyna nasłuchiwać automatycznie.
-
Zabawa – dowiesz się wiele o dźwięku, procesach i projektowaniu opartym na zdarzeniach.
Mała wskazówka: Jeśli używasz Raspberry Pi 5 i planujesz używać cięższych modeli lokalnych, przy stałym obciążeniu może okazać się pomocne mocowanie chłodnicy. (W razie wątpliwości wybierz oficjalną chłodnicę aktywną przeznaczoną dla Raspberry Pi 5.) [1]
Części i narzędzia, których będziesz potrzebować 🧰
-
Raspberry Pi : Zalecane jest Pi 4 lub Pi 5 ze względu na zapas mocy obliczeniowej.
-
Karta microSD : zalecana pojemność 32 GB+.
-
Mikrofon USB : prosty mikrofon konferencyjny USB jest świetny.
-
Głośnik : USB lub głośnik 3,5 mm, albo wzmacniacz I2S HAT.
-
Sieć : Ethernet lub Wi-Fi.
-
Opcjonalne udogodnienia: obudowa, aktywne chłodzenie dla Pi 5, przycisk do komunikacji przez naciśnięcie przycisku, pierścień LED. [1]
System operacyjny i konfiguracja bazowa
-
Wgraj system operacyjny Raspberry Pi za pomocą Raspberry Pi Imager. To prosty sposób na uzyskanie bootowalnej karty microSD z wybranymi ustawieniami. [1]
-
Uruchom system, podłącz do sieci, a następnie zaktualizuj pakiety:
sudo apt update && sudo apt upgrade -y
-
Podstawy dźwięku : w systemie Raspberry Pi OS można ustawić domyślne wyjście, poziomy i urządzenia za pomocą interfejsu użytkownika pulpitu lub
raspi-config. Dźwięk przez USB i HDMI jest obsługiwany we wszystkich modelach; wyjście Bluetooth jest dostępne w modelach z Bluetooth. [1] -
Zweryfikuj urządzenia:
arecord -l aplay -l
Następnie przetestuj nagrywanie i odtwarzanie. Jeśli poziomy wydają się dziwne, sprawdź miksery i ustawienia domyślne, zanim zrzucisz winę na mikrofon.

Architektura w skrócie 🗺️
Przykładowy, inteligentny asystent AI DIY z wykorzystaniem Raspberry Pi wygląda następująco:
Słowo wybudzające → przechwytywanie dźwięku na żywo → transkrypcja ASR → obsługa intencji lub LLM → tekst odpowiedzi → TTS → odtwarzanie dźwięku → opcjonalne działania przez MQTT lub HTTP.
-
Słowo wybudzające : Porcupine jest małe, dokładne i działa lokalnie z kontrolą wrażliwości na słowo kluczowe. [2]
-
ASR : Whisper to wielojęzyczny, uniwersalny model ASR, trenowany przez około 680 tys. godzin; jest odporny na akcenty i szum tła. Do użytku na urządzeniu,
whisper.cppzapewnia zwięzłą ścieżkę wnioskowania C/C++. [3][4] -
Mózg : Twój wybór – chmurowy LLM za pośrednictwem API, silnik reguł lub lokalne wnioskowanie, w zależności od mocy obliczeniowej.
-
TTS : Piper generuje lokalnie naturalną mowę, wystarczająco szybko, by udzielać szybkich odpowiedzi na przeciętnym sprzęcie. [5]
Szybka tabela porównawcza 🔎
| Narzędzie | Najlepszy dla | Cenowo w porządku | Dlaczego to działa |
|---|---|---|---|
| Słowo „Jeżozwierz Wake” | Zawsze nasłuchujący wyzwalacz | Bezpłatny poziom + | Niskie obciążenie procesora, dokładność, łatwe wiązania [2] |
| Szept.cpp | Lokalny ASR na Pi | Otwarte źródło | Dobra dokładność, przyjazny dla procesora [4] |
| Szybciej-szeptem | Szybsze ASR na CPU/GPU | Otwarte źródło | Optymalizacje CTranslate2 |
| Piper TTS | Lokalny sygnał mowy | Otwarte źródło | Szybkie głosy, wiele języków [5] |
| Interfejs API Cloud LLM | Bogate rozumowanie | Oparte na użytkowaniu | Odciąża ciężkie obliczenia |
| Węzeł-RED | Orkiestracja działań | Otwarte źródło | Przepływy wizualne, przyjazne dla MQTT |
Budowa krok po kroku: Twoja pierwsza pętla głosowa 🧩
Użyjemy Porcupine do słowa wybudzającego, Whisper do transkrypcji, lekkiej funkcji „mózgowej” do odpowiedzi (zastąp ją wybranym przez siebie LLM) i Piper do mowy. Zachowaj minimalizm, a potem iteruj.
1) Zainstaluj zależności
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
-
Porcupine: pobierz SDK/powiązania dla swojego języka i postępuj zgodnie ze wskazówkami szybkiego startu (klawisz dostępu + lista słów kluczowych + ramki audio →
.process). [2] -
Whisper (przyjazny dla procesorów): kompilacja whisper.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
Powyższe odzwierciedla szybki start projektu. [4]
Wolisz Pythona?
faster-whisper(CTranslate2) jest często bardziej dynamiczny niż czysty Python na słabszych procesorach.
2) Skonfiguruj Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # Pobierz model głosu, który Ci się podoba, np. en_US-amy echo "Hello there." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper został zaprojektowany do syntezy mowy na urządzeniu z wieloma opcjami głosu/języka. [5]
3) Minimalna pętla asystenta w Pythonie
Celowo kompaktowy: czeka na frazę wybudzającą (stub), nagrywa, transkrybuje za pomocą whisper.cpp , generuje odpowiedź (placeholder), a następnie mówi przez Piper. Zamień placeholder na swój ulubiony LLM lub logikę reguł.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hej komputer" # zamiana na Porcupine w produkcji [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, sekundy=SEKUNDY_NAGRYWANIA): audio = sd.rec(int(sekundy * CZĘSTOTLIWOŚĆ_PRÓBKOWANIA), częstotliwość_próbkowania=CZĘSTOTLIWOŚĆ_PRÓBKOWANIA, kanały=KANAŁY, typ_danych='int16') sd.wait() z wave.open(ścieżka, 'wb') jako w: w.setnchannels(KANAŁY); 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 "Nie widzę chmur, ale może być dobrze. Na wszelki wypadek weź kurtkę." zwróć "Powiedziałeś: " + prompt def speak(tekst): proc = subprocess.Popen([PIPER_BIN, "--model", PIPER_VOICE, "--output_file", f"{WORKDIR}/reply.wav"], stdin=subprocess.PIPE) proc.stdin.write(tekst.encode("utf-8")); proc.stdin.close(); proc.wait() subprocess.run(["aplay", f"{WORKDIR}/reply.wav"], check=True) print("Asystent gotowy. Wpisz frazę wybudzania, aby przetestować."") 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("Użytkownik:", text); print("Asystent:", reply) speak(reply) else: print("Wpisz frazę wybudzania, aby przetestować pętlę."")
Aby faktycznie wykrywać słowa kluczowe, zintegruj detektor strumieniowy Porcupine (niskie obciążenie procesora, czułość na słowo kluczowe). [2]
Strojenie dźwięku, które naprawdę ma znaczenie 🎚️
Kilka drobnych poprawek sprawi, że Twój asystent poczuje się 10 razy mądrzejszy:
-
Odległość mikrofonu : 30–60 cm to idealna odległość dla wielu mikrofonów USB.
-
Poziomy : unikaj przesterowania na wejściu i dbaj o racjonalne odtwarzanie; popraw routing przed ściganiem duchów w kodzie. W systemie Raspberry Pi OS możesz zarządzać urządzeniem wyjściowym i poziomami za pomocą narzędzi systemowych lub
raspi-config. [1] -
Akustyka pomieszczenia : twarde ściany powodują echo, pomocna może okazać się miękka mata pod mikrofonem.
-
Próg słowa „wybudzającego” : zbyt wrażliwy → wyzwalacze duchów; zbyt rygorystyczny → będziesz krzyczeć na plastik. Porcupine pozwala dostosować czułość dla każdego słowa kluczowego. [2]
-
Termiczne : długie transkrypcje na Pi 5 korzystają z oficjalnego aktywnego chłodzenia, aby zapewnić stałą wydajność. [1]
Od zabawki do urządzenia: usługi, autostart, kontrole stanu zdrowia 🧯
Ludzie zapominają o uruchamianiu skryptów. Komputery zapominają być miłe. Zmień swoją pętlę w usługę zarządzaną:
-
Utwórz jednostkę systemd:
[Jednostka] Opis=DIY Asystent głosowy After=network.target sound.target [Usługa] Użytkownik=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Instalacja] WantedBy=multi-user.target
-
Włącz to:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Ogony kłód:
journalctl -u asystent -f
Teraz uruchamia się przy starcie, restartuje po awarii i generalnie zachowuje się jak urządzenie. Trochę nudno, ale o wiele lepiej.
System umiejętności: Spraw, by był naprawdę przydatny w domu 🏠✨
Gdy głos wejściowy i wyjściowy są już skonfigurowane, dodaj akcje:
-
Intent router : proste trasy oparte na słowach kluczowych dla typowych zadań.
-
Inteligentny dom : publikuj zdarzenia w MQTT lub wywołuj punkty końcowe HTTP Home Assistant.
-
Wtyczki : szybkie funkcje Pythona, takie jak
set_timer,what_is_the_time,play_radio,run_scene.
Nawet jeśli w pętli jest używany chmurowy LLM, w celu zapewnienia szybkości i niezawodności należy w pierwszej kolejności kierować oczywiste polecenia lokalne.
Tylko lokalnie kontra Cloud Assist: Kompromisy, które odczujesz 🌓
Tylko lokalnie.
Zalety: prywatne, offline, przewidywalne koszty.
Wady: cięższe modele mogą działać wolno na małych płytkach. Wielojęzyczne szkolenie Whispera zapewnia stabilność, jeśli przechowujesz go na urządzeniu lub pobliskim serwerze. [3]
Cloud Assist
: potężne rozumowanie, szersze okna kontekstowe.
Wady: dane opuszczają urządzenie, zależność od sieci, zmienne koszty.
Często wygrywa rozwiązanie hybrydowe: słowo kluczowe + lokalne ASR → wywołanie API w celu wnioskowania → lokalne TTS. [2][3][5]
Rozwiązywanie problemów: dziwne gremliny i szybkie rozwiązania 👾
-
Fałszywe wyzwalacze w postaci słowa „wybudź” : obniż czułość lub wypróbuj inny mikrofon. [2]
-
Opóźnienie ASR : użyj mniejszego modelu Whisper lub zbuduj
whisper.cppz flagami wydania (-j --config Release). [4] -
Choppy TTS : wstępnie generuj popularne frazy, sprawdź swoje urządzenie audio i częstotliwość próbkowania.
-
Nie wykryto mikrofonu : sprawdź
arecord -li miksery. -
Ograniczanie termiczne : w celu utrzymania wydajności na stałym poziomie należy używać oficjalnego Active Cooler na Raspberry Pi 5. [1]
Notatki dotyczące bezpieczeństwa i prywatności, które naprawdę powinieneś przeczytać 🔒
-
Aktualizuj Raspberry Pi za pomocą APT.
-
Jeśli korzystasz z interfejsu API w chmurze, rejestruj wysyłane dane i rozważ najpierw lokalne usuwanie danych osobowych.
-
Uruchamiaj usługi z najmniejszymi uprawnieniami; unikaj
sudow ExecStart, chyba że jest to wymagane. -
Zapewnij gościom tryb lokalny
Warianty konstrukcyjne: mieszaj i dopasowuj jak kanapkę 🥪
-
Ultralokalny : Porcupine + whisper.cpp + Piper + proste zasady. Prywatny i solidny. [2][4][5]
-
Szybka pomoc chmurowa : Porcupine + (mniejszy lokalny Whisper lub chmurowy ASR) + lokalny TTS + chmurowy LLM.
-
Centrala automatyki domowej : dodaj przepływy Node-RED lub Home Assistant dla procedur, scen i czujników.
Przykładowa umiejętność: Włączanie świateł przez MQTT 💡
import paho.mqtt.client jako mqtt MQTT_HOST = "192.168.1.10" TOPIC = "dom/salon/światło/zestaw" 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() # jeśli "włącz światła" w tekście: set_light("on")
Dodaj kwestię głosową, taką jak: „włącz lampę w salonie”, a poczujesz się jak czarodziej.
Dlaczego ten stos działa w praktyce 🧪
-
Porcupine jest skuteczny i dokładny w wykrywaniu słów-aktywatorów na małych tablicach, co sprawia, że ciągłe słuchanie jest możliwe. [2]
-
Obszerne, wielojęzyczne szkolenie Whisper sprawia, że jest on odporny na zróżnicowane środowiska i akcenty. [3]
-
whisper.cpppozwala na wykorzystanie tej mocy w urządzeniach wykorzystujących wyłącznie procesor, takich jak Pi. [4] -
Piper pozwala na udzielanie zwięzłych odpowiedzi bez przesyłania dźwięku do chmury TTS. [5]
Za długie, nie przeczytałem
Zbuduj modułowego, prywatnego asystenta AI DIY z Raspberry Pi , łącząc Porcupine jako słowo wybudzające, Whisper (przez whisper.cpp ) jako ASR, wybrany mózg jako odpowiedzi i Piper jako lokalny TTS. Zapakuj go w usługę systemd, dostrój dźwięk i podłącz akcje MQTT lub HTTP. Jest tańszy niż myślisz i dziwnie przyjemny w użytkowaniu. [1][2][3][4][5]
Odniesienia
-
Oprogramowanie i chłodzenie Raspberry Pi – informacje o produkcie Raspberry Pi Imager (pobierz i używaj) oraz Pi 5 Active Cooler
-
Raspberry Pi Imager: przeczytaj więcej
-
Aktywny cooler (Pi 5): dowiedz się więcej
-
-
Porcupine Wake Word – SDK i szybki start (słowa kluczowe, wrażliwość, wnioskowanie lokalne)
-
Whisper (model ASR) – wielojęzyczny, solidny model ASR trenowany przez ~680 tys. godzin
-
Radford i in., Rozpoznawanie mowy metodą solidnego nadzoru na dużą skalę (szept): czytaj więcej
-
-
whisper.cpp – przyjazne dla procesora wnioskowanie Whisper z wierszem poleceń i krokami kompilacji
-
Piper TTS – szybka, lokalna neuronowa synteza mowy z wieloma głosami/językami