芯片支持与存储规格
选开发板或移植新板子之前,先要弄清三件事:固件支持哪些芯片、芯片决定了哪种音频与唤醒词路径、Flash 容量对应哪张分区表。本页只记录固件代码和发布清单能证明的内容;芯片本身的电气参数请查 Espressif 官方数据手册。
一、支持的芯片
下表数量来自 v2.5.2 发布清单(共 154 个板目录、188 个固件变体),完整名单见支持的开发板。
| 芯片 | 板目录 | 固件变体 | 音频输入引擎 | 本机唤醒词 |
|---|---|---|---|---|
| ESP32-S3 | 114 | 126 | AfeAudioEngine | 有 PSRAM 时默认 Wakenet model with AFE;可选 MultiNet 自定义唤醒词 |
| ESP32-P4 | 6 | 27 | AfeAudioEngine | 同 ESP32-S3 |
| ESP32-C3 | 10 | 10 | LiteAudioEngine | 可选 Wakenet model without AFE |
| ESP32-C6 | 10 | 10 | LiteAudioEngine | 同 ESP32-C3 |
| ESP32 | 6 | 7 | LiteAudioEngine | 需要 PSRAM 才能选 Wakenet model without AFE |
| ESP32-S31 | 4 | 4 | AfeAudioEngine | 同 ESP32-S3,需要 ESP-IDF 6.1 或以上 |
| ESP32-C5 | 4 | 4 | LiteAudioEngine | 同 ESP32-C3 |
依据:上游 main/audio/README.md(引擎与目标芯片对应关系)、main/Kconfig.projbuild(WAKE_WORD_TYPE 的 depends on 条件)。
两种引擎的差别:
AfeAudioEngine:使用一个 FD AFE 实例,唤醒词与上行语音处理共用;启用音频处理时带回声消除(AEC)与 VAD。LiteAudioEngine:直接输出原始单声道 PCM,不做 AEC 和 VAD;唤醒词(如已配置)使用独立的 WakeNet。
二、PSRAM 要求
- ESP32-S3 / P4 / S31:自定义唤醒词(MultiNet)、AFE 唤醒词、AFE 音频处理(
USE_AUDIO_PROCESSOR)都要求带 PSRAM。 - ESP32:没有 PSRAM 时唤醒词默认关闭,需要按键或外接模块触发对话,见ESP32 丐版。
- 显示库 LVGL 的内存池也分「有 PSRAM」与「无 PSRAM」两套实现(
main/display/lvgl_psram_pool.h、lvgl_no_psram_pool.h)。 - N8R2(8 MB Flash、2 MB PSRAM)等配置的额外设置见硬件搭建指南。
三、分区表(v2)
v2 分区表在应用分区之外增加了 assets 分区,用于存放唤醒词模型、字体、表情和聊天背景,详见自定义 Assets 指南。
| 文件 | 应用分区 | assets |
|---|---|---|
4m.csv | 单个 factory(0x2F0000),无双 OTA 分区 | 1 MB |
8m.csv | ota_0 / ota_1 各 0x2F0000 | 2 MB |
16m.csv | ota_0 / ota_1 各 0x3F0000(约 4 MB) | 8 MB |
16m_c3.csv | ota_0 / ota_1 各 0x3F0000(约 4 MB) | 4000K(受可用 mmap 页限制) |
32m.csv | ota_0 / ota_1 各 4 MB | 16 MB |
另有 partitions/v1/ 保留旧布局(用 model 分区存放模型,没有 assets 分区)。
四、音频参数
- 多数板级
config.h定义AUDIO_INPUT_SAMPLE_RATE 16000、AUDIO_OUTPUT_SAMPLE_RATE 24000;上行送入编码器的是 16 kHz 单声道 PCM。 - Opus 帧长为 60 ms(
OPUS_FRAME_DURATION_MS)。 - 板载麦克风通道默认按
M(单麦)或MR(单麦加回放参考)声明,声明必须与编解码器返回的交织 PCM 一致。
五、开发环境
固件要求 ESP-IDF v6.0.1 或更高,推荐 release/v6.1 分支;v2.5.2 发布矩阵由 ESP-IDF 6.1.0 构建。环境搭建见 ESP-IDF 开发环境搭建。
相关文档
对照来源:78/xiaozhi-esp32 v2.5.2 的 main/audio/README.md、main/Kconfig.projbuild、partitions/v2/。