ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
esphome::i2s_audio::I2SAudioSpeaker Class Referencefinal

Standard I2S speaker implementation. More...

#include <i2s_audio_speaker_standard.h>

Inheritance diagram for esphome::i2s_audio::I2SAudioSpeaker:
esphome::i2s_audio::I2SAudioSpeakerBase esphome::i2s_audio::I2SAudioOut esphome::speaker::Speaker esphome::Component esphome::i2s_audio::I2SAudioBase esphome::Parented< I2SAudioComponent >

Public Member Functions

void dump_config () override
 
void set_i2s_comm_fmt (I2SCommFmt fmt)
 
void build_full_duplex_config (i2s_chan_config_t &chan_cfg, i2s_std_config_t &std_cfg) override
 
- Public Member Functions inherited from esphome::i2s_audio::I2SAudioSpeakerBase
float get_setup_priority () const override
 
void setup () override
 
void dump_config () override
 
void loop () override
 
void set_buffer_duration (uint32_t buffer_duration_ms)
 
void set_timeout (uint32_t ms)
 
void set_keep_alive (bool keep_alive)
 
void set_dout_pin (uint8_t pin)
 
i2s_chan_handle_t get_tx_handle () const
 Get the I2S TX channel handle.
 
void start () override
 
void stop () override
 
void finish () override
 
void set_pause_state (bool pause_state) override
 
bool get_pause_state () const override
 
void swap_esp32_mono_samples_ (uint8_t *data, size_t bytes_read)
 Plays the provided audio data.
 
- Public Member Functions inherited from esphome::i2s_audio::I2SAudioOut
- Public Member Functions inherited from esphome::i2s_audio::I2SAudioBase
void set_i2s_role (i2s_role_t role)
 
void set_slot_mode (i2s_slot_mode_t slot_mode)
 
void set_std_slot_mask (i2s_std_slot_mask_t std_slot_mask)
 
void set_slot_bit_width (i2s_slot_bit_width_t slot_bit_width)
 
void set_sample_rate (uint32_t sample_rate)
 
void set_use_apll (uint32_t use_apll)
 
void set_mclk_multiple (i2s_mclk_multiple_t mclk_multiple)
 
- Public Member Functions inherited from esphome::Parented< I2SAudioComponent >
 Parented ()
 
 Parented (I2SAudioComponent *parent)
 
I2SAudioComponent * get_parent () const
 Get the parent of this object.
 
void set_parent (I2SAudioComponent *parent)
 Set the parent of this object.
 
- Public Member Functions inherited from esphome::speaker::Speaker
virtual size_t play (const uint8_t *data, size_t length)=0
 Plays the provided audio data.
 
size_t play (const std::vector< uint8_t > &data)
 
virtual bool has_buffered_data () const =0
 
bool is_running () const
 
bool is_stopped () const
 
virtual void set_volume (float volume)
 
virtual float get_volume ()
 
virtual void set_mute_state (bool mute_state)
 
virtual bool get_mute_state ()
 
void set_audio_dac (audio_dac::AudioDac *audio_dac)
 
void set_audio_stream_info (const audio::AudioStreamInfo &audio_stream_info)
 
audio::AudioStreamInfo & get_audio_stream_info ()
 
template<typename F >
void add_audio_output_callback (F &&callback)
 Callback function for sending the duration of the audio written to the speaker since the last callback.
 
- 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)
 
bool status_comm_result (bool ok)
 Clears the warning when ok, else sets it with message (default "Communication failed"); returns ok.
 
bool status_comm_result (bool ok, const LogString *message)
 
void status_set_error ()
 
void status_set_error (const LogString *message)
 
void status_clear_warning ()
 
void status_clear_error ()
 
 ESPDEPRECATED ("Use status_momentary_warning() without a name. Removed in 2027.5.0", "2026.11.0") void status_momentary_warning(const char *name
 
void status_momentary_warning (uint32_t length=5000)
 Set warning status flag and clear it after length ms.
 
void status_momentary_warning (const LogString *message, uint32_t length=5000)
 
 ESPDEPRECATED ("Use status_momentary_error() without a name. Removed in 2027.5.0", "2026.11.0") void status_momentary_error(const char *name
 
void status_momentary_error (uint32_t length=5000)
 Set error status flag and clear it after length ms.
 
void status_momentary_error (const LogString *message, uint32_t length=5000)
 
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)
 

Protected Member Functions

void run_speaker_task () override
 
esp_err_t start_i2s_driver (audio::AudioStreamInfo &audio_stream_info) override
 
void build_i2s_config_ (const audio::AudioStreamInfo &output_stream_info, i2s_chan_config_t &chan_cfg, i2s_std_config_t &std_cfg) const
 Builds the channel and standard mode configuration for the given output format.
 
audio::AudioStreamInfo full_duplex_stream_info_ () const
 The output format of a full duplex bus, fixed by the configuration since the channel is set up once.
 
uint8_t slot_memory_bits_ () const
 Bits per sample that the configured slot takes in DMA memory.
 
size_t write_widened_ (const uint8_t *input, uint32_t frames)
 Widens frames to the output bit depth through a small stack buffer and writes them to the peripheral.
 
- Protected Member Functions inherited from esphome::i2s_audio::I2SAudioBase
i2s_clock_src_t get_clock_source_ () const
 
- Protected Member Functions inherited from esphome::speaker::Speaker
bool is_silent_ () const
 Whether the output should be silent: muted, or the volume is effectively zero.
 
void apply_audio_dac_mute_ ()
 Uses the audio dac's mute as the silence mechanism, since a dac's minimum volume is often audible.
 
- 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.
 
bool set_error_flag_ (const LogString *message)
 Set the error flag and log it; true when it was not set before.
 
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 uint32_t dma_frame_multiple (const audio::AudioStreamInfo &stream_info)
 Frame multiple for DMA buffers and writes; 2 keeps ESP32 mono sample pairs word-aligned.
 

Protected Attributes

I2SCommFmt i2s_comm_fmt_ {I2SCommFmt::STANDARD}
 
- Protected Attributes inherited from esphome::i2s_audio::I2SAudioBase
i2s_role_t i2s_role_ {}
 
i2s_slot_mode_t slot_mode_
 
i2s_std_slot_mask_t std_slot_mask_
 
i2s_slot_bit_width_t slot_bit_width_
 
uint32_t sample_rate_
 
bool use_apll_
 
i2s_mclk_multiple_t mclk_multiple_
 
- Protected Attributes inherited from esphome::Parented< I2SAudioComponent >
I2SAudioComponent * parent_
 
- Protected Attributes inherited from esphome::speaker::Speaker
State state_ {STATE_STOPPED}
 
bool mute_state_ {false}
 
audio::AudioStreamInfo audio_stream_info_
 
float volume_ {1.0f}
 
audio_dac::AudioDac * audio_dac_ {nullptr}
 
CallbackManager< void(uint32_t, int64_t)> audio_output_callback_ {}
 
- 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_
 

Additional Inherited Members

- Data Fields inherited from esphome::i2s_audio::I2SAudioSpeakerBase
TaskHandle_t speaker_task_handle_ {nullptr}
 
EventGroupHandle_t event_group_ {nullptr}
 
QueueHandle_t i2s_event_queue_ {nullptr}
 
QueueHandle_t write_records_queue_ {nullptr}
 
std::weak_ptr< ring_buffer::RingBuffer > audio_ring_buffer_
 
uint32_t buffer_duration_ms_
 
optional< uint32_t > timeout_
 
optional< audio::AudioStreamInfo > rejected_stream_info_
 
bool pause_state_ {false}
 
bool keep_alive_ {false}
 
esp_audio_libs::gain::GainRamp gain_ramp_
 
audio::AudioStreamInfo current_stream_info_
 
audio::AudioStreamInfo output_stream_info_
 
gpio_num_t dout_pin_
 
i2s_chan_handle_t tx_handle_ {nullptr}
 
- Data Fields inherited from esphome::Component
uint32_t length = 5000)
 

Detailed Description

Standard I2S speaker implementation.

Outputs PCM audio data directly to an I2S DAC using the standard I2S protocol.

Definition at line 17 of file i2s_audio_speaker_standard.h.

Member Function Documentation

◆ build_full_duplex_config()

void esphome::i2s_audio::I2SAudioSpeaker::build_full_duplex_config ( i2s_chan_config_t & chan_cfg,
i2s_std_config_t & std_cfg )
overridevirtual

Reimplemented from esphome::i2s_audio::I2SAudioOut.

Definition at line 507 of file i2s_audio_speaker_standard.cpp.

◆ build_i2s_config_()

void esphome::i2s_audio::I2SAudioSpeaker::build_i2s_config_ ( const audio::AudioStreamInfo & output_stream_info,
i2s_chan_config_t & chan_cfg,
i2s_std_config_t & std_cfg ) const
protected

Builds the channel and standard mode configuration for the given output format.

Parameters
output_stream_infoFormat clocked out of the I2S peripheral

Definition at line 512 of file i2s_audio_speaker_standard.cpp.

◆ dma_frame_multiple()

static uint32_t esphome::i2s_audio::I2SAudioSpeaker::dma_frame_multiple ( const audio::AudioStreamInfo & stream_info)
inlinestaticprotected

Frame multiple for DMA buffers and writes; 2 keeps ESP32 mono sample pairs word-aligned.

Definition at line 53 of file i2s_audio_speaker_standard.h.

◆ dump_config()

void esphome::i2s_audio::I2SAudioSpeaker::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 58 of file i2s_audio_speaker_standard.cpp.

◆ full_duplex_stream_info_()

audio::AudioStreamInfo esphome::i2s_audio::I2SAudioSpeaker::full_duplex_stream_info_ ( ) const
protected

The output format of a full duplex bus, fixed by the configuration since the channel is set up once.

Definition at line 502 of file i2s_audio_speaker_standard.cpp.

◆ run_speaker_task()

void esphome::i2s_audio::I2SAudioSpeaker::run_speaker_task ( )
overrideprotected

Definition at line 80 of file i2s_audio_speaker_standard.cpp.

◆ set_i2s_comm_fmt()

void esphome::i2s_audio::I2SAudioSpeaker::set_i2s_comm_fmt ( I2SCommFmt fmt)
inline

Definition at line 21 of file i2s_audio_speaker_standard.h.

◆ slot_memory_bits_()

uint8_t esphome::i2s_audio::I2SAudioSpeaker::slot_memory_bits_ ( ) const
protected

Bits per sample that the configured slot takes in DMA memory.

Definition at line 583 of file i2s_audio_speaker_standard.cpp.

◆ start_i2s_driver()

esp_err_t esphome::i2s_audio::I2SAudioSpeaker::start_i2s_driver ( audio::AudioStreamInfo & audio_stream_info)
overrideprotected

Definition at line 425 of file i2s_audio_speaker_standard.cpp.

◆ write_widened_()

size_t esphome::i2s_audio::I2SAudioSpeaker::write_widened_ ( const uint8_t * input,
uint32_t frames )
protected

Widens frames to the output bit depth through a small stack buffer and writes them to the peripheral.

Parameters
inputFrames in the incoming stream format
framesNumber of frames to widen and write
Returns
Bytes written, which is short of the widened size if a write timed out

Definition at line 594 of file i2s_audio_speaker_standard.cpp.

Field Documentation

◆ i2s_comm_fmt_

I2SCommFmt esphome::i2s_audio::I2SAudioSpeaker::i2s_comm_fmt_ {I2SCommFmt::STANDARD}
protected

Definition at line 57 of file i2s_audio_speaker_standard.h.


The documentation for this class was generated from the following files: