三步扩大 xiaozhi-esp32 唤醒词存储:自定义分区

📅 发布时间:2026/9/3 22:40:44
三步扩大 xiaozhi-esp32 唤醒词存储:自定义分区
三步扩大 xiaozhi-esp32 唤醒词存储自定义分区【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32你想给 xiaozhi-esp32 换一套自定义唤醒词模型做好了往设备一写却提示 model 分区剩余空间不足。原因是默认分区表只给模型区留了 960KB放一个 ESP-SR 的 wakenet 模型再加几个音效文件就见底。好消息是项目的 partitions/v1/ 目录已备好扩容模板构建配置里改一行就能切换。读完这篇你会按自己设备的 Flash 容量选对分区模板、在 menuconfig 中生效并完成烧录让设备获得最大约 4MB 的专用唤醒词存储区。原理速览ESP-IDF 把整片 Flash 切成若干分区固件和数据各占一段。xiaozhi-esp32 的 v1 分区表用model分区spiffs 子类型存放唤醒词模型和内置资源v2 则改名为assets分区并支持联网更新。分区表 CSV 的核心字段就是 Name / Type / SubType / Offset / SizeSize 决定每个分区能装多少东西# Name, Type, SubType, Offset, Size, Flags model, data, spiffs, 0x10000, 0x3f0000, ota_0, app, ota_0, 0x400000, 6M, ota_1, app, ota_1, 0xa00000, 6M,项目预置模板里16m_custom_wakeword.csv把model从 0xF0000960KB扩到 0x3f0000约 4MB同时保留两个 6M 的 OTA 应用区模板文件目标 Flashmodel/assets 分区应用分区4m.csv4MBmodel 960KBfactory 3M无双 OTA16m.csv16MBmodel 960KBota_0 / ota_1 各 6M16m_custom_wakeword.csv16MBmodel 约 4MBota_0 / ota_1 各 6Mv2 系列模板4–32MBassets 2–16MB视模板而定操作路径确认 Flash 容量并选定分区模板目标是选出一个与设备匹配的分区表文件。看一下开发板的 Flash 芯片型号或上电串口日志容量通常是 4/8/16/32MB 几档。16MB Flash 且想保留双 OTA直接用partitions/v1/16m_custom_wakeword.csvmodel 分区直接给到约 4MB。4MB / 8MB Flash用对应的 v1 模板接受 960KB 的 model 分区或自行复制模板压缩 ota 区来腾空间。32MB Flash现成的 32m.csv 里 model 仍是 960KB想扩容就复制 16m_custom_wakeword.csv 后自行调整 Size 列保证各分区偏移对齐、总和不超过 Flash 容量。⚠️ 容易误以为大容量模板分区一定更大。32m.csv 的 model 分区并没有扩容如果你的需求是唤醒词模型优先参考 16m_custom_wakeword.csv 的布局。在 menuconfig 中指定分区表目标是一行配置让构建系统改用你的分区模板。先设置芯片目标再进菜单idf.py set-target esp32s3 idf.py menuconfig在Partition Table菜单下把Custom partition CSV file改为partitions/v1/16m_custom_wakeword.csv保存退出后sdkconfig 中应出现这一行项目默认已开启CONFIG_PARTITION_TABLE_CUSTOMy所以只需改路径CONFIG_PARTITION_TABLE_CUSTOM_FILENAMEpartitions/v1/16m_custom_wakeword.csv⚠️ 切换开发板型号后该板自带的 config.json 会用默认值覆盖 sdkconfig。如果你的板子属于这种情况选板后务必回来再确认一次这个路径。编译并烧录到设备目标是让新分区表连同固件一起写入设备。idf.py build idf.py -p /dev/ttyUSB0 flash编译成功后build 目录下会生成解码后的分区表和分区表二进制烧录输出里能看到各 bin 的写入地址最后以Hard resetting via RTS pin...结束。设备重启后按新分区表组织存储。⚠️ 本项目分区表偏移固定为 0x8000见 sdkconfig.defaults 中的CONFIG_PARTITION_TABLE_OFFSET。如果改用 esptool 手动只写分区表地址必须填 0x8000写成默认的 0x800 不会生效。验证与排错验证一无需硬件编译完成后打开 build 目录下解码出的分区表文件确认 model 一行model,data,spiffs,0x10000,0x3f0000,Size 显示 0x3f0000 说明 4MB 扩容已生效。验证二设备上烧录后查看串口启动日志确认 model 分区正常挂载、唤醒词加载成功然后对着设备说一次自定义唤醒词有应答即完成。常见问题重启后 WiFi 密码、激活状态丢了。改分区表会清除 nvs 数据区这是预期行为重新配网即可。日志显示 model 仍是 960KB。多半是板级 config.json 把CONFIG_PARTITION_TABLE_CUSTOM_FILENAME重置了改完后重新检查 sdkconfig。v1 与 v2 混用导致挂载异常。两者的 model/assets 分区定义不同换表后请完整烧录固件不要只更新 app。延伸方向想把唤醒词模型、主题资源改为联网下发可以看 v2 分区表的设计说明partitions/v2/README.md。想给设备加自定义工具或唤醒词逻辑参考 MCP 工具用法docs/mcp-usage.md。适配新开发板或修改板级默认配置参考docs/custom-board.md。写在最后分区这一步走通后唤醒词区就不再是瓶颈。找块板子按上面的顺序跑一遍改分区、编译、烧录总共也就一杯茶的时间。下一篇会讲如何生成自己的唤醒词模型并写入 assets 分区。【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考