Router Speaker
router speaker 平台允许您在运行时切换哪个 speaker 组件 接收音频。路由器充当单个扬声器,音频生产者(如 media player
或 mixer speaker)将音频发送到它,它再将音频转发到当前
活动的输出扬声器。使用 切换输出动作 可以在
播放音频时更改活动输出,例如在 I²S 扬声器和
SPDIF 输出之间切换播放。
每个输出扬声器必须使用相同的音频格式。格式在路由器上声明,以便生产者可以在 切换时保持 流式传输,而无需重新配置其输出。
此平台仅适用于基于 ESP32 的芯片。
# 示例配置条目speaker: - platform: router output_speakers: - speaker_a_id - speaker_b_id bits_per_sample: 16 num_channels: 2 sample_rate: 48000- output_speakers (必填, ID 列表): 扬声器 列表,路由器可以向其输出。必须至少有 2 个且最多 8 个扬声器。列出的第一个 扬声器在设备启动时是活动输出。
- bits_per_sample (必填, 正整数): 音频流的位深度。必须在
8和32之间。 每个输出扬声器必须使用此位深度。 - num_channels (必填, 正整数): 音频声道数。可选值为
1或2。每个输出 扬声器必须使用此声道数。 - sample_rate (必填, 正整数): 音频流的采样率,单位为 Hz。必须在
8000和96000之间。每个输出扬声器必须使用此采样率。
router.speaker.switch_output 动作
Section titled “router.speaker.switch_output 动作”此动作将活动输出切换到指定的扬声器。目标必须是配置的
output_speakers 之一。
on_...: - router.speaker.switch_output: target_speaker: speaker_b_id配置变量:
- id (可选, ID): 要控制的路由器扬声器。默认为 您的 YAML 中唯一的一个。
- target_speaker (必填, ID, 可模板化):
要切换到的输出扬声器。必须是配置的
output_speakers之一。
NOTE
在播放音频时切换输出会丢弃之前输出上仍缓冲的任何音频。这会在切换时刻产生短暂的 不连续。
将路由器与 template select 配对,可以从前端(如 Home Assistant)选择活动输出。select 的 on_value 触发器调用切换输出动作,将每个选项
映射到一个已配置的输出扬声器。这两个引用的扬声器是
在 YAML 的其他地方配置的 I²S 音频扬声器。
speaker: - platform: router id: router_id output_speakers: - spdif_speaker_id - analog_speaker_id bits_per_sample: 16 num_channels: 2 sample_rate: 48000
select: - platform: template name: "音频输出" optimistic: true restore_value: true options: - "SPDIF (TOSLINK)" - "Analog (I2S)" on_value: - router.speaker.switch_output: id: router_id target_speaker: !lambda |- if (x == "SPDIF (TOSLINK)") { return id(spdif_speaker_id); } return id(analog_speaker_id);