18f29c52dad2e1a926feff2110b51c981caaefab
Updates the MediaPlayerEntity to handle the saving and loading logic. The entity's internal volume state is now initialized from the saved preferences.volume_level. When a volume change command is received from Home Assistant, the handle_message method now updates the Preferences object and calls save_preferences() to persist the new volume level to disk.
Linux Voice Assistant
Experimental Linux voice assistant (LVA) for Home Assistant that uses the ESPHome protocol.
Runs on Linux aarch64 and x86_64 platforms. Tested with Python 3.13 and Python 3.11.
Supports announcments, start/continue conversation, and timers.
See the tutorial to build a satellite using a Raspberry Pi Zero 2 W and a ReSpeaker 2Mic HAT.
What's working:
- This fork introduces the ability to use Wyoming OpenWakeWord (OWW) instead of MicroWakeWord (MWW).
- Now supports ALSA, PulseAudio and PipeWire playback backends using the updated
linux_voice_assistant/mpv_player.py. - You can choose between ALSA, PulseAudio, or PipeWire with either MWW or OWW simply by enabling the matching systemd service file.
- You can change the OWW wake word within HA after the VLA is registered. (defaults to the wake word defind in the systemd config file)
- Home Assistant successfully detects the LVA when Avahi is setup according to the tutorial.
Installation
Install system dependencies (apt-get):
libportaudio2(forsounddevice)build-essential(forpymicro-features)libmpv-dev(forpython-mpv)mpv(for testing)libmpv-dev(for building spidev)
Clone and install project:
git clone https://github.com/OHF-Voice/linux-voice-assistant.git
cd linux-voice-assistant
script/setup
Running
Use script/run or python3 -m linux_voice_assistant
See --help for more options.
Connecting to Home Assistant
- In Home Assistant, go to "Settings" -> "Device & services"
- Click the "Add integration" button
- Choose "ESPHome" and then "Set up another instance of ESPHome"
- Enter the IP address of your voice satellite with port 6053
- Click "Submit"
ToDo:
- Implement echo-cancellation filter in PipeWire. (Improves wake word detection when audio is being played)
- Merge jianyu-li's PR from source project to add mute switch function in this branch
Configure LVA to advertise on Zeroconf/mDNS via Avahi for HA to auto detect (in progress)- Implement a single LVA systemd unit file that can be addapted using profiles and drop-ins (in progress)
- Implement OWW model validation checks and error handling so that a bad model doesn't crash OWW
- Make the selection of the right ALSA ar PA device more scripted
Make a Docker of the projectAlready done in parent repo.- Add sensor entity that displays which wake word engine is being used for HA
- Could this be an DEB package?
- Implement Stop for OWW
- Stretch goal: create a smart installer full of validation and sanity checks
Description
Voice satellite for Home Assistant using the ESPHome protocol with Optional OpenWakeWord
10 MiB
Languages
Python
98.5%
Shell
1.5%