可以自定义的界面资源与唤醒词
按 2026-11-12 抓取的官方 main 分支 README,小智 AI 支持自定义唤醒词、字体、表情与聊天背景,其中字体、表情与聊天背景可通过官方 Assets 生成器(78/xiaozhi-assets-generator)在网页端在线修改。
界面语言提供 38 种,语音提示优先使用本地化资源,缺失时自动回退到英文。唤醒词与界面语言则属于编译期构建参数,需要搭好 ESP-IDF 环境后用构建脚本指定,两条路径不要混淆。
动手前先查可选值
官方自定义开发板指南(docs/custom-board_zh.md)把语言和唤醒词归为用户构建参数,并给出查询命令,逐字如下:
python scripts/build.py --list-languages
python scripts/build.py --list-languages --json
python scripts/build.py --list-wake-words
python scripts/build.py --list-wake-words --json
改唤醒词之前,先在源码目录里跑一遍查询,确认当前固件实际提供了哪些选项:
- 进入 xiaozhi-esp32 源码根目录并加载 ESP-IDF 环境(README 要求最低 v6.0.1、推荐 release/v6.1 分支,不再支持 5.x)。预期结果:在该目录执行 python scripts/build.py 不带参数时打印帮助信息。
- 若尚未生成 managed_components/ 目录,先执行 idf.py reconfigure。预期结果:目录中出现 managed_components/,唤醒词列表从其中已解析的 ESP-SR 组件读取。
- 执行 python scripts/build.py --list-wake-words。预期结果:终端以文本列出当前可用的唤醒词模型;追加 --json 后以 JSON 格式输出,便于比对与脚本处理。
- 执行 python scripts/build.py --list-languages。预期结果:列出 main/assets/locales/ 下已有的界面语言,同样支持 --json。
- 从列表选定后编译,官方文档示例为 python scripts/build.py my-custom-board --language en-US --wake-word wn9_jarvis_tts。预期结果:默认生成 build/merged-binary.bin,烧录后按新参数生效。
构建参数的取值与查询命令如下:
| 参数 | 取值 |
|---|---|
| --language | 接受 main/assets/locales/ 下已有的 locale |
| --wake-word | 接受 ESP-SR 模型名、nihaoxiaozhi(自动选择与目标芯片兼容的模型)或 disabled |
| --list-languages | 列出 main/assets/locales/ 下已有的界面语言,支持 --json |
| --list-wake-words | 列出当前可用的唤醒词模型,支持 --json |
ESP32-C3/C5/C6 仅支持 WakeNet9s(wn9s_*)模型;ESP32-S3/P4/S31 构建会自动使用 AFE 唤醒引擎。另外官方指南明确:不要在板子的 config.json 中选择语言或具体唤醒词,这些属于用户构建选项,应统一通过 menuconfig 或构建脚本参数配置,方便 CLI、Agent 和在线编译接口共用同一套参数。
源码内置的字体与表情
做自定义开发板或源码编译时,CMakeLists 中还可指定内置字体与表情集合,官方指南按屏幕尺寸给出的参考为:
| 屏幕尺寸 | 字体参考 |
|---|---|
| 小屏幕(128x64 OLED) | font_puhui_basic_14_1 与 font_awesome_14_1 |
| 中小屏幕(240x240) | font_puhui_basic_16_4 与 font_awesome_16_4 |
| 中等屏幕(240x320) | font_puhui_basic_20_4 与 font_awesome_20_4 |
| 大屏幕(480x320+) | font_puhui_basic_30_4 与 font_awesome_30_4 |
表情集合可选 twemoji_32(32x32 像素,小屏幕)或 twemoji_64(64x64 像素,大屏幕)。
更换唤醒词的边界
官方早期问答 Q19 的口径是:更换唤醒词「代码编译支持」,需要自己或找到人配置 IDF 开发环境,修改开源项目代码,在配置 SDK 或 menuconfig 中修改唤醒词,当时可选的为 25 个左右;同时「本开源项目暂时不能定制自定义唤醒词,ESP32乐鑫官方的离线唤醒词识别需要向官方申请,涉及语料和商业费用」。
这属于早期固件口径,可选数量与申请流程以仓库 main 分支与官方文档当前状态为准,动手前以 --list-wake-words 的实际输出为准。
官方问答 Q20 还区分了两个容易混淆的概念:在 xiaozhi.me 控制台改的是大模型配置的智能体角色名字,改完保存后对话时角色知道自己叫什么;离线唤醒词是设备端模型,两者不存在关联,设备唤醒词没有更换时仍用默认唤醒词唤醒。
默认唤醒词本身在官方文档里有两个互相矛盾的说法(问答页写「你好小智」并排除「小智小智」,FAQ 页写「小智小智」),以设备实机首次播报或屏幕提示为准。
三条路径归纳:字体、表情、聊天背景走网页端 Assets 生成器在线修改;界面语言与唤醒词走构建参数,改前先查列表;角色名字走控制台。互不替代,按需选用。