Skip to content

Latest commit

 

History

History
75 lines (48 loc) · 5.94 KB

README.md

File metadata and controls

75 lines (48 loc) · 5.94 KB

Onju Voice satellite

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 ESPHome config is to be able to use such a modded Nest Mini as a voice satellite in Home Assistant. Here's a small demo:

https://youtu.be/fuX6IYa79gA

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.

Features

  • wake word (including microWakeWord in an experimental phase), 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

Pre-requisites

  • Home Assistant 2024.7.0 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)

Installation instructions

Here is a video explaining how to perform the PCB "transplant". You can find some instructions for disassembly here.

To flash the Onju Voice for the first time, you have to do so BEFORE YOU PUT EVERYTHING BACK TOGETHER in the Google Nest Mini housing. Otherwise, you lose access to the USB port.

So, before connecting the board for the first time, hold down the BOOT switch on it and connect a USB cable to your computer. Use the ESPHome web installer to flash according to the config below.

Double check Wifi connection details, API encryption key and device name/friendly name to make sure you use your own.

After the device has been added to ESPHome, if auto discovery is turned on, the device should appear in Home Assistant automatically. Otherwise, check out this guide.

Notification sounds

Although the online MP3 files should work, downloading them implies some lag. It's far better to have them locally available.

  1. Create a folder named sounds in your config folder under www. You now have a config/www/sounds folder.
  2. Upload notification sounds in the folder (MP3 prefferable, to avoid encoding issues), e.g. error.mp3
  3. Replace the URL in the substitutions: section with your own URLs (e.g. http://homeassistant.local:8123/local/sounds/error.mp3). If your HA instance is available at http://homeassistant.local:8123/, then whatever you upload to the www folder is available at http://homeassistant.local:8123/local/

Credits

If you'd like to thank me for creating and maintaining this config, you can GithubSponsor