Use wakeword off after speaking?

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.

entity: assist_satellite.assist_microphone
tap_action:
  action: assist
  pipeline_id: preferred
  start_listening: true

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…

Configuration.yaml

script: !include script.yaml
input_boolean: !include input_boolean.yaml
automation: !include automation.yaml

script.yaml

alias: Continuous Conversation
description: Keeps the conversation open for follow-up intents.
mode: restart
variables:
  session_active: true
  timeout: 30  # Time in seconds before the session ends due to inactivity.
sequence:
  - alias: Start Session
    service: conversation.process
    data:
      text: "How can I assist you today?"

  - alias: Wait for Follow-Up
    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 }}
                - service: input_boolean.turn_on
                  target:
                    entity_id: input_boolean.continuous_conversation
                - delay: "{{ timeout }}"
                - service: input_boolean.turn_off
                  target:
                    entity_id: input_boolean.continuous_conversation
            - conditions:
                - condition: state
                  entity_id: input_boolean.continuous_conversation
                  state: "off"
              sequence:
                - service: conversation.process
                  data:
                    text: "Goodbye! Have a great day!"

input_boolean.yaml

input_boolean:
  continuous_conversation:
    name: Continuous Conversation
    initial: false

automation.yaml

automation:
  - alias: Start Continuous Conversation
    trigger:
      - platform: state
        entity_id: assist_satellite.assist_microphone
        from: "idle"
        to: "listening"
    action:
      - service: input_boolean.turn_on
        entity_id: input_boolean.continuous_conversation
      - service: script.continuous_conversation

Someone’s gunna reply with what I’m looking for and I’m gunna feel so stupid. :rofl:

I found this

And if I run and listen to events in dev tools I get

event_type: homeassistant.start_pipeline
data: {}
origin: REMOTE
time_fired: "2024-11-24T19:30:02.505854+00:00"
context:
  id: 01JDFTE249KXXSKXAYK1VZ401B
  parent_id: null
  user_id: 851700ad76af4411b6a362a56f038fdb

or

event_type: assist.pipeline_run
data: {}
origin: REMOTE
time_fired: "2024-11-24T19:31:04.394275+00:00"
context:
  id: 01JDFTFYJAT8AE9WSA39DHJEVE
  parent_id: null
  user_id: 851700ad76af4411b6a362a56f038fdb

But I get this error

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.

Captain’s log day 10,

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.