forked from xiaozhi/xiaozhi-esp32
* Adapt boards to v2 partition tables * fix esp log error * fix display style * reset emotion after download assets * fix compiling * update assets default url * Add user only tools * Add image cache * smaller cache and buffer, more heap * use MAIN_EVENT_CLOCK_TICK to avoid audio glitches * bump to 2.0.0 * fix compiling errors --------- Co-authored-by: Xiaoxia <terrence.huang@tenclass.com>
SPIFFS Assets Builder
这个脚本用于构建 ESP32 项目的 SPIFFS 资源分区,将各种资源文件打包成可在设备上使用的格式。
功能特性
- 处理唤醒网络模型 (WakeNet Model)
- 集成文本字体文件
- 处理表情符号图片集合
- 自动生成资源索引文件
- 打包生成最终的
assets.bin文件
依赖要求
- Python 3.6+
- 相关资源文件
使用方法
基本语法
./build.py --wakenet_model <wakenet_model_dir> \
--text_font <text_font_file> \
--emoji_collection <emoji_collection_dir>
参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
--wakenet_model |
目录路径 | 否 | 唤醒网络模型目录路径 |
--text_font |
文件路径 | 否 | 文本字体文件路径 |
--emoji_collection |
目录路径 | 否 | 表情符号图片集合目录路径 |
使用示例
# 完整参数示例
./build.py \
--wakenet_model ../../managed_components/espressif__esp-sr/model/wakenet_model/wn9_nihaoxiaozhi_tts \
--text_font ../../components/xiaozhi-fonts/build/font_puhui_common_20_4.bin \
--emoji_collection ../../components/xiaozhi-fonts/build/emojis_64/
# 仅处理字体文件
./build.py --text_font ../../components/xiaozhi-fonts/build/font_puhui_common_20_4.bin
# 仅处理表情符号
./build.py --emoji_collection ../../components/xiaozhi-fonts/build/emojis_64/
工作流程
-
创建构建目录结构
build/- 主构建目录build/assets/- 资源文件目录build/output/- 输出文件目录
-
处理唤醒网络模型
- 复制模型文件到构建目录
- 使用
pack_model.py生成srmodels.bin - 将生成的模型文件复制到资源目录
-
处理文本字体
- 复制字体文件到资源目录
- 支持
.bin格式的字体文件
-
处理表情符号集合
- 扫描指定目录中的图片文件
- 支持
.png和.gif格式 - 自动生成表情符号索引
-
生成配置文件
index.json- 资源索引文件config.json- 构建配置文件
-
打包最终资源
- 使用
spiffs_assets_gen.py生成assets.bin - 复制到构建根目录
- 使用
输出文件
构建完成后,会在 build/ 目录下生成以下文件:
assets/- 所有资源文件assets.bin- 最终的 SPIFFS 资源文件config.json- 构建配置output/- 中间输出文件
支持的资源格式
- 模型文件:
.bin(通过 pack_model.py 处理) - 字体文件:
.bin - 图片文件:
.png,.gif - 配置文件:
.json
错误处理
脚本包含完善的错误处理机制:
- 检查源文件/目录是否存在
- 验证子进程执行结果
- 提供详细的错误信息和警告
注意事项
- 确保所有依赖的 Python 脚本都在同一目录下
- 资源文件路径使用绝对路径或相对于脚本目录的路径
- 构建过程会清理之前的构建文件
- 生成的
assets.bin文件大小受 SPIFFS 分区大小限制