Hi all, I have developed Ava (Android voice assistant). You can find it on Github here. It is intended for quickly and easily turning your existing Android wall panel (or that old phone sitting in your drawer) into a full featured voice assistant for Home Assistant.
A fork of my project by @knoop7 has already been posted here Turn Any Android 7-16 Device into a BLE Smart Home Control Panel, with lots of great additional dashboard related features, but if you’re looking for something slimmer thats fully open source and narrowly focused on just being a voice satellite and media player, whilst being capable of running behind your existing dashboard app then my original version may be for you.
Features:
- On device wake word support using the microWakeWord models (custom wake words not supported, yet!)
- Full integration with Home Assistant using the existing ESPHome API (the same as the Voice PE) including voice commands, announcements, conversations, timers and media playback
- Runs as a background service to augment your existing setup
Getting started:
- Ensure you have a working assist pipeline in Home Assistant, see here for further information.
- Install and run the app
- Click Start to start the voice satellite service, it will continue to run in the background until manually stopped
- Add the Android device to Home Assistant as an ESPHome device, either through auto-discovery or by manually adding using the device’s IP and port (default 6053) in the ESPHome integration (detailed instructions here). It should then be detected as a voice satellite and Home Assistant should guide you through the rest of the setup process.
Requires Android 8 or above.
Note that whilst it should work on any Android device running Android 8 or above with a usable mic and speakers this app is probably not suitable for your ‘daily driver’ mobile device.
The ESPHome integration/API requires that the device is reachable from Home Assistant, which requires an open port to be exposed on the device and the device being connected to the same network as Home Assistant. Additionally the app is constantly using the mic to listen for the wake word which brings the potential for privacy and resource usage issues (Android only allows system/OEM apps to use low power ‘passive’ listening). It should however work great for your ‘static’ Android devices that aren’t power constrained and always connected to your trusted local network.
This app is inspired by the great work being done on Linux Voice Assistant which formed the basis of the implementation, and shout out to this great script that I was previously using to run a Wyoming satellite under Termux on Android.
I have only done limited testing on a couple of Android devices and emulator, so would be grateful for any feedback. Additionally this is my first foray into Android development so any feedback on the code (or pull requests) will be happily received, I had to learn as I went.