Hi everyone,
I am troubleshooting a very specific issue with ESPHome Voice Assistant + Home Assistant, and I would like to understand whether this is a known bug, a configuration conflict, or some limitation in the current integration.
Setup
- Board: ESP32-S3 N16R8
- Framework: esp-idf
- Audio hardware: I2S microphone + I2S amplifier / speaker
- Home Assistant: running in Docker
- Pipeline: Wyoming (faster-whisper) + DeepSeek + Edge TTS
What works perfectly
If I disable wake word and start the assistant manually from a physical button using voice_assistant.start, everything works correctly:
- microphone audio is clean
- speech-to-text works
- the LLM responds
- TTS plays back correctly through the speaker
So the hardware, network, audio path, and the general HA pipeline all seem to be fine.
The problem
As soon as I enable wake word mode, I get very strange behavior.
Minimal relevant config:
Yaml
micro_wake_word:
models:
- model: okay_nabu
voice_assistant:
microphone: board_mic
speaker: board_speaker
use_wake_word: true
Symptoms
- The Wake Word entity in Home Assistant is always unavailable
In the UI it permanently shows as unavailable with a red warning icon. - Home Assistant always creates exactly two copies of the assistant-related entities:
AssistAssist 2Wake wordWake word 2
- The number of duplicates does not keep growing endlessly.
I do not get 3, 4, 5 copies. It is always exactly two pairs. - The device does not react to the wake word at all.
Since the wake word entity is unavailable, I cannot tell whether background listening is actually considered active internally or not.
What I already tried
- fully removed the device and ESPHome integration from HA
- changed the device name in the firmware
- changed the static IP
- tried both server-side wake word and local
micro_wake_word - verified that the
okay_nabumodel downloads and loads successfully into PSRAM according to ESPHome logs - set the Assist pipeline as default in Home Assistant
Important observation
If use_wake_word: false, the entire system works correctly.
The issue only appears when wake word is enabled.
Question
Has anyone seen this specific behavior before?
In particular, I am trying to understand:
- Why would the wake word entity stay permanently unavailable even though the rest of the voice assistant pipeline works?
- Why does Home Assistant create exactly two assistant / wake word entities instead of one?
- Is this a known issue in ESPHome / Home Assistant when using
voice_assistanttogether withmicro_wake_word? - Could this be related to Home Assistant running in Docker, entity registry state, or some conflict between local wake word and the Assist pipeline?
I am especially interested in cases where:
- manual button start works perfectly
- wake word does not
- and the entities are duplicated in exactly this way
Any technical insight would be appreciated.