Model setup recipes
Last updated
Building an ESPHome voice satellite: an ESP32-S3 microphone and wake word
The board detects the wake word; Home Assistant handles the speech itself.
ESPHome's voice_assistant streams microphone audio to Home Assistant, and micro_wake_word finds the wake word on the board itself. Adding both to the configuration behaves like a commercial satellite, using whichever microphone and speaker parts you choose.
When to build instead of buy
A commercial satellite bundles microphone and speaker, so setup is simple. Building your own lets you shape and place it per room, and costs less if you already own a board.
On the other hand, microphone sensitivity and speaker noise vary a lot by part. Build one first, listen to it, and add more only when it sounds right.

Choosing the board and parts
An ESP32-S3 board with PSRAM is the stable choice. Use an I2S microphone and an I2S amplifier board with a speaker, and the wiring stays simple.
Check the board's pinout first so the microphone and speaker do not share a pin. Weak or clipped audio is often power, so start by giving the board a solid USB supply.
Adding the wake word to the configuration
micro_wake_word is the component that detects the wake word on the board. Listing a model name makes ESPHome include it in the build, and detection starts with it after boot.
Only the first model in the list is enabled on first boot. With several listed, you can switch which one is active from Home Assistant.
micro_wake_word:
models:
- model: okay_nabu
Connecting to the voice pipeline
Once the board is added to Home Assistant it appears as a Wyoming1 service, and you can assign a pipeline2 under Voice assistants. The pipeline holds local transcription (for example Whisper) and synthesis (for example Piper) engines, so the satellite only moves audio.
To send the reply to a different speaker, route the output through a media_player. That is easier when the room already has a larger speaker.
Watch the resource limits first
Audio and voice components use a lot of the board's RAM3 and CPU4. Too many components can cause reboots or dropped replies, so start with the voice parts only and add one at a time.
Bluetooth in particular is known to cause trouble alongside audio components. If you also need a Bluetooth speaker, split the work across boards or use a wired speaker.

Terminology notes
Wyoming — The protocol Home Assistant and voice services use to exchange audio and text. It has no authentication or encryption, so it is used on trusted networks only.
Back to the textPipeline — A sequence of processing stages from input to output. Different models or tools may be used at each stage.
Back to the textSystem RAM — System memory that temporarily holds data while programs run.
Back to the textCPU — The central processor that runs the operating system and general-purpose instructions; in AI workloads it also handles tasks such as preprocessing and data movement.
Back to the text
Frequently asked questions
- What should you check first in this article?
- ESPHome's voice_assistant streams microphone audio to Home Assistant, and micro_wake_word finds the wake word on the board itself. Adding both to the configuration behaves like a commercial satellite, using whichever microphone and speaker parts you choose.
Read next
Local speech recognition & synthesis
A Home Assistant voice satellite that listens and answers without leaving the house
Local speech recognition & synthesis
Home Assistant voice announcements: speaking through the house with a Piper voice
Executable programs and extensions
Splitting speech off with Wyoming: moving transcription to another machine
Local speech recognition & synthesis
Piper in Korean: adding a ko_KR voice to Home Assistant
