ESP32 "No wake word detected" filling up logs

I recently received an ESP32 Lyrat board but I’m pulling out my hair trying to get it to work with openwakeword in ESPHome.

The minute the device boots, the logs are filled with this section repeated multiple times. Any idea what’s going on? It looks like no wake word is being detected so it ends the pipeline before I can say anything to trigger the wake word.

[19:25:49][E][voice_assistant:646]: Error: no_wake_word - No wake word detected
[19:25:49][D][voice_assistant:512]: Signaling stop...
[19:25:49][D][voice_assistant:412]: State changed from STARTING_PIPELINE to STOP_MICROPHONE
[19:25:49][D][voice_assistant:418]: Desired state set to IDLE
[19:25:49][D][voice_assistant:412]: State changed from STOP_MICROPHONE to IDLE
[19:25:49][D][voice_assistant:519]: Event Type: 2
[19:25:49][D][voice_assistant:609]: Assist Pipeline ended
[19:25:49][D][voice_assistant:412]: State changed from IDLE to START_PIPELINE
[19:25:49][D][voice_assistant:418]: Desired state set to START_MICROPHONE
[19:25:49][D][voice_assistant:512]: Signaling stop...
[19:25:49][D][voice_assistant:118]: microphone not running
[19:25:49][D][voice_assistant:200]: Requesting start...
[19:25:49][D][voice_assistant:412]: State changed from START_PIPELINE to STARTING_PIPELINE
[19:25:49][D][voice_assistant:519]: Event Type: 1
[19:25:49][D][voice_assistant:522]: Assist Pipeline running
[19:25:49][D][voice_assistant:118]: microphone not running
[19:25:49][D][voice_assistant:519]: Event Type: 9
[19:25:49][D][voice_assistant:118]: microphone not running
[19:25:49][D][voice_assistant:519]: Event Type: 0
[19:25:49][E][voice_assistant:646]: Error: no_wake_word - No wake word detected
[19:25:49][D][voice_assistant:512]: Signaling stop...
[19:25:49][D][voice_assistant:412]: State changed from STARTING_PIPELINE to STOP_MICROPHONE
[19:25:49][D][voice_assistant:418]: Desired state set to IDLE
[19:25:49][D][voice_assistant:412]: State changed from STOP_MICROPHONE to IDLE
[19:25:49][D][voice_assistant:519]: Event Type: 2
[19:25:49][D][voice_assistant:609]: Assist Pipeline ended
[19:25:49][D][voice_assistant:412]: State changed from IDLE to START_PIPELINE
[19:25:49][D][voice_assistant:418]: Desired state set to START_MICROPHONE
[19:25:49][D][switch:016]: 'Use wake word' Turning OFF.
[19:25:49][D][switch:055]: 'Use wake word': Sending state OFF
[19:25:49][D][voice_assistant:412]: State changed from START_PIPELINE to STOP_MICROPHONE
[19:25:49][D][voice_assistant:418]: Desired state set to IDLE
[19:25:49][D][voice_assistant:412]: State changed from STOP_MICROPHONE to IDLE
[19:25:49][D][voice_assistant:512]: Signaling stop...
[19:25:49][D][voice_assistant:519]: Event Type: 1
[19:25:49][D][voice_assistant:522]: Assist Pipeline running
[19:25:49][D][voice_assistant:519]: Event Type: 9
[19:25:49][D][voice_assistant:519]: Event Type: 0
[19:25:49][E][voice_assistant:646]: Error: no_wake_word - No wake word detected

Here is my esphome yaml

esphome:
  name: bedroom-speaker
  on_boot:
     - priority: -100
       then:
         - wait_until: api.connected
         - delay: 1s
         - if:
             condition:
               switch.is_on: use_wake_word
             then:
               - voice_assistant.start_continuous:

esp32:
  board: esp-wrover-kit
  framework:
    type: arduino
    version: recommended

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key:

ota:
  password: 

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

captive_portal:

i2c:
  sda: GPIO18
  scl: GPIO23

external_components:
  - source: github://pr#3552
    components: [es8388]
    refresh: 0s

es8388:

microphone:
  - platform: i2s_audio
    id: mic
    adc_type: external
    i2s_din_pin: GPIO35
    pdm: false
    bits_per_sample: 32bit

i2s_audio:
  i2s_lrclk_pin: GPIO25
  i2s_bclk_pin: GPIO5

media_player:
  - platform: i2s_audio
    name: speaker
    id: media_player_speaker
    dac_type: external
    i2s_dout_pin: GPIO26
    mode: stereo

switch:
  - platform: gpio
    pin: GPIO21
    name: "AMP Switch"
    id: amp_switch
    restore_mode: ALWAYS_ON

  - platform: template
    name: Use wake word
    id: use_wake_word
    optimistic: true
    restore_mode: RESTORE_DEFAULT_OFF
    entity_category: config
    on_turn_on:
      - lambda: id(assist).set_use_wake_word(true);
      - if:
          condition:
            not:
              - voice_assistant.is_running
          then:
            - voice_assistant.start_continuous
    on_turn_off:
      - voice_assistant.stop
      - lambda: id(assist).set_use_wake_word(false);   

voice_assistant:
  microphone: mic
  use_wake_word: false
  noise_suppression_level: 2
  auto_gain: 31dBFS
  media_player: media_player_speaker
  id: assist

I have the same issue.

[23:48:13][D][main:262]: An automation to perform when the assist pipeline is started.
[23:48:13][D][voice_assistant:519]: Event Type: 9
[23:48:18][D][voice_assistant:519]: Event Type: 0
[23:48:18][D][voice_assistant:519]: Event Type: 2
[23:48:18][D][voice_assistant:609]: Assist Pipeline ended
[23:48:18][D][voice_assistant:412]: State changed from STREAMING_MICROPHONE to IDLE
[23:48:18][D][voice_assistant:418]: Desired state set to IDLE
[23:48:18][D][voice_assistant:412]: State changed from IDLE to START_PIPELINE
[23:48:18][D][voice_assistant:418]: Desired state set to START_MICROPHONE

Hi there,

I followed your blog post for the device, and having the same results as mentioned. The logs are spammed with ‘No Wake Word’ detected and I cant seem to get any audio out of it when I do a TTS event.

Its the Lyra 4.3 board (confirmed it looks like yours)
Any hints?

[18:32:29][D][voice_assistant:124]: microphone not running
[18:32:29][I][app:102]: ESPHome version 2023.11.6 compiled on Feb 22 2024, 18:20:54
[18:32:29][C][wifi:559]: WiFi:
[18:32:29][C][wifi:391]:   Local MAC: 94:B9:7E:65:C2:B8
[18:32:29][C][wifi:396]:   SSID: [redacted]
[18:32:29][C][wifi:397]:   IP Address: 192.168.10.120
[18:32:29][C][wifi:399]:   BSSID: [redacted]
[18:32:29][C][wifi:400]:   Hostname: 'voice-speaker'
[18:32:29][C][wifi:402]:   Signal strength: -62 dB ▂▄▆█
[18:32:29][C][wifi:406]:   Channel: 4
[18:32:29][C][wifi:407]:   Subnet: 255.255.255.0
[18:32:29][C][wifi:408]:   Gateway: 192.168.10.254
[18:32:29][C][wifi:409]:   DNS1: 192.168.10.254
[18:32:29][C][wifi:410]:   DNS2: 90.207.238.97
[18:32:29][D][voice_assistant:529]: Event Type: 9
[18:32:29][D][voice_assistant:124]: microphone not running
[18:32:29][C][logger:416]: Logger:
[18:32:29][C][logger:417]:   Level: DEBUG
[18:32:29][C][logger:418]:   Log Baud Rate: 115200
[18:32:29][C][logger:420]:   Hardware UART: UART0
[18:32:29][D][voice_assistant:529]: Event Type: 0
[18:32:29][E][voice_assistant:656]: Error: no_wake_word - No wake word detected
[18:32:29][D][voice_assistant:522]: Signaling stop...
[18:32:29][D][voice_assistant:422]: State changed from STARTING_PIPELINE to STOP_MICROPHONE
[18:32:29][D][voice_assistant:428]: Desired state set to IDLE
[18:32:30][D][voice_assistant:422]: State changed from STOP_MICROPHONE to IDLE
[18:32:30][C][i2c.arduino:053]: I2C Bus:
[18:32:30][C][i2c.arduino:054]:   SDA Pin: GPIO18
[18:32:30][C][i2c.arduino:055]:   SCL Pin: GPIO23
[18:32:30][C][i2c.arduino:056]:   Frequency: 50000 Hz
[18:32:30][C][i2c.arduino:059]:   Recovery: bus successfully recovered
[18:32:30][I][i2c.arduino:069]: Results from i2c bus scan:
[18:32:30][I][i2c.arduino:075]: Found i2c device at address 0x10
[18:32:30][D][voice_assistant:529]: Event Type: 2
[18:32:30][D][voice_assistant:619]: Assist Pipeline ended
[18:32:30][D][voice_assistant:422]: State changed from IDLE to START_PIPELINE
[18:32:30][D][voice_assistant:428]: Desired state set to START_MICROPHONE
[18:32:30][D][voice_assistant:522]: Signaling stop...
[18:32:30][D][voice_assistant:124]: microphone not running
[18:32:30][D][voice_assistant:206]: Requesting start...
[18:32:30][D][voice_assistant:422]: State changed from START_PIPELINE to STARTING_PIPELINE
[18:32:30][D][voice_assistant:529]: Event Type: 1
[18:32:30][D][voice_assistant:532]: Assist Pipeline running
[18:32:30][D][voice_assistant:124]: microphone not running
[18:32:30][C][switch.gpio:068]: GPIO Switch 'AMP Switch'
[18:32:30][C][switch.gpio:091]:   Restore Mode: always ON
[18:32:30][C][switch.gpio:031]:   Pin: GPIO21
[18:32:30][D][voice_assistant:529]: Event Type: 9
[18:32:30][D][voice_assistant:124]: microphone not running
[18:32:30][C][template.switch:068]: Template Switch 'Use wake word'
[18:32:30][C][template.switch:091]:   Restore Mode: restore defaults to OFF
[18:32:30][C][template.switch:057]:   Optimistic: YES
[18:32:30][D][voice_assistant:529]: Event Type: 0
[18:32:30][E][voice_assistant:656]: Error: no_wake_word - No wake word detected
[18:32:30][D][voice_assistant:522]: Signaling stop...
[18:32:30][D][voice_assistant:422]: State changed from STARTING_PIPELINE to STOP_MICROPHONE

Is the wake word switch on?
If so, can you turn it off then back on?
What microphone are you using? Its not running.

Its this board… ES8288 codec

https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/en/latest/design-guide/dev-boards/get-started-esp32-lyrat.html

Reset it … and after a few minutes of spamming, it settles down to something else in the logs

[21:14:48][I][app:102]: ESPHome version 2024.2.0 compiled on Feb 22 2024, 21:00:00
[21:14:48][C][wifi:577]: WiFi:
[21:14:48][C][wifi:409]:   Local MAC: 94:B9:7E:65:C2:B8
[21:14:48][C][wifi:414]:   SSID: [redacted]
[21:14:48][C][wifi:415]:   IP Address: 192.168.10.120
[21:14:48][C][wifi:417]:   BSSID: [redacted]
[21:14:48][C][wifi:418]:   Hostname: 'voice-speaker'
[21:14:48][C][wifi:420]:   Signal strength: -63 dB ▂▄▆█
[21:14:48][C][wifi:424]:   Channel: 4
[21:14:48][C][wifi:425]:   Subnet: 255.255.255.0
[21:14:48][C][wifi:426]:   Gateway: 192.168.10.254
[21:14:48][C][wifi:427]:   DNS1: 192.168.10.254
[21:14:48][C][wifi:428]:   DNS2: 90.207.238.97
[21:14:48][C][logger:447]: Logger:
[21:14:48][C][logger:448]:   Level: DEBUG
[21:14:48][C][logger:449]:   Log Baud Rate: 115200
[21:14:48][C][logger:451]:   Hardware UART: UART0
[21:14:48][C][i2c.arduino:053]: I2C Bus:
[21:14:48][C][i2c.arduino:054]:   SDA Pin: GPIO18
[21:14:48][C][i2c.arduino:055]:   SCL Pin: GPIO23
[21:14:48][C][i2c.arduino:056]:   Frequency: 50000 Hz
[21:14:48][C][i2c.arduino:059]:   Recovery: bus successfully recovered
[21:14:48][I][i2c.arduino:069]: Results from i2c bus scan:
[21:14:48][I][i2c.arduino:075]: Found i2c device at address 0x10
[21:14:48][C][switch.gpio:068]: GPIO Switch 'AMP Switch'
[21:14:48][C][switch.gpio:091]:   Restore Mode: always ON
[21:14:48][C][switch.gpio:031]:   Pin: GPIO21
[21:14:48][C][template.switch:068]: Template Switch 'Use wake word'
[21:14:48][C][template.switch:091]:   Restore Mode: restore defaults to OFF
[21:14:48][C][template.switch:057]:   Optimistic: YES
[21:14:48][C][esp32_touch:073]: Config for ESP32 Touch Hub:
[21:14:48][C][esp32_touch:074]:   Meas cycle: 8.19ms
[21:14:48][C][esp32_touch:075]:   Sleep cycle: 27.31ms
[21:14:48][C][esp32_touch:095]:   Low Voltage Reference: 0.5V
[21:14:48][C][esp32_touch:115]:   High Voltage Reference: 2.7V
[21:14:48][C][esp32_touch:135]:   Voltage Attenuation: 0V
[21:14:48][C][esp32_touch:251]:   IIR Filter DISABLED
[21:14:48][C][esp32_touch:260]:   Touch Pad 'Play'
[21:14:48][C][esp32_touch:261]:     Pad: T8
[21:14:48][C][esp32_touch:262]:     Threshold: 1000
[21:14:48][C][esp32_touch:260]:   Touch Pad 'Set'
[21:14:48][C][esp32_touch:261]:     Pad: T9
[21:14:48][C][esp32_touch:262]:     Threshold: 1000
[21:14:48][C][esp32_touch:260]:   Touch Pad 'Vol Up'
[21:14:48][C][esp32_touch:261]:     Pad: T7
[21:14:48][C][esp32_touch:262]:     Threshold: 1000
[21:14:48][C][esp32_touch:260]:   Touch Pad 'Vol Down'
[21:14:48][C][esp32_touch:261]:     Pad: T4
[21:14:48][C][esp32_touch:262]:     Threshold: 600
[21:14:48][C][captive_portal:088]: Captive Portal:
[21:14:48][C][mdns:115]: mDNS:
[21:14:48][C][mdns:116]:   Hostname: voice-speaker
[21:14:49][C][ota:096]: Over-The-Air Updates:
[21:14:49][C][ota:097]:   Address: voice-speaker.local:3232
[21:14:49][C][ota:100]:   Using Password.
[21:14:49][C][ota:103]:   OTA version: 2.
[21:14:49][C][api:139]: API Server:
[21:14:49][C][api:140]:   Address: voice-speaker.local:6053
[21:14:49][C][api:142]:   Using noise encryption: YES
[21:14:49][C][audio:203]: Audio:
[21:14:49][C][audio:225]:   External DAC channels: 2
[21:14:49][C][audio:226]:   I2S DOUT Pin: 26
[21:14:57][D][voice_assistant:521]: Event Type: 0
[21:14:57][D][voice_assistant:521]: Event Type: 2
[21:14:57][D][voice_assistant:611]: Assist Pipeline ended
[21:14:57][D][voice_assistant:414]: State changed from STREAMING_MICROPHONE to IDLE
[21:14:57][D][voice_assistant:420]: Desired state set to IDLE
[21:14:57][D][voice_assistant:414]: State changed from IDLE to START_PIPELINE
[21:14:57][D][voice_assistant:420]: Desired state set to START_MICROPHONE
[21:14:57][D][voice_assistant:202]: Requesting start...
[21:14:57][D][voice_assistant:414]: State changed from START_PIPELINE to STARTING_PIPELINE
[21:14:57][D][voice_assistant:435]: Client started, streaming microphone
[21:14:57][D][voice_assistant:414]: State changed from STARTING_PIPELINE to STREAMING_MICROPHONE
[21:14:57][D][voice_assistant:420]: Desired state set to STREAMING_MICROPHONE
[21:14:57][D][voice_assistant:521]: Event Type: 1
[21:14:57][D][voice_assistant:524]: Assist Pipeline running
[21:14:57][D][voice_assistant:521]: Event Type: 9
[21:15:07][D][voice_assistant:521]: Event Type: 0
[21:15:07][D][voice_assistant:521]: Event Type: 2
[21:15:08][D][voice_assistant:611]: Assist Pipeline ended
[21:15:08][D][voice_assistant:414]: State changed from STREAMING_MICROPHONE to IDLE

I never found the root cause of this issue but as @RichardPar said, the simplest workaround is to turn off the use_wake_word switch, wait a second and then turn it back on.

For those who haven’t seen my project, here is the article which includes the esphome yaml config.

Thanks!

I changed the yaml a bit to reset the component… do you know of a method to record the audio on the HomeAssistant side? or a way to verify that audio is getting though?

Much appreciated
Richard

ESP32_Touch kills everything.