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-
source_speakers (必填, list): 源扬声器输入列表。必须至少有 2 个且最多 8 个扬声器。
- buffer_duration (可选, 时间): 内部环形缓冲区的持续时间。较大的值可以减少卡顿但会使用更多内存。默认为
100ms。 - timeout (可选, 时间): 播放结束后等待多长时间再释放总线。设置为
never可永不因超时而停止扬声器。默认为500ms。 - Speaker 组件 中的所有其他选项。
- buffer_duration (可选, 时间): 内部环形缓冲区的持续时间。较大的值可以减少卡顿但会使用更多内存。默认为
-
bits_per_sample (可选, 正整数): 发送到输出扬声器的每采样位数。可选值为
8、16、24或32。默认为输出扬声器的每采样位数。 -
num_channels (可选, 正整数): 发送到输出扬声器的音频声道数。可选值为
1或2。默认为输出扬声器的声道数。 -
queue_mode (可选, boolean): 启用队列模式。如果启用,音频将不会混合,而是依次播放每个源扬声器的音频,从第一个列出的源扬声器开始。
-
task_stack_in_psram (可选, boolean): 仅在
esp-idf中。在外部内存中运行音频任务。默认为false。
mixer_speaker.apply_ducking 动作
Section titled “mixer_speaker.apply_ducking 动作”此动作对媒体流进行压限(降低其音量)。
on_...: - mixer_speaker.apply_ducking: id: media_mixer_source_speaker_id decibel_reduction: 20 duration: 2.0s配置变量: