Introduction
Ever since voice satellites were introduced to Home Assistant, people wanted to use good microphones and speakers for this purpose, but not many were really available. In a valiant attempt to free a Google Nest Mini (2nd generation) from its privacy ignoring overlords, Justin Alvey created Onju Voice, a drop-in replacement PCB for the Mini, with an ESP32-S3 at its heart, capable of some pretty funky stuff.
The purpose of this project is to be able to use such a modded Nest Mini as a voice satellite in Home Assistant. Here's a small demo:
Features
- Wake word, push to talk, on-demand and continuous conversation support
- Response playback
- Audio media player
- Service exposed in HA to start and stop the voice assistant from another device/trigger
- Visual feedback of the wake word listening/audio recording/success/error status via the Mini's onboard top LEDs
- Uses all 3 of the original Mini's touch controls as volume controls and a means of manually starting the assistant and setting the volume
- Uses the original Mini's microphone mute button to prevent the wake word engine from starting unintendedly
- Automatic continuous touch control calibration
Prerequisites
- Home Assistant 2024.7.x or newer
- A voice assistant configured in HA with STT and TTS in a language of your choice
- ESPHome 2024.7.3 or newer
Known issues and limitations
- You have to be able to retrofit an Onju Voice PCB inside a 2nd generation Google Nest Mini.
- ESPHome currently can't use the I2S bus for both listening and playing simultaneously. As such, if you want to stream audio (like a TTS notification) to the Onju, you need to stop wake word listening first
- The version for
microWakeWord
is in BETA and probably full of bugs (please report them if you find any)
License
The PCB is NOT my work and has its own license. This repository only refers to the ESPHome config that makes the board a HA-compatible voice satellite.
The config is distributed under the MIT License. See LICENSE
for more information.
The notification sounds used are under CC BY 4.0 ATTRIBUTION license.
Credits
- Obviously, a huge thanks to Justin Alvey (@justLV) for the excellent Onju Voice project
- Many thanks to Mike Hansen (@synesthesiam) for the relentless work he's put into Year of the Voice at Home Assistant
- Thanks to @kahrendt for microWakeWord
- Thanks to @gnumpi for migrating the ESPHome
media_player
component to ESP-IDF - Thanks to Klaas Schoute for helping with a creating a microsite for the automatic installation of this config (still experimental)
- Thanks to the ESPHome Discord server members for both creating the most time saving piece of software ever and for helping out with some kinks with the config - in particular @jesserockz, @ssieb, @Hawwa, @BigBobba
- Thanks to UNIVERSFIELD for the notification sounds (licensed CC BY 4.0 ATTRIBUTION, slightly shortened and converted to mono)