So I got one of these integrated and “running” in HA, all works fine.
Except I can use it once quite flawlesly, it reacts and executes what ever it is i asked it to do quite nicely… but then it stops reacting to the wake word.
I’ve tried all 3 options for “Finished speaking detection”, but the only way to get it to work again is to reboot it (the atom)…
I’ve tried playing with different wake words but it’s always the same result, not sure where else to look, I applreciate any help as always!!
What firmware version are you using?
Look at what is happening in the logs in esphome.
The micro_wake_word service should start after the voice_assistant pipeline ends
Another bit of information… if i press and release the button, it reacts to the wakeword one time, as if it had been power cycled…
Firmware: 2025.2.2 (Mar 16 2025, 10:00:52)
here’s the log:
[10:57:26][D][voice_assistant:642]: Event Type: 10
[10:57:26][D][voice_assistant:651]: Wake word detected
[10:57:26][D][voice_assistant:642]: Event Type: 3
[10:57:26][D][voice_assistant:656]: STT started
[10:57:26][D][light:036]: 'M5Stack Atom Echo fdda2c' Setting:
[10:57:26][D][light:059]: Red: 0%, Green: 0%, Blue: 100%
[10:57:26][D][light:109]: Effect: 'Slow Pulse'
[10:57:27][D][voice_assistant:642]: Event Type: 11
[10:57:27][D][voice_assistant:805]: Starting STT by VAD
[10:57:29][D][voice_assistant:642]: Event Type: 12
[10:57:29][D][voice_assistant:809]: STT by VAD end
[10:57:29][D][voice_assistant:506]: State changed from STREAMING_MICROPHONE to STOP_MICROPHONE
[10:57:29][D][voice_assistant:512]: Desired state set to AWAITING_RESPONSE
[10:57:29][D][voice_assistant:506]: State changed from STOP_MICROPHONE to STOPPING_MICROPHONE
[10:57:29][D][light:036]: 'M5Stack Atom Echo fdda2c' Setting:
[10:57:30][D][light:059]: Red: 0%, Green: 0%, Blue: 100%
[10:57:30][D][light:109]: Effect: 'Fast Pulse'
[10:57:30][D][esp-idf:000]: I (3165671) I2S: DMA queue destroyed
[10:57:30][D][voice_assistant:506]: State changed from STOPPING_MICROPHONE to AWAITING_RESPONSE
[10:57:30][D][voice_assistant:642]: Event Type: 4
[10:57:30][D][voice_assistant:670]: Speech recognised as: " Turn on the basement fan"
[10:57:31][D][voice_assistant:642]: Event Type: 5
[10:57:31][D][voice_assistant:675]: Intent started
[10:57:31][D][voice_assistant:642]: Event Type: 6
[10:57:31][D][voice_assistant:642]: Event Type: 7
[10:57:31][D][voice_assistant:698]: Response: "Turned on the fan"
[10:57:31][D][light:036]: 'M5Stack Atom Echo fdda2c' Setting:
[10:57:31][D][light:051]: Brightness: 100%
[10:57:31][D][light:059]: Red: 0%, Green: 0%, Blue: 100%
[10:57:31][D][light:109]: Effect: 'None'
[10:57:31][D][voice_assistant:642]: Event Type: 8
[10:57:31][D][voice_assistant:720]: Response URL: "http://192.168.1.64:8123/api/tts_proxy/eNP5jIx9aalkSTRUXtSF7g.wav"
[10:57:31][D][voice_assistant:506]: State changed from AWAITING_RESPONSE to STREAMING_RESPONSE
[10:57:31][D][voice_assistant:512]: Desired state set to STREAMING_RESPONSE
[10:57:31][D][media_player:073]: 'M5Stack Atom Echo fdda2c' - Setting
[10:57:31][D][media_player:080]: Media URL: http://192.168.1.64:8123/api/tts_proxy/eNP5jIx9aalkSTRUXtSF7g.wav
[10:57:31][D][media_player:086]: Announcement: yes
[10:57:31][D][light:036]: 'M5Stack Atom Echo fdda2c' Setting:
[10:57:31][D][light:051]: Brightness: 100%
[10:57:31][D][light:059]: Red: 0%, Green: 0%, Blue: 100%
[10:57:31][D][speaker_media_player:420]: State changed to ANNOUNCING
[10:57:31][D][voice_assistant:642]: Event Type: 2
[10:57:31][D][voice_assistant:736]: Assist Pipeline ended
[10:57:31][D][esp-idf:000][ann_read]: I (3167066) HTTP_CLIENT: Body received in fetch header state, 0x3ffec06c, 1840
[10:57:31][D][ring_buffer:034][ann_read]: Created ring buffer with size 6000
[10:57:31][D][speaker_media_player.pipeline:114]: Reading WAV file type
[10:57:31][D][ring_buffer:034][speaker_task]: Created ring buffer with size 1920
[10:57:31][D][esp-idf:000][speaker_task]: I (3167128) I2S: queue free spaces: 5
[10:57:31][D][esp-idf:000][speaker_task]: I (3167133) I2S: DMA Malloc info, datalen=blocksize=960, dma_buf_count=4
[10:57:31][D][i2s_audio.speaker:116]: Started Speaker
[10:57:32][W][script:060]: Script 'start_wake_word' is already running! (mode: single)
[10:57:32][D][speaker_media_player:420]: State changed to IDLE
[10:57:32][D][voice_assistant:506]: State changed from STREAMING_RESPONSE to IDLE
[10:57:32][D][voice_assistant:512]: Desired state set to IDLE
[10:57:32][D][voice_assistant:506]: State changed from IDLE to START_MICROPHONE
[10:57:32][D][voice_assistant:512]: Desired state set to START_PIPELINE
[10:57:32][D][voice_assistant:223]: Starting Microphone
[10:57:32][D][voice_assistant:506]: State changed from START_MICROPHONE to STARTING_MICROPHONE
[10:57:32][D][esp-idf:000][speaker_task]: I (3168651) I2S: DMA queue destroyed
[10:57:33][D][esp-idf:000]: I (3168657) I2S: DMA Malloc info, datalen=blocksize=1024, dma_buf_count=4
[10:57:33][D][i2s_audio.speaker:129]: Stopped Speaker
[10:57:33][D][voice_assistant:506]: State changed from STARTING_MICROPHONE to START_PIPELINE
[10:57:33][D][voice_assistant:506]: State changed from START_PIPELINE to STOP_MICROPHONE
[10:57:33][D][voice_assistant:512]: Desired state set to IDLE
[10:57:33][D][light:036]: 'M5Stack Atom Echo fdda2c' Setting:
[10:57:33][D][light:051]: Brightness: 60%
[10:57:33][D][light:059]: Red: 0%, Green: 100%, Blue: 100%
[10:57:33][D][voice_assistant:506]: State changed from STOP_MICROPHONE to STOPPING_MICROPHONE
[10:57:33][D][esp-idf:000]: I (3168703) I2S: DMA queue destroyed
[10:57:33][D][voice_assistant:506]: State changed from STOPPING_MICROPHONE to IDLE
If you read the feedback from this thread, you are not alone with this problem.
Judging by the logs, the code was poorly tested.
The script script:060]: Script 'start_wake_word' is already running! (mode: single) is executed together with the speaker’s work and this probably leads to unwanted collisions.
I’m using a simpler code. I removed everything related to LEDs and timers, added a beep, continued conversation and rearranged the blocks a bit. But my version has its problems too, so I won’t recommend it
And the end of each pipeline looks like this:
[19:25:45][D][voice_assistant:736]: Assist Pipeline ended
[19:25:46][D][micro_wake_word:399]: Resetting buffers and probabilities
[19:25:46][D][micro_wake_word:194]: State changed from IDLE to START_MICROPHONE
[19:25:46][D][micro_wake_word:107]: Starting Microphone
[19:25:46][D][micro_wake_word:194]: State changed from START_MICROPHONE to STARTING_MICROPHONE
[19:25:46][D][micro_wake_word:194]: State changed from STARTING_MICROPHONE to DETECTING_WAKE_WORD
I don’t know what to advise you. If you are familiar with esphome, you can experiment. Maybe you should try changing the script mode to restart.
Otherwise it’s better to wait.
I don’t know when they are going to fix the problem but the one device that I burnt this on one device and it is totally useless now. I hope this issue gets the attention of the developer soon. Does anybody know how to reburn the older firmware in.
That is the flaw with this revision. It was very poorly tested and anybody who burns their firmware to this revision will experience the same results. I am trying to find revision 25.11.1 to burn, this at least works