123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #ifndef ESP_WAKE_WORD_H
- #define ESP_WAKE_WORD_H
- #include <freertos/FreeRTOS.h>
- #include <freertos/task.h>
- #include <freertos/event_groups.h>
- #include <esp_wn_iface.h>
- #include <esp_wn_models.h>
- #include <model_path.h>
- #include <list>
- #include <string>
- #include <vector>
- #include <functional>
- #include <mutex>
- #include <condition_variable>
- #include "audio_codec.h"
- #include "wake_word.h"
- class EspWakeWord : public WakeWord {
- public:
- EspWakeWord();
- ~EspWakeWord();
- bool Initialize(AudioCodec* codec);
- void Feed(const std::vector<int16_t>& data);
- void OnWakeWordDetected(std::function<void(const std::string& wake_word)> callback);
- void Start();
- void Stop();
- size_t GetFeedSize();
- void EncodeWakeWordData();
- bool GetWakeWordOpus(std::vector<uint8_t>& 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<void(const std::string& wake_word)> wake_word_detected_callback_;
- std::string last_detected_wake_word_;
- };
- #endif
|