Wyoming vs. ESPHome - My experience #219
Replies: 6 comments 9 replies
|
Hi, yeah this project is still experimental and far from finished and perfect but if you follow the documentation it is working. I am wondering why you run into problems with libmpv. In the documentation it should be installed here: https://github.com/OHF-Voice/linux-voice-assistant/blob/main/docs/install_application.md#b-bare-metal The new LVA has built in wake word detection. If you compare LVA with something you should add the installation for openwakeword in order to compare it. Then it should be almost the same. The PiCompose Base Image can be used for non specified hardware: https://github.com/florian-asche/PiCompose/?tab=readme-ov-file#usage But the Respeaker 2-MicHat should also work for your 4-MicHat. It is currently just untested. But in recap yeah i am also currently thinking about how can we make this better. I was thinking about building packages. But you dont even know half of all the stuff that can go wrong. I had to put so much effort in the 2MicHat. I just joined this project to make it better. I am working on a PiCompose Version in combination with the FutureProofHome Hardware which has open source firmware and opensource hardware on all ends. No stupid errors with USB connection on the Respeaker Lite. |
|
@MichaelaMer this is as mention a new bleeding-edge experimental project in very early development stage (as in even way before pre-alpha in maturity and not recommended to beginners who want a simple solution with low maintenance). If you instead were looking to try a relatively more mature solution then you should really buy the Home Assistant Voice Preview Edition (or alternativly the FutureProofHomes Satellite1 Dev Kit) that by default have ESP32-based hardware running customized ESPHome firmware which have plug-and-play configuration flows and pipelines compared to this project:
Again even that is advertised as a ”preview” product so it can also only be said to be mature relatively speaking however that have at least have the benefit of both more developers and more development time. Regardless, that is the recommended solution to get started with with native voice control Home Assistant and is what newcomers should try first: That is, unless you are purposefully trying to make it hard on yourself because you like the extra challenge and want to help contribute to this brand new experimental project 😜 |
I use mini PC and USB-mic. The transition from Wyoming-satellite to LVA was very simple and painless (I use docker method of course) |
|
Usb mics even if you turn up the gain to max are generally engineered to work on that near-field of broadcast style. The el cheapo max9814 boards from adafruit or even cheaper aliexpress clones (exactly the same but support adafruit if you can) have a preamp and 1st stage analogue AGC. That if you plug into any soundcard also el cheapo CM108 it considerably boosts range to give you a single mic on a budget. |
|
@MichaelaMer I had the previous wyoming-satellite running on my pi zero 2's and transitioned over to LVA when I got it working some time ago. I don't exactly follow all of the advice here because some things are - in my opinion - overcomplicated when there are simpler options available. However, I recently reinstalled one of my pi's from scratch and got LVA working without an issue now that I know how to do it. As follows: Dependencies to install: Note that Pipewire is a good step up from PulseAudio and pipewire-pulse provides compatibility with PulseAudio applications. If you can avoid it, don't install PulseAudio! Clone the repo I know that the docs recommend to start LVA with the docker entrypoint script but I use script/run and command-line parameters instead. It just feels more natural that way, and it still works perfectly. For input device I use the device name but for output I can use "pipewire" and then route the audio to my usb soundcard using a Pipewire config snippet. That allows me to use other audio apps on the device and Pipewire handles all of the tricky stuff. In summary - LVA is doable bare-metal and I would say that actually it is a better platform than Wyoming Satellite, even though it still has a few features to catch up on. This project in particular is a bit all over the place if I may say so, but there are a plenty of devs and users interested in it that I'm confident it will get to a good place eventually. Dyaxler and mricharz both have very interesting forks of the project on the go which I'm keeping an eye on. |
|
@LLBR88 Thank you for your write up. I got it running bare bone a few days ago (see install log in the thread) . I am sure LVA has it's advantages over Wyoming, but as a fairly new HA user (I was previously running my self-programmed home environment) I failed to understand why one would kill an old working protocol when the new environment is still rough around the edges. But if that's the way it is, fine with me. I am grateful for the work all the devs put in, so I just follow their lead :) |
Uh oh!
There was an error while loading. Please reload this page.
This isn’t meant as a complaint. Quite the opposite. I’m grateful for the developers who built Home Assistant and the surrounding ecosystem. What follows is simply a log of what I ran into while trying to get a satellite voice assistant running.
Years ago I built my own home automation environment called Lumosur. It handled lights, sensors, and even voice commands. It served me well for a long time. A few weeks ago I decided to retire it and move everything over to Home Assistant.
The transition took some effort. The learning curve is real. Still, with some persistence (and a helpful AI assistant), I eventually got a solid setup running. The microphone and speaker were attached directly to the Home Assistant hardware. Speech-to-text ran through Whisper on another machine, a local LLM handled responses, and everything talked over Wyoming. It worked.
Yesterday I thought it would be a good time to add a voice assistant satellite.
I started by pulling the sources from GitHub. Right away I noticed the deprecation notice. Installation failed because of Python version conflicts. After some searching I found someone else with the same issue. The advice they received was simple: the old Wyoming satellite was considered dead, and the recommended path now was ESPHome.
Alright then. I switched directions.
I checked the Linux-Voice-Assistant repository but couldn’t immediately find clear installation instructions. Back to the AI helper. Eventually I pulled the repository from:
https://github.com/OHF-Voice/linux-voice-assistant.gitI configured my old ReSpeaker 4-mic array, installed the recommended dependencies, and watched ffmpeg pull what felt like half the Linux multimedia stack along with it. Nearly a gigabyte later the system started.
Sort of.
The first problem appeared immediately:
pa.PA_CONTEXT_READY Assertion ErrorSo it expected PulseAudio. I would have preferred sticking with plain ALSA, but fine—installed PulseAudio and tried again.
Next attempt: Home Assistant actually detected the satellite. It heard the wake word. Then it stopped with:
Cannot find libmpv in the usual placesFair enough. Installed mpv.
Another run produced:
microwakeword.py:207: RuntimeWarning: invalid value encountered in castThat looked like an issue with the microphone data coming from the ReSpeaker array. After some tinkering I managed to get past that.
Then the next log entry appeared:
The strange part: running mpv directly from the shell played audio just fine.
After about an hour of experimenting with different workarounds, I decided to stop for the night.
This morning I started fresh and went looking for a cleaner path. Eventually I landed on Florian Asche’s PiCompose project. After a couple of tries I managed to load the provided image into rpi-imager.
Then I hit another wall.
The setup options were built around specific hardware: 2MicHat, ReSpeaker Lite, and a few others. My situation is much simpler. I have a Raspberry Pi 4 and a USB microphone. That’s all I want to use.
At this point I had spent roughly five hours on the problem.
The takeaway, at least from my perspective, looks something like this:
The old Wyoming satellite was straightforward. Installation was simple and could be configured to use a wide range of microphones and audio hardware. Tons of YT videos are available to help. The newer ESPHome-based approach appears far more flexible and powerful. At the same time it feels much harder to get started with unless you happen to own the exact hardware the guides assume and find the link to click on.
That leaves people like me in an odd spot. I’m sitting here with a perfectly functional Raspberry Pi and a USB microphone, yet I can’t get a satellite running. For newcomers who watch a YouTube video showing how “easy” it is to install a Wyoming satellite, the experience might also feel be a real bummer. I wonder – was it really .. well .. smart … to abandon the “old” way before the new system is debugged and available for most environments?
All reactions