跳转到内容

Mixer Speaker

mixer speaker 平台允许您将发送到不同源扬声器的音频混合为一个输出,然后发送到另一个 speaker 组件。各个源扬声器可以通过 应用压限动作 进行压限(降低音量)。

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

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

WARNING

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

如果在设备的 配置中包含太多额外的组件,很可能会发生崩溃。特别是,蓝牙/BLE 组件在使用时已知 会导致与语音助手和/或其他音频组件组合使用时出现问题。

# 示例配置条目
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 (必填, list): 源扬声器输入列表。必须至少有 2 个且最多 8 个扬声器。

    • buffer_duration (可选, 时间): 内部环形缓冲区的持续时间。较大的值可以减少卡顿但会使用更多内存。默认为 100ms。
    • timeout (可选, 时间): 播放结束后等待多长时间再释放总线。设置为 never 可永不因超时而停止扬声器。默认为 500ms。
    • Speaker 组件 中的所有其他选项。
  • bits_per_sample (可选, 正整数): 发送到输出扬声器的每采样位数。可选值为 8、16、24 或 32。默认为输出扬声器的每采样位数。

  • num_channels (可选, 正整数): 发送到输出扬声器的音频声道数。可选值为 1 或 2。默认为输出扬声器的声道数。

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

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

此动作对媒体流进行压限(降低其音量)。

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

配置变量:

  • decibel_reduction (必填, int, 可模板化): 媒体流的分贝减少量。必须在 0 到 50 之间。
  • duration (可选, 时间, 可模板化): 在当前减少级别和新减少级别之间过渡的时间长度。默认为 0s。