主题
技能库 - 音色切换
「音色切换」是一项开箱即用的系统技能,允许用户在对话中通过自然语言更换设备的对话音色。启用方式详见 技能配置。
1. 触发条件
用户明确表达「换 / 改 / 切换 / 用 XX 音色说」等意图时触发,例如:
- 「换个女声说话」
- 「用东北大叔的声音跟我聊」
- 「切换到小猪佩奇的声音」
2. 支持的切换方式
| 切换方式 | 用户表达示例 |
|---|---|
| 按性别 | 「换成女声 / 男声」 |
| 按年龄 | 「换个小孩 / 老人的声音」 |
| 按风格 | 「温柔一点 / 活泼一点的声音」 |
| 按方言 | 「用东北话 / 四川话说」 |
| 按具体音色名 | 「用小美的声音」 |
| 按克隆音色 | 「用我妈妈的声音说」(需先上传克隆音色) |
3. 音色来源
- 系统音色:平台预置的通用音色(多性别、多年龄、多方言、多风格)。
- 克隆音色:应用下已上传并审核通过的自定义克隆音色。
4. 与音色优先级的关系
平台的音色优先级为:
切换音色技能 > 设备音色 > 人设音色 > 应用音色一旦「音色切换技能」被触发,其结果直接更改设备音色(不改角色音色)。完整优先级与生效机制见 全局人设与音色 - 音色优先级。
5. 生效范围与建联行为 ⚠
「音色切换技能生效时是本次建联还是下次建联」是最高频的疑问,规则如下:
5.1 本轮(当前 WebSocket 会话)
- 切换请求命中后,当前会话内立即持续生效;
- 同步更改「设备音色」记录,即:切换后的音色 = 新的设备音色。
5.2 下次建联
设备下次建联时最终使用哪种音色,取决于端侧是否上行 role_code:
| 下次建联行为 | 是否上行 role_code | 最终使用的音色 |
|---|---|---|
| A | 上行 role_code | 对应角色的人设音色(切换效果被角色音色覆盖) |
| B | 不上行 role_code | 上次切换后的设备音色继续生效 |
5.3 与四种典型场景对齐(引自 全局人设与音色)
| 场景 | 是否传 role_code | 是否用切换技能 | 本轮音色 | 下次建联音色 |
|---|---|---|---|---|
| 1 | 传 | 否 | 角色音色 B | B(若仍传 role_code) |
| 2 | 传 | 是(切到 C) | C(设备音色被改成 C) | 传 role_code → B;不传 → C |
| 3 | 不传 | 否 | 设备音色 A | A |
| 4 | 不传 | 是(切到 C) | C | C |
⚠ 结论:切换技能只改设备音色,不改角色音色。若应用长期依赖
role_code下发角色音色,切换效果只在当前会话有效,下次建联会被角色音色覆盖。
6. 使用场景
- 儿童陪伴类:家长通过语音临时把音色换成「妈妈的克隆音色」讲故事。
- 多角色应用:用户在闲聊中主动尝试不同角色音色,无需回到 App 设置。
- 无障碍场景:用户依据听感偏好动态切换语速、音高相近但音色更合适的音色。
7. 常见问题
- Q:切换后重启设备会不会丢失? A:不会。切换后的音色写入设备音色,重启建联时如不上行
role_code,仍使用切换后的音色。 - Q:能不能切到未克隆的自定义音色? A:不能。可选范围 = 系统音色 + 当前应用下已审核通过的克隆音色。
- Q:切换技能能不能改角色音色? A:不能。角色音色由端侧
role_code决定,需在角色配置中修改。
8. 端侧协议引用 🔌
「本轮生效 / 下次建联覆盖」的核心边界由端侧建连时是否上行 chat.roleCode 参数决定,实现端需按技术手册严格实现:
- 建连参数
chat.roleCode(角色编号) 的字段定义与传参规则 → §4.3 WebSocket 事件族 · chat.roleCode - 小程序侧 / 无 App 侧的角色绑定 HTTP 接口(替代旧
roleCode建连参数,新接入推荐) → §9.2 小程序 API 角色接口族 - 音色优先级链路(切换音色 > 设备音色 > 人设音色 > 应用音色)的应用侧配置入口 → 全局人设与音色 - 音色优先级
📌 关键提醒:若应用长期依赖
chat.roleCode下发角色音色,「音色切换技能」的效果只在当前 WS 会话有效,下次建联会被角色音色覆盖(见 §5.2 表格 A 行)。