Wprowadzenie: Twój dom, Twoje dane
Cyfrowa wygoda nie musi oznaczać rezygnacji z prywatności. Lokalny asystent głosowy offline pozwala sterować domem bez wysyłania nagrań do chmury, oferując błyskawiczne reakcje i pełną kontrolę nad danymi. W tym obszernym przewodniku pokazujemy, jak zainstalować głośnik z asystentem offline lokalnym i krok po kroku uruchomić inteligentny głośnik działający w całości w sieci domowej.
Znajdziesz tu zarówno przegląd technologii (STT, TTS, wake word), jak i praktyczną instrukcję od wyboru sprzętu przez konfigurację Home Assistant, Rhasspy i narzędzi pokrewnych, po integracje z Zigbee, Matter i MQTT. Zadbaliśmy o przykłady w języku polskim, testy, diagnostykę oraz dobre praktyki bezpieczeństwa.
Dlaczego asystent offline i lokalny?
Powszechne głośniki z chmurowymi asystentami są wygodne, ale:
- Prywatność: głos i zapytania mogą trafiać do zewnętrznych serwerów.
- Opóźnienia: odpowiedzi zależą od łącza internetowego.
- Kontrola: zmiany w usługach chmurowych bywają nieprzewidywalne.
Z kolei inteligentny głośnik offline:
- Przetwarza mowę na urządzeniu (edge), bez wysyłki do chmury.
- Działa szybciej, bo omija internet i serwery zewnętrzne.
- Daje pełną kontrolę nad aktualizacjami i integracjami.
Co to jest inteligentny głośnik z lokalnym asystentem?
To połączenie mikrofonu, głośnika, komputera jednopłytkowego (np. Raspberry Pi), oprogramowania do rozpoznawania mowy (STT), syntezy mowy (TTS), wykrywania słowa wybudzającego (wake word) oraz warstwy logiki (np. Home Assistant i automatyzacje). Dzięki temu możesz powiedzieć: „Włącz światło w salonie”, a system lokalnie zinterpretuje polecenie, wykona akcję i odpowie głosem – wszystko bez połączenia z chmurą.
Architektury: od jednego pudełka po sieć satelitów
1) Jedno urządzenie (all-in-one)
Wszystko na jednym sprzęcie, np. Raspberry Pi 4/5 z kartą mikrofonową USB lub matrycą mikrofonów i wzmacniaczem do głośnika. Prosto w utrzymaniu, idealnie do mieszkania.
2) Serwer + satelity
Główne komponenty STT/TTS i logiki działają na serwerze (NUC, mini PC, NAS z Dockerem), a w pokojach rozstawione są satelity (ESP32, małe Pi) zbierające audio i odtwarzające odpowiedzi. Większa skalowalność i lepszy zasięg głosowy.
3) Home Assistant Voice z protokołem Wyoming
Nowoczesne podejście: strumień audio dociera do pipeline'u w HA. Moduły jak OpenWakeWord, Whisper/Vosk (STT) i Piper (TTS) można mieszać i dobierać do sprzętu. To elastyczne, w pełni lokalne rozwiązanie.
Wymagania sprzętowe i programowe
Sprzęt
- Komputer: Raspberry Pi 4/5 (4–8 GB), Intel NUC, mini PC, lub Nvidia Jetson (jeśli planujesz cięższe modele STT).
- Mikrofon: USB (np. Antlion USB, Samson Go), matryce typu ReSpeaker 2/4-Mic HAT, AudioInjector, lub I2S dla ESP32-satelitów.
- Głośnik: aktywne monitory, mały wzmacniacz (np. PAM8403) + głośnik 3–5”, soundbar USB; ważna jest czysta ścieżka audio.
- Sieć: stabilne Wi‑Fi lub Ethernet; w przypadku satelitów zalecany jest MQTT lub protokół Wyoming po LAN.
- Zasilanie: dobrej jakości zasilacz Pi (3A+), opcjonalnie PoE do stałej instalacji.
Oprogramowanie
- System bazowy: Home Assistant OS lub Home Assistant + Docker na Linux/NUC.
- STT: Vosk, Whisper.cpp/whisperX (lokalne), Coqui STT; dla polskiego sprawdzają się Vosk i Whisper.
- TTS: Piper TTS (lekki, świetny PL), Coqui TTS (mocniejszy), ewentualnie RHVoice.
- Wake word: OpenWakeWord (open-source), Picovoice Porcupine (darmowe do użytku niekomercyjnego, świetna skuteczność), Snowboy (EOL, niezalecany).
- Asystent logiki: Home Assistant, Rhasspy/OVOS/SEPIA (alternatywy); integracje przez MQTT, ZHA/Zigbee2MQTT, Matter, Z‑Wave, ESPHome, LocalTuya, Scrypted.
Plan krok po kroku — jak zainstalować głośnik z asystentem offline lokalnym
W tej części przechodzimy do praktyki. To sedno poradnika: jak zainstalować głośnik z asystentem offline lokalnym, z pełnym zestawem wskazówek, przykładów i rozwiązywania problemów.
Krok 1: Przygotuj bazę sprzętową
Wybierz ścieżkę:
- All‑in‑one na Raspberry Pi – najprostsze na start, jedna obudowa.
- Serwer + satelity – gdy chcesz obsłużyć wiele pomieszczeń i mocniejsze modele STT.
Dla all‑in‑one przygotuj:
- Raspberry Pi 4/5, karta microSD (A2, 32–128 GB) lub SSD na USB 3.0.
- Mikrofon USB lub ReSpeaker HAT, głośnik + wzmacniacz.
- Obudowa z przepływem powietrza i miejscem na głośnik.
Krok 2: System i sieć
Zainstaluj Home Assistant OS lub Debian/Ubuntu + Docker. Dla Pi polecamy HA OS:
1) Pobierz obraz HA OS dla Pi
2) Wypal na kartę microSD (Balena Etcher / Raspberry Pi Imager)
3) Włóż kartę, podłącz sieć i zasilanie
4) Wejdź na http://homeassistant.local:8123 lub http://<IP>:8123
Skonfiguruj statyczny adres IP w routerze (rezerwacja DHCP) i nazwę hosta. Stabilny IP ułatwia integracje i satelity.
Krok 3: Dźwięk – mikrofon i głośnik
Podłącz mikrofon USB i urządzenie wyjściowe audio. Sprawdź urządzenia:
# na Debian/Ubuntu
arecord -l
aplay -l
W Home Assistant OS dodaj Dodatek „Advanced SSH & Web Terminal”, by testować ALSA/PulseAudio. Zadbaj o:
- Akustykę: głośnik oddalony od mikrofonu, tłumienie pogłosu.
- Poziomy głośności: unikaj przesterowania wejścia mikrofonu.
- Opcjonalnie AEC/NS: eliminacja echa i szumów (wewnątrz matrycy mikrofonów lub programowo).
Krok 4: Home Assistant Voice i pipeline
W HA przejdź do Ustawienia → Asystent głosowy. Utwórz pipeline głosowy z lokalnymi komponentami:
- Wake word: OpenWakeWord (model PL lub uniwersalny), ewentualnie Porcupine.
- STT: Vosk lub Whisper (whisper.cpp dla CPU, mniej zasobożerny).
- TTS: Piper TTS z polskim głosem.
Jeśli wolisz Dockera, możesz uruchomić serwisy Wyoming (np. Piper, Whisper) poza HA i połączyć je przez integrację Wyoming w HA.
Krok 5: Instalacja i konfiguracja Piper TTS (PL)
Piper oferuje świetną jakość i niskie wymagania. Wybierz polski model, np. pl_PL-mls_6892-low lub pl_PL-mls_6892-medium (lepsza jakość, większa waga). W HA:
- Zainstaluj dodatek Piper (jeśli dostępny) lub usługę Wyoming Piper w Dockerze.
- Wskaż model językowy PL, ustaw szybkość i głośność.
# przykład docker-compose dla Piper (Wyoming)
services:
piper:
image: rhasspy/wyoming-piper:latest
container_name: piper
restart: unless-stopped
ports:
- '10200:10200'
volumes:
- ./piper/models:/data
command: --voice pl_PL-mls_6892-low --uri tcp://0.0.0.0:10200
Krok 6: STT – Vosk lub Whisper
Vosk jest lekki i szybki, ma dostępne modele PL. Whisper (OpenAI) w wersji whisper.cpp działa lokalnie na CPU/GPU; modele small/medium dla polskiego dają dobrą dokładność, ale potrzebują więcej mocy.
- Na słabsze CPU wybierz Vosk (niski narzut, szybki start).
- Na NUC/Jetson wybierz Whisper (lepsza jakość przy mocniejszym sprzęcie).
# przykład docker-compose dla Vosk (Wyoming STT wrapper)
services:
vosk:
image: rhasspy/wyoming-vosk:latest
container_name: vosk
restart: unless-stopped
ports:
- '10300:10300'
volumes:
- ./vosk/pl:/data # tu wgraj model PL
command: --model /data --uri tcp://0.0.0.0:10300
W Home Assistant dodaj integrację Wyoming i wskaż adresy usług: Piper (TTS) i Vosk/Whisper (STT). Następnie przypisz je do pipeline'u głosowego.
Krok 7: Wake word – OpenWakeWord lub Porcupine
Wake word ogranicza nasłuch do krótkiej detekcji słowa kluczowego, dzięki czemu pełny STT uruchamia się tylko, gdy mówisz do asystenta. Warianty:
- OpenWakeWord – open-source, możliwość trenowania własnych fraz; dobra skuteczność, niskie zasoby.
- Porcupine – bardzo skuteczny i oszczędny; wymaga klucza (do użytku niekomercyjnego najczęściej darmowy).
Wybierz słowo wybudzające po polsku, np. „Halo Lumi” lub „Cześć Asystencie”. Testuj czułość, by uniknąć fałszywych wybudzeń.
Krok 8: Intencje i komendy – żeby system „rozumiał” dom
Masz dwie ścieżki:
- Intencje Home Assistant – gotowe wzorce sterowania oświetleniem, mediami, klimatyzacją; dodaj własne wyrażenia.
- Rhasspy NLU – elastyczny system z plikami sentences.ini dla polskiego; idealny, jeśli chcesz pełnej kontroli nad gramatyką i slotami.
# przykład fragmentu Rhasspy sentences.ini (PL)
[turn_light]
{włącz|włącz proszę|proszę włącz} światło [w] (salonie|kuchni|sypialni){room}
turn_light &room=$room
[climate_set]
{ustaw|zmień} temperaturę [w] (salonie|sypialni){room} na (19..25){temp:int} stopni
set_temperature &room=$room &temp=$temp
Mapuj intencje na akcje w HA: „turn_light” → włącz/wyłącz grupy świateł, „set_temperature” → ustaw temperaturę w danej strefie.
Krok 9: Integracje urządzeń – Zigbee, Matter, Z‑Wave, Wi‑Fi
Aby komendy miały sens, w HA skonfiguruj urządzenia:
- Zigbee: ZHA (z koordynatorem np. Sonoff ZBDongle‑P/E) lub Zigbee2MQTT.
- Matter/Thread: wbudowane w HA (z odpowiednim kontrolerem Thread), rośnie ekosystem kompatybilnych urządzeń.
- Z‑Wave: Z‑Wave JS (dongle 700/800).
- Wi‑Fi: ESPHome, Tasmota (LocalTuya dla urządzeń Tuya bez chmury), Scrypted dla kamer.
Nazwij logicznie pomieszczenia i urządzenia, np. „światło salon”, „rolety taras”, „gniazdko ekspres”. Dzięki temu komendy głosowe brzmią naturalnie.
Krok 10: Testy end‑to‑end
Powiedz słowo wybudzające, następnie komendę, np.: „Włącz światło w salonie”. Sprawdź w dzienniku HA:
- Czy detekcja wake word zadziałała (log w dodatku lub usłudze).
- Czy STT poprawnie rozpoznał treść po polsku.
- Czy intencja mapuje się na właściwą akcję.
- Czy TTS odtworzył odpowiedź na głośniku.
Jeśli coś nie działa, przejdź do sekcji „Rozwiązywanie problemów”.
Krok 11: Estetyka i akustyka – obudowa, ustawienie
Umieść głośnik tak, by mikrofon był oddalony od źródła dźwięku. Rozważ wydruk 3D obudowy z kanałem akustycznym, pianką tłumiącą i kratką przed mikrofonem. Z przodu przycisk „mute” (fizyczne odcięcie mikrofonu) zwiększy zaufanie domowników.
Krok 12: Rozwiązywanie problemów
- Za dużo fałszywych wybudzeń: obniż czułość wake word, zmień frazę na mniej popularną, popraw ustawienie mikrofonu.
- STT gubi polskie znaki lub myli słowa: wybierz lepszy model (Whisper medium), popraw poziom głośności, włącz redukcję szumu.
- Opóźnienia: przenieś STT na mocniejszy host (NUC), użyj Vosk na słabszych urządzeniach, ogranicz długość nagrań.
- Brak dźwięku: sprawdź domyślne urządzenie w ALSA/Pulse, upewnij się, że HA używa poprawnego wyjścia audio.
- Konflikt portów: w Dockerze zmień mapowania portów Wyoming.
Krok 13: Optymalizacja jakości rozpoznawania
- Akustyka: miękkie powierzchnie, dywany, zasłony – mniej pogłosu.
- Mikrofon: kierunkowy lub matryca z beamformingiem, bliżej użytkownika.
- Próbkowanie: 16 kHz/16 bit wystarczy dla STT; wyższe nie zawsze poprawia wynik.
- Filtry: NS (noise suppression), AEC (echo), AGC (automatic gain control) – ostrożnie, by nie zniekształcić mowy.
Alternatywy i rozszerzenia
Rhasspy 2.5 / 3.0
Kompletny stos asystenta lokalnego z NLU, satelitami i integracją z HA. Dla zaawansowanych użytkowników daje ogromną kontrolę nad gramatyką języka i slotami.
OVOS/Mycroft
Spadkobierca projektu Mycroft (open‑source) z mechanizmem „skills”. Działa lokalnie, ale wymaga więcej pracy przy polonizacji i modelach PL.
SEPIA
Samodzielny asystent z integracjami, interfejsem webowym i własnym STT/TTS. Ciekawa alternatywa, jeśli nie chcesz opierać się na HA.
Bezpieczeństwo i prywatność: praktyki „privacy‑by‑design”
- Brak chmury: wyłącz zewnętrzne STT/TTS, używaj tylko lokalnych modeli.
- Segmentacja sieci: VLAN dla IoT, reguły firewall, tylko potrzebne porty.
- Szyfrowanie: jeśli łączysz serwisy na różnych hostach, rozważ tunel WireGuard dla administracji.
- Uprawnienia: kontenery uruchamiaj z minimalnymi uprawnieniami, aktualizuj regularnie.
- Fizyczny mute: przełącznik odcinający mikrofon to dodatkowy poziom zaufania.
Utrzymanie, aktualizacje i kopie zapasowe
- Snapshoty HA: regularne kopie konfiguracji, automatyczny eksport na NAS.
- Wersjonowanie: przechowuj sentences.ini, automatyzacje i compose'y w Git.
- Monitorowanie: czujniki systemowe w HA (CPU, RAM, temperatura), logi usług Wyoming.
- Testy regresji: po aktualizacji modeli STT/TTS przetestuj kluczowe komendy.
Przykładowa konfiguracja end‑to‑end (Docker, serwer + satelity)
Na serwerze (NUC/NAS) uruchom Piper i Vosk/Whisper jako usługi Wyoming. W HA dodaj integrację Wyoming, skonfiguruj pipeline. W pokojach – satelity na ESP32 lub mini‑Pi z mikrofonem I2S/USB, wysyłające audio do HA (Wyoming) lub przez MQTT (Rhasspy satelite). Takie podejście pozwala łatwo rozbudować system.
# docker-compose (skrócony): Piper + Whisper
services:
piper:
image: rhasspy/wyoming-piper:latest
ports: ['10200:10200']
volumes:
- ./piper/models:/data
command: --voice pl_PL-mls_6892-medium --uri tcp://0.0.0.0:10200
whisper:
image: rhasspy/wyoming-whisper:latest
ports: ['10300:10300']
volumes:
- ./whisper/models:/data
environment:
- WHISPER_MODEL=small
command: --model /data/ggml-small.bin --uri tcp://0.0.0.0:10300
Wzorce komend i dobre praktyki językowe
- Krótko i konkretnie: „Włącz lampę biurko” lepsze niż „Czy mógłbyś włączyć tę lampę, proszę”.
- Jasne nazwy: „sypialnia”, „salon TV”, „taras”. Unikaj podobnie brzmiących nazw.
- Synonimy: dodaj „światło”/„lampa”, „podkręć”/„zwiększ”, by zwiększyć skuteczność NLU.
Rozszerzenia automatyzacji
- Kontekst: jeśli mówię z sypialni, „Zgaś światło” dotyczy bieżącego pokoju.
- Dialog: asystent dopytuje: „Które światło: sufit czy lampka nocna?”
- Tryby: „Tryb filmowy” – ściemnienie świateł, roleta w dół, TV włączony.
- Routines: „Dobranoc” – światła off, alarm on, temperatura eco.
Wydajność i zużycie energii
- Modele: na słabszym CPU używaj Vosk + Piper low; na mocnym – Whisper small/medium + Piper medium.
- Pin CPU: przypnij wątki STT do konkretnych rdzeni, ogranicz zużycie.
- Aktywacja na żądanie: uruchamiaj cięższe STT tylko po wykryciu wake word.
FAQ: najczęstsze pytania
- Czy to działa bez internetu? Tak – po pobraniu modeli wszystko działa lokalnie.
- Jakie są opóźnienia? Wake word ~50 ms, STT 300–800 ms (zależnie od modelu i sprzętu), TTS 100–400 ms – zwykle poniżej 1,5 s całość.
- Czy muszę znać Dockera? Nie, ale ułatwia instalację usług Wyoming. W HA OS wiele zrobisz dodatkami.
- Jak poprawić rozumienie polskiego? Lepszy mikrofon, lepszy model STT (Whisper small/medium), dopracowane frazy i synonimy.
Checklist instalacyjny
- Wybrana architektura: all‑in‑one lub serwer + satelity.
- Sprzęt: Pi/NUC, mikrofon, głośnik, zasilanie, sieć.
- System: HA OS lub Linux + Docker.
- Audio: mikrofon i głośnik wykryte, poprawne poziomy.
- Pipeline: wake word, STT (Vosk/Whisper), TTS (Piper) skonfigurowane.
- Intencje i automatyzacje: gotowe wzorce i mapowania.
- Integracje urządzeń: Zigbee/Matter/Z‑Wave/ESPHome.
- Testy: wake → STT → intencja → akcja → TTS działa.
- Bezpieczeństwo: VLAN IoT, brak chmury, aktualizacje.
Podsumowanie: lokalny asystent, realna kontrola
Teraz wiesz, jak zainstalować głośnik z asystentem offline lokalnym, dobrać sprzęt i oprogramowanie, a także zbudować kompletny pipeline głosowy po polsku. Dzięki takiemu podejściu zyskujesz prywatność, niskie opóźnienia i elastyczność, a Twój dom naprawdę reaguje na Twoje słowa – bez chmury i kompromisów.
Załącznik: szybki start „all‑in‑one” (skrót)
- Zainstaluj Home Assistant OS na Raspberry Pi.
- Podłącz mikrofon USB i głośnik, sprawdź audio.
- Dodaj integrację Voice Assistant i skonfiguruj pipeline: OpenWakeWord → Vosk/Whisper → Piper.
- Skonfiguruj intencje w HA (PL) oraz podstawowe automatyzacje.
- Dodaj urządzenia (ZHA/Zigbee2MQTT, Matter, ESPHome).
- Przetestuj, dostrój czułość wake word, poziomy głośności i modele.
Po tych krokach masz gotowy inteligentny głośnik, a wiedza z tego poradnika pozwoli Ci iść dalej: satelity, dialogi, scenariusze. Gdy ktoś zapyta, jak zainstalować głośnik z asystentem offline lokalnym, będziesz mógł nie tylko odpowiedzieć – ale i zademonstrować własne, działające rozwiązanie.
Notatki końcowe: wskazówki dla ambitnych
- Modele językowe: trzymaj osobno i wersjonuj; testuj kilka wariantów (tiny/small/medium Whisper).
- Funkcje niestandardowe: webhooki, skrypty Python w AppDaemon, Node‑RED dla złożonej logiki.
- Aktywacja kontekstowa: czujniki obecności (mmWave), aby wyciszać głośnik nocą lub reagować tylko w zajętych pomieszczeniach.
- Edge TPU/GPU: przyspiesz STT/TTS, jeśli masz sprzęt akcelerujący.
Powodzenia w budowie lokalnego asystenta. Twój dom, Twoje dane – i Twój głos pozostaje u Ciebie.