跳转到内容

混音扬声器

mixer 扬声器平台允许您将发送到不同源扬声器的音频混合成一个输出,发送到另一个扬声器组件。可以使用 apply ducking 动作 对各个源扬声器进行音量衰减(变小)。

当将多个音频流混合为一个时,它们必须具有相同的采样率。如果不同,请启用队列模式,以便一次只播放一个源扬声器的音频。否则,请使用 重采样扬声器 将音频发送到源扬声器。

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

WARNING

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

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

# 示例配置条目
speaker:
- platform: mixer
output_speaker: speaker_id
source_speakers:
- id: announcement_mixer_input_speaker_id
- id: media_mixer_input_speaker_id
  • output_speaker (必需, ID): 输出混合音频的扬声器

  • source_speakers (必需, 列表): 源扬声器输入列表。必须至少有 2 个,最多 8 个扬声器。

    • buffer_duration (可选, 时间): 内部环形缓冲区的持续时间。较大的值可以减少卡顿但使用更多内存。默认为 100ms
    • timeout (可选, 时间): 播放完成后等待多长时间再释放总线。设置为 never 以永不因超时而停止扬声器。默认为 500ms
    • 扬声器组件的所有其他选项。
  • num_channels (可选, 正整数): 发送到输出扬声器的音频通道数。可选 12。默认为输出扬声器的通道数。

  • queue_mode (可选, 布尔值): 启用队列模式。如果启用,音频不会被混合,而是依次播放每个源扬声器的音频,从第一个列出的源扬声器开始。

  • task_stack_in_psram (可选, 布尔值): 仅适用于 esp-idf。在外部内存中运行音频任务。默认为 false

此动作对媒体流进行音量衰减(降低音量)。

on_...:
- mixer_speaker.apply_ducking:
id: media_mixer_source_speaker_id
decibel_reduction: 20
duration: 2.0s

配置变量:

  • decibel_reduction (必需, 整数, 可模板化): 媒体流的衰减量,以分贝为单位。必须在 0 到 50 之间。
  • duration (可选, 时间, 可模板化): 从当前衰减级别过渡到新衰减级别的时间长度。默认为 0s