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

Spis treści
Chmurowe asystenty głosowe, takie jak Amazon Alexa, Google Assistant czy Apple Siri, opierają się na zdalnych serwerach w zakresie detekcji aktywności głosowej, automatycznego rozpoznawania mowy (ASR) oraz przetwarzania języka naturalnego (NLP). Zależność ta generuje opóźnienia, powoduje wrażliwość na awarie internetu i budzi poważne wątpliwości dotyczące prywatności w związku z ciągłym nasłuchem otoczenia. Wdrożenie w pełni lokalnej architektury sterowania głosem w systemie Home Assistant przy użyciu protokołu Wyoming – łączącej mechanizm OpenAI Whisper dla rozpoznawania mowy (STT) oraz Piper dla syntezy mowy (TTS) – umożliwia wykonywanie komend głosowych w czasie poniżej sekundy, całkowicie w obrębie sieci lokalnej.
1. Architektura rozwiązania: Potok głosowy Wyoming
Lokalne przetwarzanie głosu w Home Assistant funkcjonuje jako modułowy, odseparowany potok, w którym strumienie audio są przetwarzane sekwencyjnie bez zapytań do zewnętrznych API:
- Wykrywanie słowa wybudzającego (openWakeWord / microWakeWord): Lekkie modele nieustannie analizują sygnał z mikrofonu na lokalnych satelitach sprzętowych (np. układach ESP32-S3), aby aktywować potok po wykryciu słowa kluczowego.
- Rozpoznawanie mowy (Whisper): Pakiety audio są przesyłane strumieniowo przez protokół Wyoming do lokalnego kontenera Whisper, który transkrybuje mowę na ustrukturyzowany tekst.
- Rozpoznawanie intencji (Home Assistant Assist): Silniki przetwarzania języka naturalnego dopasowują transkrybowany tekst do zdefiniowanych encji, stref i aliasów automatyzacji.
- Synteza mowy (Piper): Ciąg odpowiedzi jest zamieniany na naturalnie brzmiący sygnał audio przez silnik Piper i strumieniowany z powrotem do głośnika satelity.
2. Instalacja dodatków Whisper i Piper krok po kroku
Wdrożenie lokalnych usług głosowych wymaga zainstalowania dedykowanych dodatków kontenerowych w środowisku Home Assistant OS lub nadzorowanym Dockerze:
- Instalacja dodatku Whisper: W sekcji Ustawienia > Dodatki > Sklep z dodatkami należy wyszukać i zainstalować dodatek Whisper. W konfiguracji trzeba wybrać odpowiedni rozmiar modelu:
tiny-int8lubbasedla serwerów opartych wyłącznie na CPU (Raspberry Pi 4/5) bądźmediumdla systemów z akceleracją GPU lub modułami Google Coral TPU. - Instalacja dodatku Piper: Po wyszukaniu i zainstalowaniu dodatku Piper, w zakładce konfiguracji należy wybrać preferowany neuronowy model głosu (np.
pl_PL-darkman-mediumdla języka polskiego) i uruchomić usługę. - Konfiguracja integracji Wyoming: W sekcji Ustawienia > Urządzenia i usługi > Dodaj integrację należy wyszukać Wyoming Protocol i dodać zarówno usługę Whisper (domyślny port
10300), jak i Piper (domyślny port10200).
3. Konfiguracja potoku Assist krok po kroku
Po zintegrowaniu silników przetwarzania należy skonfigurować spójny potok asystenta głosowego:
- Utworzenie potoku głosowego: W sekcji Ustawienia > Asystenci głosowi > Dodaj potok należy nadać precyzyjną nazwę, np.
Lokalny Assist - Polski. - Przypisanie lokalnych silników: Jako silnik mowy na tekst (STT) należy wybrać Whisper, jako agenta konwersacyjnego Home Assistant, a jako silnik tekstu na mowę (TTS) Piper.
- Aktywacja lokalnego słowa wybudzającego: W przypadku lokalnej detekcji słowa kluczowego należy wybrać openWakeWord jako silnik wybudzania i wskazać słowo aktywujące (np.
Okay NabbulubHey Jarvis).
Produkcyjny kod YAML dla satelity ESPHome
W celu zbierania dźwięku i strumieniowania odpowiedzi bez użycia sprzętu chmurowego, satelita głosowy ESP32-S3 (np. ESP32-S3-BOX-3 lub Atom Echo) może zostać skonfigurowany przy użyciu poniższego kodu ESPHome:
esphome:
name: "voice-satellite-livingroom"
friendly_name: "Living Room Voice Satellite"
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
api:
encryption:
key: "GENERATE_YOUR_KEY_HERE"
i2s_audio:
- id: i2s_in
i2s_lrclk_pin: GPIO4
i2s_bclk_pin: GPIO5
- id: i2s_out
i2s_lrclk_pin: GPIO15
i2s_bclk_pin: GPIO16
microphone:
- platform: i2s_audio
id: sat_mic
i2s_audio_id: i2s_in
i2s_din_pin: GPIO6
adc_type: external
pdm: false
speaker:
- platform: i2s_audio
id: sat_speaker
i2s_audio_id: i2s_out
i2s_dout_pin: GPIO17
voice_assistant:
id: va_pipeline
microphone: sat_mic
speaker: sat_speaker
use_wake_word: true
noise_suppression_level: 2
auto_gain: 31dBFS
volume_multiplier: 2.0
4. Podsumowanie i wartość architektoniczna
Co da się osiągnąć dzięki temu poradnikowi: Wdrożenie w pełni autonomicznej, lokalnej architektury sterowania głosem w systemie Home Assistant z wykorzystaniem protokołu Wyoming, silnika STT Whisper, silnika TTS Piper oraz satelitów sprzętowych opartych na ESPHome.
Wynikająca z tego wartość: Interakcja głosowa w inteligentnym domu staje się całkowicie niezależna od zewnętrznych serwerów chmurowych. Prywatne rozmowy oraz telemetria akustyczna pozostają ściśle odizolowane w sieci lokalnej, co eliminuje ryzyko profilowania i pozyskiwania danych. Ponadto rezygnacja z zewnętrznego routingu obniża opóźnienia wykonania komend do poziomu poniżej sekundy i gwarantuje 100-procentową dostępność sterowania głosem podczas awarii połączenia z internetem.
Źródła
Home Assistant bez chmury
- Zigbee2MQTT vs. ZHA: Budowa bezawaryjnej sieci Mesh w Home Assistant
- ESPHome i ESP32 w praktyce: Własne czujniki środowiskowe bez chmury
- Presence Detection 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