5#ifdef USE_VOICE_ASSISTANT
15#ifdef USE_MEDIA_PLAYER
18#ifdef USE_MICRO_WAKE_WORD
30namespace voice_assistant {
34static const uint32_t LEGACY_INITIAL_VERSION = 1;
35static const uint32_t LEGACY_SPEAKER_SUPPORT = 2;
77 const char *
to_str(std::span<char, TO_STR_BUFFER_SIZE> buffer)
const {
78 snprintf(buffer.data(), buffer.size(),
79 "Timer(id=%s, name=%s, total_seconds=%" PRIu32
", seconds_left=%" PRIu32
", is_active=%s)",
80 this->id.c_str(), this->name.c_str(), this->total_seconds, this->seconds_left, YESNO(this->is_active));
84 ESPDEPRECATED(
"Use to_str() instead. Removed in 2026.8.0",
"2026.2.0")
85 std::
string to_string()
const {
87 return this->
to_str(buffer);
103#ifdef USE_MEDIA_PLAYER
116 void loop()
override;
117 void setup()
override;
124#ifdef USE_MICRO_WAKE_WORD
133#ifdef USE_MEDIA_PLAYER
143 return LEGACY_SPEAKER_SUPPORT;
146 return LEGACY_INITIAL_VERSION;
163#ifdef USE_MEDIA_PLAYER
242 std::unique_ptr<socket::Socket>
socket_ =
nullptr;
290#ifdef USE_MEDIA_PLAYER
328#ifdef USE_MICRO_WAKE_WORD
334 TEMPLATABLE_VALUE(std::string, wake_word);
337 void play(
const Ts &...
x)
override {
338 this->
parent_->set_wake_word(this->wake_word_.value(
x...));
350 void play(
const Ts &...
x)
override { this->
parent_->request_start(
true,
true); }
365 bool check(
const 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(const Ts &...x) override
bool check(const Ts &...x) override
void play(const Ts &...x) override
void set_silence_detection(bool silence_detection)
void play(const Ts &...x) override
void play(const Ts &...x) override
Trigger intent_end_trigger_
std::unique_ptr< socket::Socket > socket_
Trigger< Timer > * get_timer_started_trigger()
const Configuration & get_configuration()
void set_conversation_timeout(uint32_t conversation_timeout)
size_t speaker_buffer_size_
bool started_streaming_tts_
std::string tts_response_url_
bool wait_for_stream_end_
Trigger< std::string > * get_stt_end_trigger()
size_t speaker_buffer_index_
uint32_t get_legacy_version() const
Trigger intent_start_trigger_
Trigger< std::string > * get_intent_progress_trigger()
void on_timer_event(const api::VoiceAssistantTimerEventResponse &msg)
Trigger * get_wake_word_detected_trigger()
Trigger * get_stt_vad_end_trigger()
Trigger tts_stream_start_trigger_
Trigger client_connected_trigger_
Trigger< Timer > timer_cancelled_trigger_
std::vector< Timer > timers_
void on_audio(const api::VoiceAssistantAudio &msg)
Trigger * get_client_disconnected_trigger()
Trigger< std::string > * get_tts_end_trigger()
Trigger< Timer > * get_timer_updated_trigger()
const std::vector< Timer > & get_timers() const
Trigger * get_end_trigger()
media_player::MediaPlayer * media_player_
float get_setup_priority() const override
Trigger wake_word_detected_trigger_
void set_state_(State state)
uint8_t * speaker_buffer_
Trigger stt_vad_end_trigger_
void set_media_player(media_player::MediaPlayer *media_player)
void client_subscription(api::APIConnection *client, bool subscribe)
Trigger< Timer > timer_started_trigger_
Trigger * get_client_connected_trigger()
Trigger< Timer > * get_timer_cancelled_trigger()
MediaPlayerResponseState media_player_response_state_
void deallocate_buffers_()
bool is_continuous() const
Trigger listening_trigger_
std::shared_ptr< RingBuffer > ring_buffer_
Trigger * get_stt_vad_start_trigger()
Trigger * get_tts_stream_end_trigger()
void set_continuous(bool continuous)
uint8_t noise_suppression_level_
void on_event(const api::VoiceAssistantEventResponse &msg)
Trigger< std::string, std::string > error_trigger_
Trigger * get_intent_end_trigger()
Trigger< std::string > stt_end_trigger_
uint32_t conversation_timeout_
Trigger< Timer > * get_timer_finished_trigger()
Trigger< const std::vector< Timer > & > timer_tick_trigger_
Trigger< std::string > intent_progress_trigger_
void set_auto_gain(uint8_t auto_gain)
void on_announce(const api::VoiceAssistantAnnounceRequest &msg)
void request_start(bool continuous, bool silence_detection)
Trigger< std::string > tts_start_trigger_
void set_speaker(speaker::Speaker *speaker)
api::APIConnection * api_client_
Trigger< std::string > * get_tts_start_trigger()
api::APIConnection * get_api_connection() const
Trigger< std::string > tts_end_trigger_
void set_has_timers(bool has_timers)
void set_microphone_source(microphone::MicrophoneSource *mic_source)
struct sockaddr_storage dest_addr_
uint32_t get_feature_flags() const
Trigger * get_listening_trigger()
speaker::Speaker * speaker_
Trigger< Timer > timer_updated_trigger_
Trigger * get_idle_trigger()
void set_wake_word(const std::string &wake_word)
void set_micro_wake_word(micro_wake_word::MicroWakeWord *mww)
Trigger * get_start_trigger()
Trigger tts_stream_end_trigger_
Trigger * get_intent_start_trigger()
void set_volume_multiplier(float volume_multiplier)
Trigger stt_vad_start_trigger_
void start_playback_timeout_()
void reset_conversation_id()
std::string conversation_id_
microphone::MicrophoneSource * mic_source_
micro_wake_word::MicroWakeWord * micro_wake_word_
Trigger< std::string, std::string > * get_error_trigger()
void set_noise_suppression_level(uint8_t noise_suppression_level)
void set_use_wake_word(bool use_wake_word)
size_t speaker_bytes_received_
bool continue_conversation_
void on_set_configuration(const std::vector< std::string > &active_wake_words)
Trigger< const std::vector< Timer > & > * get_timer_tick_trigger()
Trigger< Timer > timer_finished_trigger_
Trigger client_disconnected_trigger_
Trigger * get_tts_stream_start_trigger()
@ FEATURE_START_CONVERSATION
@ FEATURE_VOICE_ASSISTANT
VoiceAssistant * global_voice_assistant
Providing packet encoding functions for exchanging data with a remote host.
struct ESPDEPRECATED("Use std::index_sequence instead. Removed in 2026.6.0", "2025.12.0") seq
std::vector< WakeWord > available_wake_words
std::vector< std::string > active_wake_words
uint32_t max_active_wake_words
static constexpr size_t TO_STR_BUFFER_SIZE
Buffer size for to_str() - sufficient for typical timer names.
const char * to_str(std::span< char, TO_STR_BUFFER_SIZE > buffer) const
Format to buffer, returns pointer to buffer (may truncate long names)
std::vector< std::string > trained_languages