← How-Tos
electronics 48 min ago ◯ 4 min read

Home Assistant Voice Preview Edition: Hardware, ESPHome Customization, and Wyoming Satellite Integration

home assistantesphomeesp32-s3wyoming protocolvoice assistantsmart home

Nabu Casa's Home Assistant Voice Preview Edition is the first voice satellite designed from the ground up to be both a polished consumer product and a fully open, ESPHome-flashable maker device at the same time. Unlike the DIY route of wiring your own microphone array and speaker to a bare ESP32-S3 dev board, Voice PE ships as a finished $69 puck with a real microphone array, echo cancellation chip, and a physical mute switch — and then hands you the entire ESPHome configuration to edit, extend, and reflash. If you're already running Home Assistant on a Raspberry Pi and want a local, hackable voice interface without building a satellite from scratch, this is the hardware to know.

What's Inside

ComponentDetail Main SoCESP32-S3, 16 MB flash, 8 MB octal PSRAM Audio front endXMOS XU316 DSP for acoustic echo cancellation, noise suppression, and automatic gain control MicrophonesDual-microphone array feeding the XMOS chip Audio outputInternal speaker plus a 3.5 mm stereo jack driven by a dedicated TI AIC3204 DAC at 48 kHz ControlsMultipurpose button, rotary volume dial, physical hardware mute switch that cuts mic power, multicolor LED ring Connectivity2.4 GHz Wi-Fi, Bluetooth 5.0, USB-C power (5V/2A), Grove expansion port CaseInjection-molded polycarbonate, 84 × 84 × 21 mm, 96 g

The hardware mute switch matters more than it looks: it physically disconnects microphone power rather than just flipping a software flag, which is the same design principle used in serious wearable and security electronics — a compromised firmware can't silently re-enable listening if the mic has no power to begin with.

Wyoming Protocol and Wake Word Processing

Voice PE doesn't do speech-to-text or intent recognition on-device. It captures audio, applies echo cancellation and noise suppression in the XMOS DSP, detects a wake word locally, and streams the resulting audio over the Wyoming protocol to your Home Assistant server, where openWakeWord, Whisper, and a chosen conversation agent do the heavy lifting. This is the same split used by DIY Wyoming satellites built on Raspberry Pi with self-hosted Whisper and Piper, but Voice PE's advantage is a purpose-tuned microphone and DSP path instead of a generic USB mic taped inside a project box — far-field wake-word accuracy is noticeably better than a bare INMP441 breakout wired to a dev board.

Because the whole pipeline runs on your own hardware — Voice PE for capture, your Home Assistant server for processing — you can choose entirely local speech recognition and a local LLM conversation agent, or point the "Assist" pipeline at a cloud provider like OpenAI or Anthropic for more capable conversation handling. Nothing about the hardware forces a cloud dependency; that choice lives entirely in your Home Assistant configuration.

Setup

  1. Connect Voice PE to a computer via USB-C and complete the guided setup wizard at my.home-assistant.io, which flashes the latest ESPHome firmware and joins it to your Wi-Fi.
  2. In Home Assistant, confirm the device appears under Settings > Devices & Services as an ESPHome integration entry, and assign it to the correct Area so Assist knows which room it's listening from.
  3. Under Settings > Voice Assistants, create or edit an Assist pipeline: choose your wake word engine, speech-to-text (local Whisper or cloud), a conversation agent, and text-to-speech (local Piper or cloud).
  4. Test end to end by saying the wake word and a simple command like "turn on the shop lights," then check the LED ring feedback states against the documented meanings (listening, processing, error) so you can diagnose issues at a glance later.

Customizing the ESPHome Configuration

Because Voice PE ships as an ESPHome device rather than a sealed appliance, you can pull its YAML configuration and edit it like any other ESPHome node. Common maker customizations include remapping the Grove port to drive an external status LED visible from across a shop, adding a BME280 for room temperature/humidity readings, or writing custom automations tied to the button and volume dial for functions beyond volume control — muting a specific media player, triggering a scene, or acting as a physical panic/emergency-stop announce button in a workshop context. Because it's still an ESP32-S3 under the hood, anything you already know from other ESPHome or Arduino ESP32-S3 projects (custom components, additional I2C sensors, external GPIO) applies directly.

One caveat: the XMOS audio pipeline and wake-word detection are tightly coupled to the stock firmware's audio component configuration. Heavy modification of the audio-handling YAML sections can degrade or break wake-word performance, so keep changes additive — new sensors, new automations, new GPIO uses — rather than rewriting the microphone or DSP configuration unless you're prepared to re-tune from scratch.

Where It Fits in a Maker's Home Assistant Setup

If you already have a Raspberry Pi running Home Assistant with Frigate, Zigbee2MQTT, and a handful of ESPHome sensors scattered around a house or shop, Voice PE slots in as the room-by-room voice interface without you needing to solve microphone acoustics yourself. It's a strong complement to a DIY Wyoming satellite build rather than a strict replacement: the DIY route still wins if you need a nonstandard form factor (embedded in furniture, a specific enclosure, battery power) or want to reuse hardware you already have on hand, while Voice PE wins on out-of-box audio quality and near-zero assembly time.