LW IT Solutions
« Blog Overview /Smart Home/Tutorials / Lokalne sterowanie głosem w Home Assistant z...
This post in other languages:

Lokalne sterowanie głosem w Home Assistant z Whisper i Piper

Część 4 z 6 serii Home Assistant bez chmury

Lokalne sterowanie głosem w Home Assistant z Whisper i Piper
Spis treści
  1. 1. Architektura rozwiązania: Potok głosowy Wyoming
  2. 2. Instalacja dodatków Whisper i Piper krok po kroku
  3. 3. Konfiguracja potoku Assist krok po kroku
  4. 4. Podsumowanie i wartość architektoniczna
  5. Źródła

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.
Diagram do artykułu: Wykrywanie słowa wybudzającego (openWakeWord…, Rozpoznawanie mowy, Rozpoznawanie intencji …
6 elementów artykułu w skrócie: Wykrywanie słowa wybudzającego (openWakeWord…, Rozpoznawanie mowy, Rozpoznawanie intencji, Synteza mowy ….

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:

  1. 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-int8 lub base dla serwerów opartych wyłącznie na CPU (Raspberry Pi 4/5) bądź medium dla systemów z akceleracją GPU lub modułami Google Coral TPU.
  2. 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-medium dla języka polskiego) i uruchomić usługę.
  3. 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 port 10200).

3. Konfiguracja potoku Assist krok po kroku

Po zintegrowaniu silników przetwarzania należy skonfigurować spójny potok asystenta głosowego:

  1. Utworzenie potoku głosowego: W sekcji Ustawienia > Asystenci głosowi > Dodaj potok należy nadać precyzyjną nazwę, np. Lokalny Assist - Polski.
  2. 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.
  3. 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 Nabbu lub Hey 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.

Home Assistant bez chmury

  1. Zigbee2MQTT vs. ZHA: Budowa bezawaryjnej sieci Mesh w Home Assistant
  2. ESPHome i ESP32 w praktyce: Własne czujniki środowiskowe bez chmury
  3. Presence Detection 2.0: Radary mmWave (LD2410/LD2450) w automatyzacji oświetlenia
  4. Lokalne sterowanie głosem w Home Assistant z Whisper i Piper
  5. WireGuard i Tailscale DMZ: Bezpieczny dostęp z zewnątrz do Home Assistant i własnych serwerów
  6. Lokalny system zarządzania energią: Integracja falowników PV i magazynów energii przez Modbus TCP
Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Napisanie komentarza

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

ALL ARTICLES & CATEGORIES

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (12) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (47) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (25) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (16) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Śledź tę kategorię przez RSS