Lokalne sterowanie głosem w Home Assistant z Whisper i Piper
Część 4 z 6 serii Home Assistant bez chmury

Management Summary
Lokalne sterowanie głosem pozwala Home Assistant obsługiwać polecenia domowe we własnej sieci. Whisper rozpoznaje mowę, a Piper odczytuje odpowiedzi, ograniczając zależność od zewnętrznych usług głosowych. Taki układ może zwiększyć samodzielność inteligentnego domu, ale mikrofony, moc komputera i sterowane urządzenia nadal wpływają na niezawodność oraz czas reakcji. Sama lokalna obsługa mowy nie sprawia, że każde podłączone urządzenie działa bez internetu.
Spis treści
Lokalne sterowanie głosem łączy cztery zadania: wykrycie hasła wybudzania, zamianę mowy na tekst, wykonanie pasującego polecenia i odczytanie odpowiedzi. Home Assistant, Whisper i Piper pozwalają utrzymać to przetwarzanie w sieci lokalnej. Znaczenie ma cały łańcuch: lokalny asystent nie zapewnia pracy offline gniazdka wymagającego chmury.
1. Zadania poszczególnych elementów
Whisper tworzy tekst z nagrania. Lokalny agent konwersacji Home Assistant dopasowuje obsługiwane zdania do działań. Piper generuje odpowiedź głosową. Satelita głosowy to osobne urządzenie z mikrofonem i głośnikiem, umieszczone na przykład w pokoju. Każdy element ma odrębne zadanie i własne możliwe źródła błędów.
Hasło wybudzania może być rozpoznawane na satelicie przez microWakeWord albo na serwerze, na przykład przez openWakeWord. Rozpoznawanie serwerowe wymaga przesyłania dźwięku przez sieć lokalną jeszcze przed wykryciem hasła; zależnie od urządzenia wykrywanie aktywności głosowej sprawdza, czy trwa wypowiedź, i ogranicza ten strumień. Stwierdzenie „dźwięk jest przesyłany dopiero po haśle” nie jest więc uniwersalne. Angielskie hasło wybudzania nie narzuca języka kolejnych poleceń.

2. Dobór sprzętu na podstawie pomiarów
Nazwa modelu nie gwarantuje czasu odpowiedzi. Znaczenie mają jakość mikrofonu, hałas, język, długość wypowiedzi i równoległe zadania. Mniejszy model Whisper wymaga mniej mocy obliczeniowej, lecz może częściej mylić nazwy. Pierwsze porównanie może obejmować dziesięć tych samych krótkich poleceń i dwa rozmiary modelu, z zapisem błędów transkrypcji oraz czasu oczekiwania.
Typowa implementacja faster-whisper korzysta z CPU lub obsługiwanych kart NVIDIA przez CUDA. Google Coral Edge TPU nie jest zamiennym akceleratorem tego rozwiązania. Przy zbyt wolnej transkrypcji możliwe jest przeniesienie usługi na wydajniejszy lokalny komputer. Dla ograniczonego zestawu poleceń domowych alternatywą jest Speech-to-Phrase, z większymi ograniczeniami dla swobodnej treści. Whisper pozostaje przydatny przy potrzebie otwartej transkrypcji.
3. Konfiguracja lokalnych usług i asystenta
- Sprawdzenie rodzaju instalacji: Home Assistant OS oferuje zarządzane aplikacje, wcześniej nazywane dodatkami. Home Assistant Container wymaga osobno uruchomionych usług głosowych. Dawna instalacja Supervised nie jest wspierana od Home Assistant 2025.12.
- Przygotowanie usług: W Home Assistant OS zainstalować i uruchomić Whisper oraz Piper, następnie dodać wykryte integracje Wyoming. Usługi zewnętrzne wymagają rzeczywistego adresu i skonfigurowanego portu. Wyoming łączy te usługi z Home Assistant; satelita ESPHome korzysta z integracji ESPHome.
- Utworzenie asystenta: W Ustawienia → Asystenci głosowi wybrać język, Home Assistant jako agenta konwersacji, Whisper do rozpoznawania mowy i Piper do odpowiedzi głosowej. Model i głos muszą pasować do języka i wymagają wcześniejszego pobrania.
- Udostępnienie jednej encji testowej: Przykładem jest lokalnie podłączona lampa z jednoznaczną nazwą i przypisanym obszarem. Encja reprezentuje pojedynczą funkcję lub stan w Home Assistant, na przykład stan włączenia lampy. Sama obecność encji nie pozwala jeszcze Assist sterować lampą.
- Najpierw tekst, potem głos: Proste polecenie tekstowe oddziela problemy nazw i udostępnienia od błędów mikrofonu oraz transkrypcji. Następnie sprawdzić to samo polecenie przez satelitę.
Usługi głosowe powinny działać w zaufanej sieci z ograniczoną dostępnością. Numer portu z przykładu nie oznacza zalecenia udostępnienia usługi w Internecie. Opcjonalny chmurowy agent konwersacji lub integracja urządzenia zmienia drogę danych i wymaga osobnej oceny przy założeniu całkowicie lokalnego przetwarzania.
4. ESP32-S3-BOX-3: konfiguracja właściwego urządzenia
BOX-3 nie jest dowolnie połączoną płytką ESP32. Mikrofony, kodeki audio, głośnik, pamięć i przyciski wymagają konfiguracji konkretnego wariantu. Ogólny plik YAML z arbitralnymi pinami I²S nie stanowi kompletnej instrukcji dla BOX-3.
Oficjalna instrukcja urządzenia Home Assistant opisuje instalację dla BOX, BOX-3 i BOX-Lite oraz odsyła do odpowiednich konfiguracji ESPHome. Po konfiguracji właściwego sprzętu muszą współdziałać Wi-Fi, integracja ESPHome, wybrany asystent i hasło wybudzania. Istniejąca konfiguracja urządzenia wymaga kopii zapasowej przed zmianą firmware.
Własna konstrukcja wymaga również połączenia sieciowego, prawidłowego szyfrowania API, wejścia i wyjścia audio oraz logiki rozpoczęcia i wznowienia nasłuchu. Samo use_wake_word: true nie tworzy pełnej pętli ciągłego nasłuchu ani automatycznie nie włącza microWakeWord na urządzeniu. Walidacja konfiguracji nie zastępuje testu mikrofonu i głośnika na rzeczywistym sprzęcie.
5. Rozpoznanie etapu powodującego błąd
- Brak aktywacji: Sprawdzić wyciszenie mikrofonu, miejsce rozpoznawania, wybrane hasło i połączenie satelity.
- Błędny tekst: Porównać jakość nagrania, odległość, język i model Whisper. Wzmocnienie zmieniać stopniowo; przesterowanie pogarsza rozpoznawanie.
- Poprawny tekst bez działania: Sprawdzić udostępnienie encji, nazwy, dodatkowe nazwy (aliasy), obszar i obsługiwane sformułowanie. Wbudowany agent korzysta ze wzorców zdań, które można rozszerzać własnymi zdaniami.
- Działanie bez słyszalnej odpowiedzi: Osobno sprawdzić wyjście Piper i drogę dźwięku do satelity. Działający mikrofon nie potwierdza działania głośnika.
Widok debugowania danego asystenta pomaga rozdzielić te etapy. Zapis konkretnego nieudanego żądania dostarcza lepszych wskazówek niż wymiana wszystkich elementów naraz.
Pytania i odpowiedzi
Czy sterowanie działa bez Internetu?
Po instalacji wymaganych modeli lokalny łańcuch głosowy może pracować bez Internetu. Nadal potrzebne są zasilanie, sieć lokalna, usługi głosowe i dostępne urządzenia. Próba z czasowo odłączonym Internetem oraz kilkoma znanymi poleceniami sprawdza to założenie w praktyce. Pobieranie, aktualizacje i urządzenia chmurowe mogą nadal wymagać Internetu.
Czy lokalne przetwarzanie oznacza brak nagrań?
Nie. Lokalność opisuje przede wszystkim miejsce przetwarzania. Dane diagnostyczne, nagrania, kopie zapasowe i dodatkowe integracje wymagają osobnej oceny. Fizyczny przełącznik wyciszenia mikrofonu i możliwa do prześledzenia droga danych uzupełniają konfigurację. Whisper i Piper nie gwarantują pełnej dostępności ani braku zapisanych danych.
Źródła
- www.home-assistant.io/voice_control/voice_remote_local_assistant/
- www.home-assistant.io/integrations/wyoming/
- www.home-assistant.io/voice_control/about_wake_word/
- contributors.home-assistant.io/os/installation-types/
- github.com/SYSTRAN/faster-whisper
- www.home-assistant.io/voice_control/s3_box_voice_assistant/
- esphome.io/components/voice_assistant/
- www.home-assistant.io/voice_control/troubleshooting/
- contributors.home-assistant.io/architecture/platform/voice/
Home Assistant bez chmury
- Zigbee2MQTT i ZHA: planowanie niezawodnej sieci Zigbee
- ESPHome i ESP32 w praktyce: Własne czujniki środowiskowe bez chmury
- Wykrywanie obecności 2.0: radary mmWave (LD2410/LD2450) w automatyzacji oświetlenia
- Lokalne sterowanie głosem w Home Assistant z Whisper i Piper
- WireGuard i Tailscale DMZ: Bezpieczny dostęp z zewnątrz do Home Assistant i własnych serwerów
- Lokalny system zarządzania energią: Integracja falowników PV i magazynów energii przez Modbus TCP


