esp32.diy

ESP-Assistant: ESP32-S3 Voice Assistant for Home Assistant

Oct 13, 2026 · 4 min read

Intermediate 95 stars 10 forks — No license Updated 2025-12-03

VoicePuck assembled and viewed from the top, showing the clean puck form factor

TL;DR ESP-Assistant turns an ESP32-S3 N16R8 into a standalone voice assistant puck that connects to Home Assistant using ESPHome. It supports on-device wake words, multiple timers, and exposes diagnostics and sensor entities directly to your HA dashboard.
What you need
  • ESP32-S3 N16R8
  • INMP441 microphone
  • MAX98357A audio amplifier
  • WS2812B LEDs (x3)
  • 40mm 32-ohm headset speaker
BoardESP32-S3 N16R8
FrameworkESPHome / esp-idf (v4)
IntegrationHome Assistant
Wake Wordsokay_nabu, hey_jarvis, alexa
DifficultyIntermediate
3D PrintBody and cover files included

What You Will Build

You will build a compact, puck-shaped voice assistant — called the VoicePuck by the project author — powered by an ESP32-S3. Once flashed and on your network, it appears in Home Assistant as a full device with entities for diagnostics, request and response sensors, and timer information. You can speak a wake word, issue a voice command, and have Home Assistant act on it, all without any cloud dependency for the on-device wake word detection.

The project has gone through four iterations. Version 4, the current one, uses the esp-idf framework and adds support for continuous conversation. Earlier versions are simpler to compile on low-end machines but may occasionally stall. Starting with Version 4 is the recommended path for a stable, capable result.

VoicePuck bottom view revealing the internal wiring layout\2
VoicePuck bottom view revealing the internal wiring layout
VoicePuck with dark perforated cover (right) shown next to a Google Home Mini (left) for size comparison\2
VoicePuck with dark perforated cover (right) shown next to a Google Home Mini (left) for size comparison
VoicePuck with a thin wood veneer cover that lets the WS2812B LEDs shine through\2
VoicePuck with a thin wood veneer cover that lets the WS2812B LEDs shine through
All ESP-Assistant entities as they appear on the Home Assistant device page\2
All ESP-Assistant entities as they appear on the Home Assistant device page

What You Need

Hardware

A schematic is included in the project's media folder and is based on a well-known ESP32-S3 voice assistant circuit. The author notes that specific pins were changed from the reference schematic to achieve reliable operation, so follow the included schematic rather than a generic one.

The project also includes 3D print files for the puck body and cover. The author used a resin printer. Cover options shown include a perforated dark cover and a thin wood veneer, both of which let the WS2812B status light shine through.

Software

Typical use cases

Whole-Home Voice Control

Place a VoicePuck in each room to give every space its own always-on voice interface for lights, switches, and scenes in Home Assistant.

Kitchen Timer Assistant

The built-in multi-timer support and audio alert make the VoicePuck a practical hands-free kitchen tool for setting and tracking multiple cooking timers.

Local Voice Pipeline

Because wake word detection runs on the device itself, sensitive voice data never leaves your home network for the first processing stage.

HA Diagnostics Sensor

The request and response entities exposed to Home Assistant make it easy to build dashboards or automations that log or react to voice commands.

How It Works

The firmware is written as an ESPHome YAML configuration. ESPHome compiles it into a binary and flashes it to the ESP32-S3. Once running, the device listens continuously for a wake word using on-device machine learning — no audio is sent to the cloud for this step. When the wake word is detected, the voice pipeline in Home Assistant takes over to process the spoken command.

Version 4 adds continuous conversation mode, meaning after a response you can speak a follow-up command without repeating the wake word. The three WS2812B LEDs give visual feedback about the assistant state. Entities exposed to Home Assistant include diagnostic data, the last request heard, the last response given, and active timer details — useful for debugging and for building automations around assistant activity.

Build and Flash Steps

1. Prepare your ESPHome folder

Navigate to your Home Assistant config/esphome directory and create a folder named sounds. Place any timer-finish sound file(s) in that folder. The README notes this is the one compile-time dependency in the project — without it you will not hear an audio cue when a timer ends.

2. Clone or copy the YAML file

Copy the project's YAML file into your config/esphome folder.

3. Configure the wake word

Open the YAML file and find the substitutions block. Set the micro_wake_word_model variable to whichever wake word you want to use:

micro_wake_word_model: okay_nabu

The three available options are okay_nabu, hey_jarvis, and alexa.

4. Set your WiFi credentials

Make sure your secrets.yaml contains your network name and password. The YAML references them like this:

ssid: !secret wifi_ssid
password: !secret wifi_password

5. Compile and flash via ESPHome

Open the ESPHome dashboard in Home Assistant, pick the new configuration, and start the build. The author warns that Version 4 is heavy to compile. If the build fails on a low-end machine, clean the build directory and try again — already-compiled object files are cached, so each attempt makes more progress until the full binary is ready.

6. Check the solder pad for 5V

Before powering up, check the ESP32-S3 board for the 5V output pad. The author ran into a silent failure where the speaker and LEDs did not work because this pad was not bridged. Add a small solder blob to the pads to enable the 5V pin as an output. This is a common gotcha with this board variant.

Ideas to Extend It and Known Limitations

Ways to extend

Limitations to keep in mind

Verdict

ESP-Assistant is a well-documented, maker-friendly path to a private, local voice assistant that slots cleanly into an existing Home Assistant setup. The included schematic, 3D print files, and honest notes about compile-time quirks make it approachable for anyone comfortable with ESPHome and basic soldering. The 5V solder-pad gotcha and the heavy v4 build are the main friction points, but the payoff is a polished, puck-shaped device with solid Home Assistant integration.

Sources

github.comAshaiRey/ESP-Assistant — repository & README

Facts in this article come from the project's public README and GitHub metadata at the time of writing. Images belong to their respective owners and link back to the original source.