|
ESPHome 2026.10.0-dev
|
#include <micro_wake_word.h>
Public Member Functions | |
| void | setup () override |
| void | loop () override |
| float | get_setup_priority () const override |
| void | dump_config () override |
| void | on_ota_global_state (ota::OTAState state, float progress, uint8_t error, ota::OTAComponent *comp) override |
| void | start () |
| void | stop () |
| bool | is_running () const |
| void | set_features_step_size (uint8_t step_size) |
| void | set_microphone_source (microphone::MicrophoneSource *microphone_source) |
| void | set_stop_after_detection (bool stop_after_detection) |
| void | set_task_stack_in_psram (bool task_stack_in_psram) |
| Trigger< std::string > * | get_wake_word_detected_trigger () |
| void | add_wake_word_model (WakeWordModel *model) |
| bool | add_runtime_model (std::unique_ptr< WakeWordModel > model) |
| Adds a runtime-downloaded wake word model. | |
| bool | remove_runtime_model (const std::string &model_id) |
| Removes a runtime-downloaded wake word model and frees its interpreter, arenas, and model buffer. | |
| WakeWordModel * | get_model_by_id (const std::string &model_id) |
| Returns the wake word model with the given id, or nullptr if none matches (compiled or runtime). | |
| std::vector< std::string > | get_runtime_model_ids () |
| Returns the ids of all runtime-downloaded models. Must be called from the main loop. | |
| uint8_t | get_features_step_size () const |
| Returns the feature step size (ms) the frontend is configured for. Runtime models must match it. | |
| void | add_vad_model (const uint8_t *model_start, uint8_t probability_cutoff, size_t sliding_window_size, size_t tensor_arena_size) |
| bool | get_vad_state () |
| std::vector< WakeWordModel * > | get_wake_words () |
Public Member Functions inherited from esphome::Component | |
| float | get_actual_setup_priority () const |
| void | set_setup_priority (float priority) |
| void | call () |
| virtual void | on_shutdown () |
| virtual void | on_safe_shutdown () |
| virtual bool | teardown () |
| Called during teardown to allow component to gracefully finish operations. | |
| virtual void | on_powerdown () |
| Called after teardown is complete to power down hardware. | |
| uint8_t | get_component_state () const |
| void | reset_to_construction_state () |
| Reset this component back to the construction state to allow setup to run again. | |
| bool | is_in_loop_state () const |
| Check if this component has completed setup and is in the loop state. | |
| bool | is_idle () const |
| Check if this component is idle. | |
| void | mark_failed () |
| Mark this component as failed. | |
| void | mark_failed (const LogString *message) |
| void | disable_loop () |
| Disable this component's loop. | |
| void | enable_loop () |
| Enable this component's loop. | |
| void | enable_loop_soon_any_context () |
| Thread and ISR-safe version of enable_loop() that can be called from any context. | |
| bool | is_failed () const |
| bool | is_ready () const |
| virtual bool | can_proceed () |
| bool | status_has_warning () const |
| bool | status_has_error () const |
| void | status_set_warning () |
| void | status_set_warning (const char *message) |
| void | status_set_warning (const LogString *message) |
| void | status_set_error () |
| void | status_set_error (const LogString *message) |
| void | status_clear_warning () |
| void | status_clear_error () |
| void | status_momentary_warning (const char *name, uint32_t length=5000) |
| Set warning status flag and automatically clear it after a timeout. | |
| void | status_momentary_error (const char *name, uint32_t length=5000) |
| Set error status flag and automatically clear it after a timeout. | |
| bool | has_overridden_loop () const |
| const LogString * | get_component_log_str () const ESPHOME_ALWAYS_INLINE |
| Get the integration where this component was declared as a LogString for logging. | |
| bool | should_warn_of_blocking (uint32_t blocking_time, uint32_t &threshold_ms_out) |
Public Member Functions inherited from esphome::ota::OTAGlobalStateListener | |
| virtual | ~OTAGlobalStateListener ()=default |
Protected Member Functions | |
| void | suspend_task_ () |
| Suspends the inference task. | |
| void | resume_task_ () |
| Resumes the inference task. | |
| bool | try_lock_models_ () |
| Parks the inference task at a safe point (or verifies it isn't running) so the model lists may be mutated from the main loop. | |
| void | unlock_models_ () |
| Releases the inference task parked by a successful try_lock_models_() call. | |
| void | set_state_ (State state) |
| bool | generate_features_ (const int16_t *audio_buffer, size_t samples_available, int8_t features_buffer[PREPROCESSOR_FEATURE_SIZE], size_t *processed_samples) |
| Generates a spectrogram feature from an input buffer of audio samples. | |
| void | process_probabilities_ () |
| Processes any new probabilities for each model. | |
| void | unload_models_ () |
| Deletes each model's TFLite interpreters and frees tensor arena memory. | |
| bool | update_model_probabilities_ (const int8_t audio_features[PREPROCESSOR_FEATURE_SIZE]) |
| Runs an inference with each model using the new spectrogram features. | |
Protected Member Functions inherited from esphome::Component | |
| friend | void::setup () |
| friend | void::original_setup () |
| void | set_component_source_ (uint8_t index) |
| Set where this component was loaded from for some debug messages. | |
| virtual void | call_setup () |
| void | call_dump_config_ () |
| void | enable_loop_slow_path_ () |
| void | set_component_state_ (uint8_t state) |
| Helper to set component state (clears state bits and sets new state) | |
| bool | set_status_flag_ (uint8_t flag) |
| Helper to set a status LED flag on both this component and the app. | |
| void | set_interval (const char *name, uint32_t interval, std::function< void()> &&f) |
| Set an interval function with a const char* name. | |
| void | set_interval (uint32_t id, uint32_t interval, std::function< void()> &&f) |
| Set an interval function with a numeric ID (zero heap allocation). | |
| void | set_interval (InternalSchedulerID id, uint32_t interval, std::function< void()> &&f) |
| void | set_interval (uint32_t interval, std::function< void()> &&f) |
| bool | cancel_interval (const char *name) |
| Cancel an interval function. | |
| bool | cancel_interval (uint32_t id) |
| bool | cancel_interval (InternalSchedulerID id) |
| void | set_timeout (const char *name, uint32_t timeout, std::function< void()> &&f) |
| Set a timeout function with a const char* name. | |
| void | set_timeout (uint32_t id, uint32_t timeout, std::function< void()> &&f) |
| Set a timeout function with a numeric ID (zero heap allocation). | |
| void | set_timeout (InternalSchedulerID id, uint32_t timeout, std::function< void()> &&f) |
| void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
| bool | cancel_timeout (const char *name) |
| Cancel a timeout function. | |
| bool | cancel_timeout (uint32_t id) |
| bool | cancel_timeout (InternalSchedulerID id) |
| void | defer (const char *name, std::function< void()> &&f) |
| Defer a callback to the next loop() call with a const char* name. | |
| void | defer (std::function< void()> &&f) |
| Defer a callback to the next loop() call. | |
| void | defer (uint32_t id, std::function< void()> &&f) |
| Defer a callback with a numeric ID (zero heap allocation) | |
| bool | cancel_defer (const char *name) |
| Cancel a defer callback using the specified name, name must not be empty. | |
| bool | cancel_defer (uint32_t id) |
| void | status_clear_warning_slow_path_ () |
| void | status_clear_error_slow_path_ () |
Static Protected Member Functions | |
| static void | inference_task (void *params) |
Protected Attributes | |
| microphone::MicrophoneSource * | microphone_source_ {nullptr} |
| Trigger< std::string > | wake_word_detected_trigger_ |
| State | state_ {State::STOPPED} |
| std::weak_ptr< ring_buffer::RingBuffer > | ring_buffer_ |
| std::vector< WakeWordModel * > | wake_word_models_ |
| std::vector< std::unique_ptr< WakeWordModel > > | runtime_models_ |
| std::unique_ptr< VADModel > | vad_model_ |
| bool | vad_state_ {false} |
| bool | pending_start_ {false} |
| bool | pending_stop_ {false} |
| bool | stop_after_detection_ |
| bool | task_stack_in_psram_ {false} |
| uint8_t | features_step_size_ |
| struct FrontendConfig | frontend_config_ |
| struct FrontendState | frontend_state_ |
| EventGroupHandle_t | event_group_ |
| QueueHandle_t | detection_queue_ |
| StaticTask | inference_task_ |
Protected Attributes inherited from esphome::Component | |
| uint8_t | component_source_index_ {0} |
| Index into component source PROGMEM lookup table (0 = not set) | |
| uint8_t | warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_CS} |
| Warn threshold in centiseconds (max 2550ms) | |
| uint8_t | component_state_ {0x00} |
| State of this component - each bit has a purpose: Bits 0-2: Component state (0x00=CONSTRUCTION, 0x01=SETUP, 0x02=LOOP, 0x03=FAILED, 0x04=LOOP_DONE) Bit 3: STATUS_LED_WARNING Bit 4: STATUS_LED_ERROR Bit 5: Has overridden loop() (set at registration time) Bits 6-7: Unused - reserved for future expansion. | |
| volatile bool | pending_enable_loop_ {false} |
| ISR-safe flag for enable_loop_soon_any_context. | |
| ComponentRuntimeStats | runtime_stats_ |
Definition at line 34 of file micro_wake_word.h.
| bool esphome::micro_wake_word::MicroWakeWord::add_runtime_model | ( | std::unique_ptr< WakeWordModel > | model | ) |
Adds a runtime-downloaded wake word model.
Must be called from the main loop. If the inference task is running it is paused at a safe point before the model lists are mutated, so the task never observes a half-updated vector. Callers should check get_model_by_id() before constructing the model: a WakeWordModel permanently claims a preference backend that is not released when the model is destroyed, so building one only to have it rejected here costs internal RAM that never comes back.
Definition at line 297 of file micro_wake_word.cpp.
| void esphome::micro_wake_word::MicroWakeWord::add_vad_model | ( | const uint8_t * | model_start, |
| uint8_t | probability_cutoff, | ||
| size_t | sliding_window_size, | ||
| size_t | tensor_arena_size ) |
Definition at line 389 of file micro_wake_word.cpp.
| void esphome::micro_wake_word::MicroWakeWord::add_wake_word_model | ( | WakeWordModel * | model | ) |
Definition at line 262 of file micro_wake_word.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 85 of file micro_wake_word.cpp.
|
protected |
Generates a spectrogram feature from an input buffer of audio samples.
The frontend buffers samples internally, so callers may stream arbitrary-sized chunks; a feature is only emitted once enough samples have accumulated to fill a full analysis window.
| audio_buffer | (const int16_t *) Buffer containing input audio samples |
| samples_available | (size_t) Number of samples available in the input buffer |
| features_buffer | (int8_t *) Buffer to store the generated feature, valid only when the return value is true |
| processed_samples | (size_t *) Set to the number of samples consumed from the input buffer |
Definition at line 552 of file micro_wake_word.cpp.
|
inline |
Returns the feature step size (ms) the frontend is configured for. Runtime models must match it.
Definition at line 93 of file micro_wake_word.h.
| WakeWordModel * esphome::micro_wake_word::MicroWakeWord::get_model_by_id | ( | const std::string & | model_id | ) |
Returns the wake word model with the given id, or nullptr if none matches (compiled or runtime).
Must be called from the main loop, as the returned pointer is invalidated by remove_runtime_model().
Definition at line 379 of file micro_wake_word.cpp.
| std::vector< std::string > esphome::micro_wake_word::MicroWakeWord::get_runtime_model_ids | ( | ) |
Returns the ids of all runtime-downloaded models. Must be called from the main loop.
Definition at line 370 of file micro_wake_word.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 68 of file micro_wake_word.cpp.
|
inline |
Definition at line 100 of file micro_wake_word.h.
|
inline |
Definition at line 65 of file micro_wake_word.h.
| std::vector< WakeWordModel * > esphome::micro_wake_word::MicroWakeWord::get_wake_words | ( | ) |
Definition at line 252 of file micro_wake_word.cpp.
|
staticprotected |
Definition at line 158 of file micro_wake_word.cpp.
|
inline |
Definition at line 53 of file micro_wake_word.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 407 of file micro_wake_word.cpp.
|
overridevirtual |
Implements esphome::ota::OTAGlobalStateListener.
Definition at line 149 of file micro_wake_word.cpp.
|
protected |
Processes any new probabilities for each model.
If any wake word is detected, it will send a DetectionEvent to the detection_queue_.
Definition at line 588 of file micro_wake_word.cpp.
| bool esphome::micro_wake_word::MicroWakeWord::remove_runtime_model | ( | const std::string & | model_id | ) |
Removes a runtime-downloaded wake word model and frees its interpreter, arenas, and model buffer.
Must be called from the main loop. If the inference task is running it is paused at a safe point first, and any queued detection events are dropped (they hold pointers into the model being destroyed).
Definition at line 335 of file micro_wake_word.cpp.
|
protected |
Resumes the inference task.
Definition at line 401 of file micro_wake_word.cpp.
|
inline |
Definition at line 55 of file micro_wake_word.h.
|
inline |
Definition at line 57 of file micro_wake_word.h.
|
protected |
Definition at line 544 of file micro_wake_word.cpp.
|
inline |
Definition at line 61 of file micro_wake_word.h.
|
inline |
Definition at line 63 of file micro_wake_word.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 96 of file micro_wake_word.cpp.
| void esphome::micro_wake_word::MicroWakeWord::start | ( | ) |
Definition at line 512 of file micro_wake_word.cpp.
| void esphome::micro_wake_word::MicroWakeWord::stop | ( | ) |
Definition at line 534 of file micro_wake_word.cpp.
|
protected |
Suspends the inference task.
Definition at line 395 of file micro_wake_word.cpp.
|
protected |
Parks the inference task at a safe point (or verifies it isn't running) so the model lists may be mutated from the main loop.
Every successful call must be paired with unlock_models_().
Definition at line 264 of file micro_wake_word.cpp.
|
protected |
Deletes each model's TFLite interpreters and frees tensor arena memory.
Definition at line 620 of file micro_wake_word.cpp.
|
protected |
Releases the inference task parked by a successful try_lock_models_() call.
Definition at line 289 of file micro_wake_word.cpp.
|
protected |
Runs an inference with each model using the new spectrogram features.
| audio_features | (int8_t *) Buffer containing new spectrogram features |
Definition at line 629 of file micro_wake_word.cpp.
|
protected |
Definition at line 138 of file micro_wake_word.h.
|
protected |
Definition at line 135 of file micro_wake_word.h.
|
protected |
Definition at line 128 of file micro_wake_word.h.
|
protected |
Definition at line 131 of file micro_wake_word.h.
|
protected |
Definition at line 132 of file micro_wake_word.h.
|
protected |
Definition at line 140 of file micro_wake_word.h.
|
protected |
Definition at line 108 of file micro_wake_word.h.
|
protected |
Definition at line 121 of file micro_wake_word.h.
|
protected |
Definition at line 122 of file micro_wake_word.h.
|
protected |
Definition at line 112 of file micro_wake_word.h.
|
protected |
Definition at line 114 of file micro_wake_word.h.
|
protected |
Definition at line 110 of file micro_wake_word.h.
|
protected |
Definition at line 124 of file micro_wake_word.h.
|
protected |
Definition at line 126 of file micro_wake_word.h.
|
protected |
Definition at line 117 of file micro_wake_word.h.
|
protected |
Definition at line 118 of file micro_wake_word.h.
|
protected |
Definition at line 109 of file micro_wake_word.h.
|
protected |
Definition at line 113 of file micro_wake_word.h.