#ifndef ESP_WAKE_WORD_H #define ESP_WAKE_WORD_H #include #include #include #include #include #include #include #include #include #include #include #include #include "audio_codec.h" #include "wake_word.h" class EspWakeWord : public WakeWord { public: EspWakeWord(); ~EspWakeWord(); bool Initialize(AudioCodec* codec); void Feed(const std::vector& data); void OnWakeWordDetected(std::function callback); void Start(); void Stop(); size_t GetFeedSize(); void EncodeWakeWordData(); bool GetWakeWordOpus(std::vector& opus); const std::string& GetLastDetectedWakeWord() const { return last_detected_wake_word_; } private: esp_wn_iface_t *wakenet_iface_ = nullptr; model_iface_data_t *wakenet_data_ = nullptr; srmodel_list_t *wakenet_model_ = nullptr; EventGroupHandle_t event_group_; AudioCodec* codec_ = nullptr; std::function wake_word_detected_callback_; std::string last_detected_wake_word_; }; #endif