I²S 音频扬声器
i2s_audio speaker 平台允许您通过 I2S 音频 接收音频。
此平台仅适用于基于 ESP32 的芯片。
WARNING
音频和语音组件会在设备上消耗大量资源(RAM、CPU)。
如果在设备的 配置中包含太多额外的组件,很可能会发生崩溃。特别是,蓝牙/BLE 组件在使用时已知 会导致与语音助手和/或其他音频组件组合使用时出现问题。
# 示例配置条目speaker: - platform: i2s_audio dac_type: external i2s_dout_pin: GPIOXX-
dac_type (必填, enum): 必须为
external。使用外部 DAC,例如 ES8311 或 ES8388。 -
i2s_dout_pin (必填, Pin Schema): 用于 I²S DOUT(数据输出)信号的 GPIO 引脚。
-
channel (可选, enum): 扬声器的声道。可选值为
left、right、mono或stereo。如果为stereo,输入数据应为两倍大小, 每个右声道采样后面跟随一个左声道采样。left和right会静音未使用的声道,而mono则在两个声道上播放相同的采样。默认为mono。 -
sample_rate (可选, 正整数): I2S 采样率。如果处于
primaryI²S 模式,则使用音频流的采样率。默认为16000。 -
bits_per_sample (可选, enum): 发送到 DAC 的音频采样的位深度。可选值为
8bit、16bit、24bit或32bit。默认为16bit。 -
mclk_multiple (可选, enum): MCLK 频率与采样率的倍数。如果使用 24 位采样,则必须能被 3 整除。可选值为
128、256、384、512。默认为256。 -
use_apll (可选, boolean): I2S 使用 APLL 作为主 I2S 时钟,启用它可获得准确的时钟。默认为
false。 -
i2s_mode (可选, enum): 要使用的 I²S 模式。可选值为
primary(由主机驱动时钟)或secondary(由连接的设备驱动时钟)。默认为primary。 -
i2s_comm_fmt (可选, enum): 此扬声器使用的 I²S 通信标准格式。
stand_i2s(默认)stand_msbstand_pcm_shortstand_pcm_longi2s_msbi2s_lsbpcmpcm_shortpcm_long
-
buffer_duration (可选, 时间): 内部环形缓冲区的持续时间。较大的值可以减少卡顿但会使用更多内存。默认为
500ms。 -
timeout (可选, 时间): 播放结束后等待多长时间再释放总线。设置为
never可永不因超时而停止扬声器。默认为500ms。注意: 使用spdif_mode: true(见下文)时,缓冲区下溢将用静音帧填充,直到指定间隔届满;这可以维持 SPDIF 信号以防止接收器检测到信号丢失/源更改,否则可能会延长静音间隔。 -
spdif_mode (可选, boolean): 启用 S/PDIF(Sony/Philips 数字接口)模式以进行数字音频输出。启用后,扬声器输出适合光纤(TOSLINK 光纤连接器)或同轴数字音频传输的 SPDIF 编码位流格式。默认为
false。 -
Speaker 组件 中的所有其他选项。
SPDIF 模式
Section titled “SPDIF 模式”SPDIF 模式启用通过光纤(TOSLINK)或同轴数字音频连接进行 S/PDIF(Sony/Philips 数字接口)数字音频传输。此模式将 PCM 音频数据格式编码为 SPDIF 位流,可被soundbar、A/V 接收器、DAC 和其他数字音频设备接收。
对于光纤 SPDIF 传输,您可以使用:
- 普通 LED:任何 LED(甚至是开发板上的调试 LED)都可以传输 SPDIF 音频。将光纤线缆靠近 LED。
- TOSLINK 发射模块:专用的光纤发射模块提供合适的 TOSLINK 连接器以实现可靠的连接。
发射器连接到 i2s_dout_pin(与标准 I²S 数据输出相同的引脚)。
SPDIF 模式约束
Section titled “SPDIF 模式约束”当启用 spdif_mode 时,需要以下设置:
- sample_rate:仅支持
44100Hz(CD 音质)或48000Hz(DVD/DAT 音质) - channel:必须设置为
stereo(2 声道) - use_apll:必须设置为
true以进行准确的时钟生成 - i2s_mode:必须设置为
primary - i2s_comm_fmt:必须设置为
stand_i2s - mclk_multiple:必须设置为
256
示例 SPDIF 配置
Section titled “示例 SPDIF 配置”# 示例 SPDIF 扬声器配置i2s_audio: - id: i2s_output
speaker: - platform: i2s_audio id: spdif_speaker dac_type: external i2s_audio_id: i2s_output i2s_dout_pin: GPIOXX spdif_mode: true use_apll: true sample_rate: 48000 channel: stereo timeout: never