Hello, so I’ve been trying to turn off my wakeword/ use no wakeword after Voice assistant replies and have had no luck. I’m not sure if I’m just not using the right commands or if it’s even possible at this current time. I’m running H.A. 2024.11.2 on a raspberry pi 4 and off loaded Whisper, Piper, and Ollama3.2 to my server. I am using wyoming for future plans to integrate more satellites around my house. Essentially i’m trying to have a continues conversation without using the ake word every time, I originally started by trying to make an automation that was similar to the tapaction to start the mic.
But I cant seem to to get that to work, I spent probably about 6 days now trying different things, chat gpt has been meh and been researching like crazy, I can’t find anything that seems to work. Here are a few of the “Solutions” That I have found but none seem to have the command to just restart the pipeline/ reactivate Voice assistant.
ww.home-assistant. io/ voice_control/ voice_remote_local_assistant/ - helpful till it wasn’t, is there a page just for commands? services? hidden services or actions? I found a few (turning off services n such) while scripting in configuration.yaml over the gui that seems to be restrictive for scripts and automations. I honestly don’t know how many different commands Ive tried and different approaches and the best I got was to shutting services off, like whisper or the mic and any documentation I find seems to be out pf date or for an esp32
Here’s one of the many different attempts I’ve made, any help would be greatly appreciated.
continuous_conversation:
alias: Continuous Conversation
description: Continuous conversation without requiring repeated wake words.
mode: restart
sequence:
- alias: Start Session
service: conversation.process
data:
text: "How can I assist you today?"
- alias: Continuous Response Loop
repeat:
until:
- condition: state
entity_id: input_boolean.continuous_conversation
state: "off"
sequence:
- wait_for_trigger:
- platform: event
event_type: intent_received
- platform: state
entity_id: input_boolean.continuous_conversation
to: "off"
- choose:
- conditions:
- condition: template
value_template: >
{{ trigger.event.event_type == 'intent_received' }}
sequence:
- service: conversation.process
data_template:
text: >
{{ trigger.event.data.text }}
- delay:
seconds: 1
- service: assist_pipeline.assist
data:
entity_id: assist_satellite.assist_microphone
pipeline_id: preferred
start_listening: false # Explicitly stop listening first
- delay:
seconds: 0.5 # Short pause to ensure proper reset
- service: assist_pipeline.assist
data:
entity_id: assist_satellite.assist_microphone
pipeline_id: preferred
start_listening: true # Restart listening
- conditions:
- condition: state
entity_id: input_boolean.continuous_conversation
state: "off"
sequence:
- service: conversation.process
data:
text: "Goodbye! Have a great day!"
It should work by starting the conversation Wakeword Asks question
H.A. replies
H.A. reactivates as if the wakeword was spoken again
I ask question
H.A. replies
H.A. reactivates, doesn’t hear anything as if false activation
Here is another attempt, I was debating on downloading openWakeWords source code and seeing if I could modify that some how to add in a function to “use_wakeword = false/true” or something…
The automation “Restart Voice Pipeline After Speaking” (automation.restart_voice_pipeline_after_speaking ) has an unknown action: assist.pipeline_run .
When I run this automation
- alias: Restart Voice Pipeline After Speaking
description: "Automatically restart the voice pipeline after the assistant finishes speaking."
trigger:
- platform: event
event_type: tts-end
event_data:
engine: tts.piper_2
condition:
- condition: state
entity_id: assist_satellite.assist_microphone
state: listening
action:
- service: assist.pipeline_run
data:
pipeline: "01JDFTE249KXXSKXAYK1VZ401B"
start_stage: "intent"
input: "Listening for your next request..."
Any ideas why I can’t use the events in script but I can fire them?
I started looking into pipeline.py in the source code (core/homeassistant/components/assist_pipeline/pipeline.py) and I’m taking an interest in lines 1404 - 1489. I feel like this is a good place to inject a follow-up process to repeat from the stt stage after the wake word has been confirmed.
I have modified pipeline.py, manifest n such so it’s named assist_pipeline_follow_up. I then added the folder to custom components to try and get H.A. to use that pipeline instead but I can’t get it to replace Assist_pipeline. Any ideas?
LOL Right when I post this I got it to work, Had to power off the raspberry pi to hard reset H.A.
Unfortunately the mod didn’t work, but that’s ok I think I’m on the right track and can test now without reinstalling H.A.
I’ve spent countless hours attempting to replace wyoming with a modified version leaving me to modify assist_satellite as well, I figured things where going good when I couldn’t get assist_microphone to activate, I was mislead. This just turned out to be what I was trying to avoid, The default integration of assist_pipeline with no way to edit or remove it, I figured I’d play it smart by finding a way to disable this hidden foe. After many attempts and following the instructions described within the H.A. main frame, I have come up empty handed. Not with knowledge, but with results. The commands of “assist_pipeline: false” in the realm of configuration.yaml does not work leaving me to once again start from the beginning of a new way to approach this hidden gem of continuous conversation.
I shall start by acquiring a version without such integration’s hopefully allowing me to have full control of my modifications. I don’t know but I may have already achieved continuous conversation without knowing, only time will give the answers.