5#ifdef USE_VOICE_ASSISTANT
15#ifdef USE_MEDIA_PLAYER
18#ifdef USE_MICRO_WAKE_WORD
26#include <unordered_map>
30namespace voice_assistant {
34static const uint32_t LEGACY_INITIAL_VERSION = 1;
35static const uint32_t LEGACY_SPEAKER_SUPPORT = 2;
75 return str_sprintf(
"Timer(id=%s, name=%s, total_seconds=%" PRIu32
", seconds_left=%" PRIu32
", is_active=%s)",
76 this->
id.c_str(), this->name.c_str(), this->total_seconds, this->seconds_left,
77 YESNO(this->is_active));
98 void setup()
override;
105#ifdef USE_MICRO_WAKE_WORD
114#ifdef USE_MEDIA_PLAYER
124 return LEGACY_SPEAKER_SUPPORT;
127 return LEGACY_INITIAL_VERSION;
144#ifdef USE_MEDIA_PLAYER
222 std::unique_ptr<socket::Socket>
socket_ =
nullptr;
248 std::unordered_map<std::string, Timer>
timers_;
269#ifdef USE_MEDIA_PLAYER
305#ifdef USE_MICRO_WAKE_WORD
311 TEMPLATABLE_VALUE(std::string, wake_word);
315 this->
parent_->set_wake_word(this->wake_word_.value(
x...));
327 void play(Ts...
x)
override { this->
parent_->request_start(
true,
true); }
342 bool check(Ts...
x)
override {
return this->
parent_->get_api_connection() !=
nullptr; }
Base class for all automation conditions.
Helper class to easily give an object a parent of type T.
bool check(Ts... x) override
bool check(Ts... x) override
void set_silence_detection(bool silence_detection)
void play(Ts... x) override
void play(Ts... x) override
void play(Ts... x) override
Trigger< std::string > * get_stt_end_trigger() const
std::unique_ptr< socket::Socket > socket_
Trigger * get_intent_end_trigger() const
Trigger< Timer > * timer_started_trigger_
const Configuration & get_configuration()
void set_conversation_timeout(uint32_t conversation_timeout)
Trigger< std::string, std::string > * get_error_trigger() const
size_t speaker_buffer_size_
Trigger< std::vector< Timer > > * get_timer_tick_trigger() const
std::unordered_map< std::string, Timer > timers_
bool wait_for_stream_end_
size_t speaker_buffer_index_
Trigger< Timer > * get_timer_finished_trigger() const
uint32_t get_legacy_version() const
Trigger * get_end_trigger() const
void on_timer_event(const api::VoiceAssistantTimerEventResponse &msg)
Trigger< std::string > * get_tts_end_trigger() const
void on_audio(const api::VoiceAssistantAudio &msg)
Trigger * get_tts_stream_end_trigger() const
Trigger< Timer > * get_timer_updated_trigger() const
media_player::MediaPlayer * media_player_
float get_setup_priority() const override
Trigger< std::string > * stt_end_trigger_
Trigger< Timer > * get_timer_cancelled_trigger() const
void set_state_(State state)
Trigger< Timer > * timer_cancelled_trigger_
Trigger< std::string, std::string > * error_trigger_
uint8_t * speaker_buffer_
Trigger * get_client_disconnected_trigger() const
void set_media_player(media_player::MediaPlayer *media_player)
void client_subscription(api::APIConnection *client, bool subscribe)
Trigger * stt_vad_end_trigger_
void deallocate_buffers_()
bool is_continuous() const
Trigger< std::vector< Timer > > * timer_tick_trigger_
Trigger * get_wake_word_detected_trigger() const
std::shared_ptr< RingBuffer > ring_buffer_
void set_continuous(bool continuous)
uint8_t noise_suppression_level_
void on_event(const api::VoiceAssistantEventResponse &msg)
Trigger * intent_end_trigger_
Trigger * client_disconnected_trigger_
Trigger * get_stt_vad_end_trigger() const
Trigger * wake_word_detected_trigger_
uint32_t conversation_timeout_
bool media_player_wait_for_announcement_start_
Trigger * get_start_trigger() const
Trigger * stt_vad_start_trigger_
Trigger * tts_stream_start_trigger_
Trigger< std::string > * tts_start_trigger_
void set_auto_gain(uint8_t auto_gain)
void on_announce(const api::VoiceAssistantAnnounceRequest &msg)
void request_start(bool continuous, bool silence_detection)
void set_speaker(speaker::Speaker *speaker)
api::APIConnection * api_client_
Trigger< std::string > * tts_end_trigger_
api::APIConnection * get_api_connection() const
void set_has_timers(bool has_timers)
void set_microphone_source(microphone::MicrophoneSource *mic_source)
Trigger * get_tts_stream_start_trigger() const
struct sockaddr_storage dest_addr_
uint32_t get_feature_flags() const
Trigger * get_stt_vad_start_trigger() const
speaker::Speaker * speaker_
Trigger * tts_stream_end_trigger_
void set_wake_word(const std::string &wake_word)
Trigger< Timer > * get_timer_started_trigger() const
Trigger< Timer > * timer_finished_trigger_
void set_micro_wake_word(micro_wake_word::MicroWakeWord *mww)
void set_volume_multiplier(float volume_multiplier)
const std::unordered_map< std::string, Timer > & get_timers() const
Trigger * intent_start_trigger_
Trigger * get_listening_trigger() const
void start_playback_timeout_()
void reset_conversation_id()
std::string conversation_id_
Trigger * client_connected_trigger_
microphone::MicrophoneSource * mic_source_
Trigger * get_client_connected_trigger() const
micro_wake_word::MicroWakeWord * micro_wake_word_
Trigger * get_idle_trigger() const
bool media_player_wait_for_announcement_end_
void set_noise_suppression_level(uint8_t noise_suppression_level)
Trigger< std::string > * get_tts_start_trigger() const
void set_use_wake_word(bool use_wake_word)
size_t speaker_bytes_received_
Trigger< Timer > * timer_updated_trigger_
Trigger * get_intent_start_trigger() const
bool continue_conversation_
void on_set_configuration(const std::vector< std::string > &active_wake_words)
Trigger * listening_trigger_
@ FEATURE_START_CONVERSATION
@ FEATURE_VOICE_ASSISTANT
VoiceAssistant * global_voice_assistant
Providing packet encoding functions for exchanging data with a remote host.
std::string str_sprintf(const char *fmt,...)
std::vector< WakeWord > available_wake_words
std::vector< std::string > active_wake_words
uint32_t max_active_wake_words
std::string to_string() const
std::vector< std::string > trained_languages