esphome / firmware

Holds firmware configuration files for projects that the ESPHome team provides.
https://esphome.io/projects
Apache License 2.0
126 stars 89 forks source link

Add a "Continuous conversation capability" to VA with the Box 3 #169

Closed jaymunro closed 3 months ago

jaymunro commented 4 months ago

Initially adding this to the wake-word firmware with the hope to extend it to the non-micro_wake_word firmware.

Adding a switch continuous_conversation Adding logic to use voice_assistant.start_continuous in micro_wake_word

Will yet need to add a timeout to automatically drop back to listening for a wake word

jaymunro commented 4 months ago

It is working in testing but need to research on how to add a timeout in there somewhere. Also, logic for stopping the continuous based on intent would be nice too.

jaymunro commented 4 months ago

Can anyone explain why - logger.log: "Hello World" doesn't work in [wake-word-voice-assistant/esp32-s3-box-3.yaml](https://github.com/jaymunro/esphome_firmware/blob/continuous-conversation/wake-word-voice-assistant/esp32-s3-box-3.yaml)`?

I have it in the code where I know for sure it is being executed. Everything else is logged from DEBUG and up, but no "Hello World", so I put it in the on_boot under esphome: but still no output.

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  name_add_mac_suffix: true
  platformio_options:
    board_build.flash_mode: dio
  project:
    name: esphome.voice-assistant
    version: "2.0"
  min_version: 2023.11.5
  on_boot:
    priority: 600
    then:
      - script.execute: draw_display
      - logger.log: "Hello World 3"
      - delay: 30s
      - logger.log: "Hello World 4"
      - if:
          condition:
            lambda: return id(init_in_progress);
          then:
            - lambda: id(init_in_progress) = false;
            - script.execute: draw_display

I'm trying to debug what is called when no voice is detected, i.e. [E][voice_assistant:651]: Error: stt-no-text-recognized - No text recognized so that I can stop the continuous VA with voice_assistant.stop and put it back into micro_wake_word.start

Adding a Hello world to my device's yaml under on_boot does work, but this is not helpful for the debugging.

@jesserockz, would you have any ideas? I'll also put this question in discord/dev for more exposure.

jaymunro commented 4 months ago

belay that. an upgrade to esphome 2024.2.1 appears to have resolved the matter

jaymunro commented 4 months ago

92fbcee also adds ability to timeout back to idle (listening for wake word) when in continuous mode using a script in restart mode with a wait inside.

jaymunro commented 3 months ago

changed name to continued_conversation in line with Google Assistant terminology.