跳转到内容

I²S 音频扬声器

i2s_audio 扬声器平台允许您通过 I2S Audio 接收音频。

此平台仅适用于基于 ESP32 的芯片。

WARNING

音频和语音组件会消耗设备上大量资源(RAM、CPU)。

如果您在设备配置中包含太多额外组件,很可能发生崩溃。 特别是 Bluetooth/BLE 组件在与 Voice Assistant 和/或其他音频组件结合使用时已知会导致问题。

# 示例配置条目
speaker:
- platform: i2s_audio
dac_type: external
i2s_dout_pin: GPIOXX
  • dac_type (必需, 枚举):

    • external : 使用外部 DAC,例如 NS4168 或 UDA1334A。
    • internal : 使用内部 DAC
  • channel (可选, 枚举): 扬声器的通道。可选 leftrightmonostereo。如果为 stereo,输入数据应大一倍,每个右采样后跟一个左采样。leftright 会静音未使用的通道,而 mono 在两个通道上播放相同的采样。默认为 mono

  • sample_rate (可选, 正整数): I2S 采样率。如果处于 primary I²S 模式,则使用音频流的采样率。默认为 16000

  • bits_per_sample (可选, 枚举): 发送到 DAC 的音频采样位深。可选 8bit16bit24bit32bit。默认为 16bit

  • bits_per_channel (可选, 枚举): 音频通道的位深。这是实际发送到 DAC 的数据,需要等于或大于 bits_per_sample。 有关详细信息,请参阅 I2S 设备的数据手册。默认为 bits_per_sample。如果不使用旧版驱动程序,则忽略此设置。

  • mclk_multiple (可选, 枚举): MCLK 频率与采样率的倍数。如果使用每采样 24 位,必须可被 3 整除。可选 128256384512。默认为 256

  • use_apll (可选, 布尔值): I2S 使用 APLL 作为主 I2S 时钟,启用它可以获得精确的时钟。默认为 false

  • i2s_mode (可选, 枚举): 要使用的 I²S 模式。可选 primary(时钟由主机驱动)或 secondary(时钟由连接的设备驱动)。默认为 primary

  • i2s_audio_id (可选, ID): 您希望用于此扬声器的 I²S Audio 的 ID。

  • i2s_comm_fmt (可选, 枚举): 此扬声器使用的 I²S 通信标准格式。

    • stand_i2s(默认)
    • stand_msb
    • stand_pcm_short
    • stand_pcm_long
    • stand_max(仅限旧版驱动)
    • i2s_msb
    • i2s_lsb
    • pcm
    • pcm_short
    • pcm_long
  • buffer_duration (可选, 时间): 内部环形缓冲区的持续时间。较大的值可以减少卡顿但使用更多内存。默认为 500ms

  • timeout (可选, 时间): 播放完成后等待多长时间再释放总线。设置为 never 以永不因超时而停止扬声器。默认为 500ms

  • 扬声器组件的所有其他选项。

  • i2s_dout_pin (必需, 引脚模式): 用于 I²S DOUT(数据输出)信号的 GPIO 引脚。

为获得最佳效果,请尽量保持线路简短。

NOTE

内部 DAC 扬声器仅由常规 ESP32 上的旧版 I²S 驱动程序支持,不支持变体。

  • mode (必需, 枚举): 内部 DAC 的通道模式。

    • left
    • right
    • stereo