On device Wake Word Detection - ESP32-S3

Hallo zusammen,

ich hatte mir vor einer Weile einen lokalen Sprachassistenten mit einem ESP32 gebastelt. Das hat damals mit diversen Anleitungen gut funktioniert.

Mittlerweile ist es möglich, dass das wake word direkt auf dem ESP32 erkannt wird. Das habe ich nun nach folgender Anleitung auch nachgebaut: https://smarthomecircle.com/How-to-setup-on-device-wake-word-for-voice-assistant-home-assistant

Mein Problem ist, dass es nicht funktioniert. Ich habe alles genau so gemacht wie in der Anleitung. Allerdings scheint es bei mir schon beim compilieren Probleme zu geben.
Das taucht im Log auf:

Compiling .pioenvs/esp32-s3-wake-word/src/esphome/components/i2s_audio/i2s_audio.o
Compiling .pioenvs/esp32-s3-wake-word/src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.o
Compiling .pioenvs/esp32-s3-wake-word/src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.o
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp: In member function 'void esphome::i2s_audio::I2SAudioMicrophone::start_()':
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::chan_mask' [-Wmissing-field-initializers]
   };
   ^
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::total_chan' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::left_align' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::big_edin' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::bit_order_msb' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::skip_msk' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp: In static member function 'static void esphome::i2s_audio::I2SAudioSpeaker::player_task(void*)':
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::chan_mask' [-Wmissing-field-initializers]
   };
   ^
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::total_chan' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::left_align' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::big_edin' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::bit_order_msb' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::skip_msk' [-Wmissing-field-initializers]

Beim Booten des ESP steht folgendes im Log:

Kann mir jemand sagen was das bedeutet?

Wirklich keiner? :hushed:
Kann mir nicht vorstellen dass ich der einzige bin der das versucht.

Hab was gefunden: https://community.home-assistant.io/t/esp32-s3-box3/638287/346?page=17

Hier ist die Rede von zu wenig RAM im System.

Ich habe 4 GB RAM und laut interner Anzeige von HA wird wärend des kompilirens auch max. 70% verwendet. :man_shrugging:

So, dann schreibe ich meinen Monolog mal weiter. :sweat_smile:

Hab auf ein anderes System mit mehr RAM gewechselt. Hat leider nichts gebracht. :pensive:

Ich verstehe einfach nicht warum bei mir Probleme beim compilieren auftauchen und bei anderen nicht. Es ist doch der gleiche Code!? :thinking:

Hallo, bei mir klappt es “on Device” auch nicht, Das Wakeword wird einfach nicht erkannt, ich habe daher wieder auf Homeassistant Cloud umgestellt. Ich habe derzeit noch keine Idee woran es liegt.

Hattest Du denn beim kompilieren die gleichen Fehlermeldungen wie ich?

Anscheinend haben auch Andere das gleiche Problem:
https://github.com/esphome/issues/issues/5605

Nein ist ganz komisch eigentlich alles durchgelaufen, aber wenn ich es auswähle erkennt er das wake word nicht

Es lag wohl am ESP32 Board. Was mich stutzig gemacht hat ist, dass im Log folgendes aufgetaucht ist:

[21:07:04][C][psram:020]: PSRAM:
[21:07:04][C][psram:021]: Available: NO

Obwohl das Board (S3 DevKitC 1 N8R2) einen PSRAM verbaut hat.

Hab ein anderes ESP32 Board (S3 DevKitC 1 N16R8) gekauft.
Und siehe da, es funktioniert! :grinning:

Übrigens, die Warnmeldungen beim kompilieren sind natürlich immer noch da, scheinen aber nicht zu stören.