← Zpět na přehled
Chytrá domácnost5. června 2026

Hlasový asistent v Home Assistant: lokální wake word bez cloudu

Napsal: Karel

Hlasový asistent v Home Assistant: lokální wake word bez cloudu

Postavit si doma plně lokální hlasový asistent bez odesílání dat na cizí servery už není sci-fi — je to otázka pár hodin práce a Docker kontejnerů. Ukážeme ti, jak na to krok za krokem, od instalace přes nastavení vlastního probuzovacího slova až po provoz v praxi.

Když jsem před pár lety poprvé křičel „Hey Google" na reproduktor, ani mě nenapadlo, že jednou budu mít doma plně lokální hlasový asistent, který nepošle ani bajt dat na cizí server. Dnes to není sci-fi — je to reálné odpoledne práce a pár Docker kontejnerů. Pojďme si projít, jak to celé funguje a jak to nastavit od nuly.

smart home voice assistant raspberry pi microphone speaker setup desk

Jak to celé do sebe zapadá: Wyoming protokol jako lepidlo

Celá architektura stojí na Wyoming protokolu — jednoduchém TCP protokolu, který Home Assistant používá k propojení externích hlasových služeb. Funguje to tak, že každá část pipeline (rozpoznání wake wordu, převod řeči na text, převod textu na řeč) běží jako samostatná služba a HA s nimi komunikuje přes Wyoming.

V praxi to znamená tři komponenty:

  • openWakeWord — detekuje probuzovací slovo (wake word) a poslouchá na pozadí
  • Wyoming Whisper (faster-whisper) — převádí mluvenou řeč na text lokálně
  • Piper — generuje odpověď jako hlas

Každá z těchto služeb může běžet jako HA add-on (pokud máš Home Assistant OS) nebo jako Docker kontejner na libovolném stroji v síti. Já osobně preferuji Docker — mám větší kontrolu a můžu to provozovat odděleně od HA instance.

Základní compose.yaml pro Whisper vypadá takto:

whisper:
  container_name: whisper
  image: rhasspy/wyoming-whisper:latest
  restart: unless-stopped
  ports:
    - "10300:10300"
  volumes:
    - ./whisper-data:/data
  command: --model tiny-int8 --language cs

Model tiny-int8 je nejrychlejší, ale pokud má tvůj server trochu více výkonu, klidně zkus base-int8 — rozpoznávání bude znatelně přesnější. Pro češtinu stačí změnit --language en na --language cs.

Probuzovací slova: ok nabu, hey jarvis nebo vlastní jméno

wake word detection waveform audio visualization terminal screen

Detekci wake wordu zajišťuje openWakeWord. Instalace na Home Assistant OS je přímočará: Settings → Apps → openWakeWord → Install. Po spuštění aplikace se v Settings → Devices & services automaticky objeví Wyoming integrace — stačí potvrdit a hotovo.

Pokud běžíš bez HA OS, openWakeWord je dostupný také jako Docker kontejner naslouchající na portu 10400.

Výchozí wake words jsou ok nabu, hey jarvis a alexa. Já začínal s ok nabu čistě pro ověření, že vše funguje — a doporučuju to i tobě. Teprve potom jsem šel po vlastním wake wordu.

Vlastní wake word — konkrétní postup

Chceš, aby tvůj asistent reagoval na „Hej Domácnost" nebo třeba „Skynet"? Jde to. Z home-assistant-wakewords-collection si stáhneš .tflite soubor a zkopíruješ ho do správné složky:

cd ~/docker/wyoming
sudo curl -L -o ./openwakeword/Skynet.tflite \
  https://github.com/fwartner/home-assistant-wakewords-collection/raw/main/en/skynet/Skynet.tflite

Pak upravíš compose.yaml — změníš --preload-model 'hey_jarvis' na --preload-model 'Skynet' — a restartuješ kontejner:

docker compose restart openwakeword

V HA pak jdeš do Settings → Voice Assistants → tvůj asistent → Edit Streaming Wake Word a vybereš Skynet. Pokud používáš Wyoming satelit (fyzické zařízení s mikrofonem), .tflite soubor patří do složky wyoming-satellite/local/custom-wake-words/openWakeWord/ — a pak se automaticky objeví v nastavení satelitu.

Důležitá věc, na kterou jsem narazil: soubor musí mít správné pojmenování. Pokud se jmenuje emma.tflite, přejmenuj ho na emma_v0.1.tflite a v konfiguraci satelitu odkazuj jen na emma. Bez toho to prostě nenajde.

Upozornění: openWakeWord v současnosti funguje spolehlivě pouze pro anglická wake words, protože chybí dostatečné množství multi-speaker modelů v jiných jazycích. Pokud chceš česky pojmenované wake word, realisticky očekávej vyšší míru falešných poplachů.

Reálný provoz a na co si dát pozor

home assistant dashboard voice pipeline settings screenshot laptop

Největší překvapení pro mě bylo, jak moc záleží na výkonu serveru. Na starém Intel NUC s modelem tiny-int8 trvalo rozpoznání řeči 2–3 sekundy — použitelné, ale ne oslnivé. Po přechodu na base-int8 to bylo výrazně lepší, asi 1–1,5 sekundy. Pokud máš k dispozici GPU, faster-whisper s GPU průchodem to dostane pod půl sekundy — ale to je už jiná liga nasazení.

Praktická rada: nastav si monitoring Wyoming Whisper endpointu. Stačí jednoduchý ping skript nebo HA automatizace, která ti pošle notifikaci, pokud služba přestane odpovídat. Jinak na výpadek přijdeš až tak, že budeš křičet do místnosti a nic se nebude dít.

Jedna věc, která mě příjemně překvapila: Home Assistant nyní podporuje mapování dvou wake wordů na dvě různé pipeline. Takže teoreticky můžeš mít „Hey Jarvis" pro rychlé lokální příkazy a druhé slovo pro pipeline napojené na LLM. Já to zatím nemám ostré, ale plánuju to — přijde mi to jako elegantní řešení pro případy, kdy chceš „jen zhasnout světlo" versus „vysvětli mi, co se děje s elektřinou v domě".

Také počítej s tím, že naučit rodinu nové wake word dá čas. Vážně. „Proč nemůžu říct Hey Google?" je věta, kterou jsem doma slyšel měsíce.

Kam dál?

Lokální hlasový asistent v Home Assistantu je v roce 2026 reálně použitelný každodenní nástroj — ne jen hračka pro nadšence. Wyoming protokol dává celé architektuře flexibilitu, openWakeWord spolehlivou (i když anglicky optimalizovanou) detekci probuzení a Whisper překvapivě dobré rozpoznávání řeči i na skromném hardwaru.

Pokud začínáš, doporučuju tenhle postup: nejdřív rozjed celou pipeline s výchozím ok nabu, ověř, že funguje end-to-end, a teprve pak laď vlastní wake word a modely. Ušetříš si hodiny debugování.

A teď na tebe: máš doma už něco podobného rozjetého, nebo teprve plánuješ? Napiš do komentářů — zajímá mě hlavně, jak řešíte češtinu v rozpoznávání řeči. To je pořád místo, kde lokální řešení trochu kulhá.