小智AI语音对话盒子的自定义主题(包括唤醒词模型、表情包、文本字体、聊天背景),在线生成和导出 assets.bin 文件。
用户要自定义一个 assets.bin 文件,分为 3 个步骤。
给出一些常见的板子的快捷选择配置项,例如
也可以自定义芯片(可以选择 esp32s3,esp32c3,esp32p4,esp32c6),自定义分辨率大小,颜色目前只支持 16位的RGB565
目前支持两种唤醒词配置方式:预设唤醒词和自定义唤醒词。
对于 C3/C6 芯片,只支持 WakeNet9s 的唤醒词模型。对于 S3/P4 芯片,只支持 WakeNet9 的唤醒词模型。
常用预设列表如下:
| 唤醒词 | WakeNet9s (C3/C6) | WakeNet9 (S3/P4) |
|---|---|---|
| Hi,乐鑫 | wn9s_hilexin | wn9_hilexin |
| Hi,ESP | wn9s_hiesp | wn9_hiesp |
| 你好小智 | wn9s_nihaoxiaozhi | wn9_nihaoxiaozhi_tts |
| Hi,Jason | wn9s_hijason_tts2 | wn9_hijason_tts2 |
| 小爱同学 | - | wn9_xiaoaitongxue |
| 嗨小欧 | - | wn9_hai1xiao3ou1_tts3 |
| 你好小瑞 | - | wn9_ni3hao3xiao3rui4_tts3 |
唤醒词参考 spiffs_assets/pack_model.py 把 share/wakenet_model 下对应的模型目录打包成 srmodels.bin。
目前仅 ESP32-S3 芯片支持自定义唤醒词。用户可以输入自定义的中文或英文命令词:
mn6_cn 或 mn7_cn 模型,支持拼音输入(如:ni hao xiao zhi)。mn6_en 或 mn7_en 模型,支持纯英文单词。自定义唤醒词功能会根据用户定义的命令词生成 MultiNet 配置,并包含在 assets.bin 中。
用户可以选择预设字体(位于 share/fonts 目录),无需字体制作过程,常用字体有:
用户也可以上传自定义字体:
自定义字体参考 lv_font_conv/lib/convert.js 转换成 cbin 格式,转换后的文件命名为 font_[字体名][字号][BPP].bin
一个常见的表情集合一共包含 21 张图片,其中一张为 neutral 默认表情,其余为表达不同情绪的表情。 不同表情对应的 Emoji 如下:
| 😶 | neutral | | 🙂 | happy | | 😆 | laughing | | 😂 | funny | | 😔 | sad | | 😠 | angry | | 😭 | crying | | 😍 | loving | | 😳 | embarrassed | | 😯 | surprised | | 😱 | shocked | | 🤔 | thinking | | 😉 | winking | | 😎 | cool | | 😌 | relaxed | | 🤤 | delicious | | 😘 | kissy | | 😏 | confident | | 😴 | sleepy | | 😜 | silly | | 🙄 | confused |
用户可以选择预设表情包,预设表情有:
share/twemoji32)share/twemoji64)用户也可以自定义表情包:
背景分为浅色模式和深色模式两种配置,默认为颜色配置
用户可以修改默认颜色,也可以加入静态图片作为背景。 静态图片可以为两张不一样的图片,也可以配置为一张图。 背景图片会自动适配屏幕分辨率的大小,格式通常为RGB565的位图,带64字节的header,内容为lv_image_dsc_t。
用户在主题设计的过程中,可以随时点击右上角的生成按钮,通过弹窗的方式,显示要打包的资源清单。 用户点击“确定”后,开始等待生成,如果用户自定义了字体文件,则制作字体需要的时间会比较长,制作结果可以缓存起来,重新生成的时候速度更快。
现在已经实现了浏览器端本地生成 assets.bin 的功能,无需后端 API。
项目现在使用完全基于浏览器的本地生成方案:
pack_model.py 的功能,在浏览器端打包唤醒词模型为 srmodels.binspiffs_assets_gen.py 的功能,生成最终的 assets.bin 文件build.py 的资源处理流程public/static/wakenet_model/ 加载对应模型并打包。public/static/multinet_model/ 加载 MultiNet 模型,并根据用户定义的命令词生成配置。生成的 assets.bin 包含索引文件 index.json,内容大概如下:
例子1:
{
"version": 1,
"chip_model": "esp32s3",
"display_config": {
"width": 320,
"height": 240,
"monochrome": false,
"color": "RGB565"
},
"srmodels": "srmodels.bin",
"text_font": "font_puhui_common_30_4.bin",
"skin": {
"light": {
"text_color": "#000000",
"background_color": "#FFFFFF",
"background_image": "background_light.raw"
},
"dark": {
"text_color": "#FFFFFF",
"background_color": "#121212",
"background_image": "background_dark.raw"
}
},
"emoji_collection": [
{
"name": "sleepy",
"file": "sleepy.png"
},
...
],
"multinet": {
"model": "mn6_cn",
"command": "ni hao xiao zhi",
"threshold": 20,
"duration": 3000
}
}
例子2:
{
"version": 1,
"chip_model": "esp32c3",
"display_config": {
"width": 240,
"height": 240,
"monochrome": false,
"color": "RGB565"
},
"srmodels": "srmodels.bin",
"text_font": "font_puhui_common_16_4.bin",
"skin": {
"light": {
"text_color": "#000000",
"background_color": "#FFFFFF",
},
"dark": {
"text_color": "#FFFFFF",
"background_color": "#121212"
}
},
"emoji_collection": [
{
"name": "sleepy",
"file": "sleepy.png"
},
...
]
}
25 commits
JavaScript
50.2%
Vue
49.5%
小智AI语音对话盒子的自定义主题(包括唤醒词模型、表情包、文本字体、聊天背景),在线生成和导出 assets.bin 文件。
用户要自定义一个 assets.bin 文件,分为 3 个步骤。
给出一些常见的板子的快捷选择配置项,例如
也可以自定义芯片(可以选择 esp32s3,esp32c3,esp32p4,esp32c6),自定义分辨率大小,颜色目前只支持 16位的RGB565
目前支持两种唤醒词配置方式:预设唤醒词和自定义唤醒词。
对于 C3/C6 芯片,只支持 WakeNet9s 的唤醒词模型。对于 S3/P4 芯片,只支持 WakeNet9 的唤醒词模型。
常用预设列表如下:
| 唤醒词 | WakeNet9s (C3/C6) | WakeNet9 (S3/P4) |
|---|---|---|
| Hi,乐鑫 | wn9s_hilexin | wn9_hilexin |
| Hi,ESP | wn9s_hiesp | wn9_hiesp |
| 你好小智 | wn9s_nihaoxiaozhi | wn9_nihaoxiaozhi_tts |
| Hi,Jason | wn9s_hijason_tts2 | wn9_hijason_tts2 |
| 小爱同学 | - | wn9_xiaoaitongxue |
| 嗨小欧 | - | wn9_hai1xiao3ou1_tts3 |
| 你好小瑞 | - | wn9_ni3hao3xiao3rui4_tts3 |
唤醒词参考 spiffs_assets/pack_model.py 把 share/wakenet_model 下对应的模型目录打包成 srmodels.bin。
目前仅 ESP32-S3 芯片支持自定义唤醒词。用户可以输入自定义的中文或英文命令词:
mn6_cn 或 mn7_cn 模型,支持拼音输入(如:ni hao xiao zhi)。mn6_en 或 mn7_en 模型,支持纯英文单词。自定义唤醒词功能会根据用户定义的命令词生成 MultiNet 配置,并包含在 assets.bin 中。
用户可以选择预设字体(位于 share/fonts 目录),无需字体制作过程,常用字体有:
用户也可以上传自定义字体:
自定义字体参考 lv_font_conv/lib/convert.js 转换成 cbin 格式,转换后的文件命名为 font_[字体名][字号][BPP].bin
一个常见的表情集合一共包含 21 张图片,其中一张为 neutral 默认表情,其余为表达不同情绪的表情。 不同表情对应的 Emoji 如下:
| 😶 | neutral | | 🙂 | happy | | 😆 | laughing | | 😂 | funny | | 😔 | sad | | 😠 | angry | | 😭 | crying | | 😍 | loving | | 😳 | embarrassed | | 😯 | surprised | | 😱 | shocked | | 🤔 | thinking | | 😉 | winking | | 😎 | cool | | 😌 | relaxed | | 🤤 | delicious | | 😘 | kissy | | 😏 | confident | | 😴 | sleepy | | 😜 | silly | | 🙄 | confused |
用户可以选择预设表情包,预设表情有:
share/twemoji32)share/twemoji64)用户也可以自定义表情包:
背景分为浅色模式和深色模式两种配置,默认为颜色配置
用户可以修改默认颜色,也可以加入静态图片作为背景。 静态图片可以为两张不一样的图片,也可以配置为一张图。 背景图片会自动适配屏幕分辨率的大小,格式通常为RGB565的位图,带64字节的header,内容为lv_image_dsc_t。
用户在主题设计的过程中,可以随时点击右上角的生成按钮,通过弹窗的方式,显示要打包的资源清单。 用户点击“确定”后,开始等待生成,如果用户自定义了字体文件,则制作字体需要的时间会比较长,制作结果可以缓存起来,重新生成的时候速度更快。
现在已经实现了浏览器端本地生成 assets.bin 的功能,无需后端 API。
项目现在使用完全基于浏览器的本地生成方案:
pack_model.py 的功能,在浏览器端打包唤醒词模型为 srmodels.binspiffs_assets_gen.py 的功能,生成最终的 assets.bin 文件build.py 的资源处理流程public/static/wakenet_model/ 加载对应模型并打包。public/static/multinet_model/ 加载 MultiNet 模型,并根据用户定义的命令词生成配置。生成的 assets.bin 包含索引文件 index.json,内容大概如下:
例子1:
{
"version": 1,
"chip_model": "esp32s3",
"display_config": {
"width": 320,
"height": 240,
"monochrome": false,
"color": "RGB565"
},
"srmodels": "srmodels.bin",
"text_font": "font_puhui_common_30_4.bin",
"skin": {
"light": {
"text_color": "#000000",
"background_color": "#FFFFFF",
"background_image": "background_light.raw"
},
"dark": {
"text_color": "#FFFFFF",
"background_color": "#121212",
"background_image": "background_dark.raw"
}
},
"emoji_collection": [
{
"name": "sleepy",
"file": "sleepy.png"
},
...
],
"multinet": {
"model": "mn6_cn",
"command": "ni hao xiao zhi",
"threshold": 20,
"duration": 3000
}
}
例子2:
{
"version": 1,
"chip_model": "esp32c3",
"display_config": {
"width": 240,
"height": 240,
"monochrome": false,
"color": "RGB565"
},
"srmodels": "srmodels.bin",
"text_font": "font_puhui_common_16_4.bin",
"skin": {
"light": {
"text_color": "#000000",
"background_color": "#FFFFFF",
},
"dark": {
"text_color": "#FFFFFF",
"background_color": "#121212"
}
},
"emoji_collection": [
{
"name": "sleepy",
"file": "sleepy.png"
},
...
]
}
25 commits
JavaScript
50.2%
Vue
49.5%