Add wyoming satellite support for assist_satellite.start_conversation and assist_satellite.ask_question#149149
Add wyoming satellite support for assist_satellite.start_conversation and assist_satellite.ask_question#149149RemyRoux wants to merge 10 commits intohome-assistant:devfrom
Conversation
|
Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍 |
|
Hey there @balloob, @synesthesiam, mind taking a look at this pull request as it has been labeled with an integration ( Code owner commandsCode owners of
|
|
Why does the PR delete a bunch of comments and whitespace? |
|
Sorry for that, I've reverted. Let me add some unit tests as well. |
| preannounce_media_id=preannounce_media_id, | ||
| ) | ||
|
|
||
| async def async_internal_ask_question( |
There was a problem hiding this comment.
As the name itself implies, this is an internal method and should not be overridden in subclasses.
There was a problem hiding this comment.
Ah true, I was wondering about this. Do you know why it was marked as internal?
|
Is there a tentative timeline for this? |
Remove obsolete files Add compiled files Add compiled files Remove not needed changes
|
I really appreciate the effort taken to make this PR. I'm hesitant to move forward with large changes to the Wyoming Satellite code given that we're moving to the Linux Voice Assistant codebase for Raspberry Pi based satellites going forward. This new codebase reuses the ESPHome message set, which means there's no longer a need to keep separate code paths in HA core for ESP and RPi satellites. |
|
I agree, I've been using the LVA approach and abandoned this project. I'm closing this PR. |
Proposed change
This PR introduces full
AssistSatelliteEntitysupport for the Wyoming integration. This allows users with Wyoming-based voice satellites (like those running on a Raspberry Pi) to use the standardassist_satellite.announce,assist_satellite.start_conversation,and assist_satellite.ask_questionservices, bringing them to feature parity with other advanced satellite platforms.This is achieved by creating a new
WyomingAssistSatelliteentity that inherits fromAssistSatelliteEntityand acts as the primary entity for a Wyoming satellite device. This entity:Translates pipeline events from Home Assistant into Wyoming protocol events, allowing the physical device to react to wake word detection, STT, and TTS stages.
Handles service calls by streaming audio via
ffmpegfor announcements.Remotely triggers the satellite's listening mode by sending a
Detectionevent, which seamlessly starts the audio stream for conversations.Correctly implements the
ask_questionservice, which involves modifying the pipeline's end stage at runtime toSTTand using anasyncio.Futureto reliably return the transcribed text to the calling script or automation.This change significantly enhances the capabilities of Wyoming satellites, making them first-class citizens in the Home Assistant voice ecosystem.
Type of change
Additional information
Checklist
ruff format homeassistant tests)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest.requirements_all.txt.Updated by running
python3 -m script.gen_requirements_all.To help with the load of incoming pull requests: