小智怎么换音色和人设:这些不在固件里改
- 分清哪些个性化在固件里改、哪些在服务端改
- 知道音色、人设、昵称、语言分别在哪一层配置
- 理解为什么换音色比换唤醒词容易得多
- 在官方服务器和自建服务端两种情况下都知道往哪找
本文讲解原理与流程、引用关键片段并注明出处,版权归原作者,遵循其开源协议;一切以上游仓库最新版本为准。
"我想让小智换个声音,是不是要改固件重新烧?"
不用。而且这个误会挺费时间的——有人为了换个音色,跑去翻源码、翻 menuconfig 选项,翻了半天什么都没找到,因为它根本不在那儿。
具体配置界面和可选项会随服务端版本变化,以你实际使用的服务端当前状态为准。小智固件代码版权归原作者 78 及社区贡献者,遵循 MIT 协议。本文写于 2026 年 7 月底。
先分清两层
小智是设备 + 服务端的组合,个性化的东西分在两层,搞清楚这个分工,你就再也不会找错地方了:
固件层(要重新编译烧录)
- 唤醒词
- 引脚、音频 codec、屏幕这些硬件配置
- 板型
服务端层(改配置即可,不用碰固件)
- 音色(它用什么声音说话)
- 人设 / 角色(它的性格、说话风格)
- 昵称(叫它什么,默认是"小智")
- 对话语言
- 角色介绍 / 提示词
判断规律其实很直观:跟"硬件长什么样"有关的,在固件里;跟"它是个什么样的人"有关的,在服务端。
音色和人设显然属于后者——它们是云端大模型和语音合成在决定,不是芯片在决定。芯片只负责把音频数据播出来,至于那段音频听起来是谁的声音,是服务端合成好的。
想通这一层,还能顺带解释一件事:为什么换音色很轻松,换唤醒词却那么难。 唤醒词是离线跑在芯片上的,要靠预先训练好的模型资源,动它就得动固件、还依赖模型能不能拿到(相关的坑见小智唤醒词改了不生效)。而音色只是服务端合成时换个参数,它不需要芯片知道任何事。
用官方服务器时在哪改
如果你的设备接的是官方服务器(免开发环境烧录的固件默认就是这条路),那么在官方控制台里配置。
可配置的东西大致是这些:角色模板(有现成的可选)、昵称、对话语言、角色音色,以及自定义角色介绍。
这里最值得花时间的其实不是音色,是角色介绍——也就是给大模型的提示词。音色决定它听起来像谁,角色介绍决定它像谁在说话。同样一个音色,配上不同的角色设定,体验差别比换音色大得多。
一个实用建议:别把角色介绍写成一段形容词堆砌("你是一个活泼可爱、聪明伶俐的助手")。这种写法对大模型的约束很弱。更有效的是写具体的行为规则——说话多长、能不能反问、遇到不知道的怎么答、什么话题不聊。做过提示词的人对这套很熟,用在这里完全一样。
自建服务端时在哪改
如果你自建了服务端,配置就在你自己的服务里,能玩的空间也更大。
以社区里比较主流的 xinnan-tech/xiaozhi-esp32-server 为例,它的全模块安装方式提供多用户/多智能体管理和 Web 控制台,配置存数据库;而最简化安装是单体管理,数据存在配置文件里。想要在界面上方便地调音色人设,走全模块那条路更合适——代价是配置要求更高(全 API 方案约 2 核 4G,含本地语音方案要 4 核 8G)。
自建的好处在于 TTS 是你自己选的。该项目支持 EdgeTTS 这类免费平台,也支持火山、讯飞等商业服务。音色可选的范围直接取决于你接了哪家 TTS——换 TTS 供应商,就等于换了一整套音色库。
另外,社区里的 Java 版实现 joey-zhou/xiaozhi-esp32-server-java 明确把音色定制、角色切换、对话记录管理做成了平台功能。如果你的诉求是"给多个设备、多个角色做管理",这类带控制台的实现会比手工改配置文件舒服。
各服务端实现的功能和部署要求差异不小,选之前建议先看各自 README 的配置要求,别照抄别人的结论。相关取舍见小智自建后端怎么选。
角色介绍到底怎么写
既然角色介绍是性价比最高的一项,值得单独讲讲怎么写。
先说最常见的写法为什么不好用。 大多数人写的是这种:
你是一个活泼可爱、聪明伶俐、乐于助人的智能助手。
一堆形容词,对模型的约束几乎为零。"活泼"是多活泼?体现在哪?模型只能自由发挥,结果就是你觉得"好像没什么变化"。
更有效的写法是给具体的行为规则。 大致覆盖这几块:
身份与关系 —— 它是谁,和用户什么关系。"你是放在厨房的小助手,主人做饭时会问你问题",比"你是智能助手"信息量大得多。
说话长度 —— 这条对语音设备极其重要,却最常被忘。文字场景下回答长点无所谓,语音场景下一段三百字的回答是灾难,用户听到一半就想拔电源。明确写"每次回答控制在两三句话以内,除非用户要求详细说"。
语气和用词 —— 用不用口语、能不能开玩笑、称呼用什么。
不知道时怎么办 —— 不写这条,模型倾向于硬答。明确写"不确定的事直接说不知道,别猜"。
边界 —— 哪些话题不聊、什么情况下要提醒用户找人。
为什么"说话长度"值得单独强调:文字可以扫读,语音只能顺着听,信息密度低、还不能跳过。同一个模型、同一个音色,把回答从五句压到两句,体验提升通常比换音色明显得多。 这是语音产品和聊天产品最实质的差别之一,也是新手最容易忽略的一条。
写完记得实际对话几轮再调——提示词是调出来的,不是一次写对的。
想做"专属感",优先级建议
如果你的真实目的是"让它像我的东西",按投入产出排,我会这样排:
第一优先:角色介绍 / 提示词。 零成本、立刻生效、感知最强。改一句话,它整个说话方式就变了。
第二优先:音色 + 昵称。 也是服务端配置,点几下的事。
第三优先:外观。 外壳、屏幕上的表情——这些对"专属感"的贡献其实远超技术层面的折腾,但常被工程师忽略。
最后才是唤醒词。 投入最大、坑最多、收益最小。它是你在其他都做完之后才该碰的东西,而不是一上来就死磕的。
很多人一开始就卡在唤醒词上,折腾一周没进展,整个项目就停了。换个顺序,一天就能得到一个明显"是我的"的小智。
相关:把小智调成你自己的讲个性化的整体思路,小智唤醒词改了不生效讲唤醒词那条路上的已知问题,小智自建后端怎么选讲服务端方案。