跳转到内容

音频与多房间播放 ​

ESP32 带 I2S 接口,可以连接 DAC 和功放,把旧音箱、功放变成网络播放器;也可以接麦克风做录音。适合有一堆老音箱、想搭多房间音乐系统的玩家,或者只想做一个小巧网络收音机的人。

这是什么玩法 ​

方向说明
Squeezelite 播放器作为 Lyrion Music Server(原 Logitech Media Server)的客户端
网络电台拉取 HTTP 音频流并解码播放
蓝牙音箱接收器手机通过蓝牙 A2DP 推送音乐到 ESP32
Snapcast 客户端多房间同步播放
ESPHome 媒体播放器接入 Home Assistant,作为一个 media_player 实体

关键限制:蓝牙 A2DP 属于经典蓝牙 (Classic Bluetooth),只有原版 ESP32 支持。ESP32-S2、S3、C3、C6、H2 等不支持经典蓝牙,只有 BLE,因此无法直接做 A2DP 接收器。选芯片时务必对照 芯片总览。

典型硬件 ​

  • 原版 ESP32 开发板:ESP32-DevKitC,要做蓝牙音箱选它。
  • 带音频编解码的开发板:ESP32-S3-BOX-3、Atom Echo、Core2。
  • I2S DAC:PCM5102A、UDA1334A 等,音质较好;功放:MAX98357A(数字输入的 D 类功放,带喇叭可直接驱动)。
  • 以太网版本:Olimex ESP32-PoE 可用 PoE 供电并走有线网络,对于多房间同步播放比 Wi-Fi 稳定。
  • 麦克风:INMP441、SPH0645 等 I2S 麦克风。

软件与项目 ​

  • squeezelite-esp32:把 ESP32 变成 Squeezebox 兼容播放器,有网页配置界面,支持多种 DAC 和蓝牙接收等功能(具体功能以项目 Wiki 为准)。
  • ESPHome:i2s_audio 与 media_player 组件,可以播放网络流与 HA 推送的 TTS。
  • 乐鑫音频开发框架 ESP-ADF,见 乐鑫官方方案,提供编解码和播放管线。
  • Snapcast:开源同步多房间音频,有 ESP32 客户端项目,成熟度以其仓库为准。
  • ESP-IDF 里的 A2DP sink 示例。

入门路径 ​

  1. 买一块原版 ESP32 加 PCM5102A 与功放,焊好 I2S 三线(BCK、WS、DATA)。
  2. 先跑 ESP-IDF 或 Arduino 的 I2S 播放示例,确认出声。
  3. 想做蓝牙音箱,用现成的 A2DP sink 示例;想做网络电台,用 ESPHome 的 media_player。
  4. 想接入已有的 Lyrion 系统,刷 squeezelite-esp32,通过网页设置 DAC 引脚。
  5. 在 HA 里测试播放、暂停、音量,并让它播放 TTS 提示音。

进阶方向 ​

  • 多房间同步:用 Snapcast 或 Lyrion 的同步功能,注意网络抖动导致的延迟差。
  • 高保真:用外置高精度 DAC,加线性电源,隔离数字噪声。
  • 无损播放:FLAC 解码有一定 CPU 和内存开销,S3 的 PSRAM 更从容。
  • 语音交互:结合麦克风做语音助手,见 语音与 AI。
  • 电子管、旧功放改造:加网络播放功能,保持原有外观。

注意事项 ​

  • 经典蓝牙只在原版 ESP32 可用,这是最常见的选型错误。
  • Wi-Fi 与蓝牙共用天线,同时开启时音频容易卡顿,网络流优先走有线或限制蓝牙使用。
  • 数字噪声:开发板的电源和 I2S 时钟会引入底噪,使用独立 LDO 或隔离。
  • 功放 MAX98357A 的增益与供电要匹配喇叭,大音量下注意发热和电流。
  • 流媒体版权:公开播放或转发音乐流要遵守相关版权规定。

参考资料 ​

ESP32 非官方中文调查手册,与乐鑫科技(Espressif Systems)无隶属关系。