配置 TTS
功能简介
为匹配不同的人设和场景,您可能需要:
- 选择不同的文本转语音(TTS)厂商,例如火山引擎、MiniMax、阿里云等,
- 配置不同的音色。
- 针对 TTS 的音频做个性化调整,例如音量、语速、语调等;
- 特殊规则过滤 TTS 的内容。例如“(开心地说)今天天气真好呀”,过滤括号内容。
前提条件
- 开通 AI Agent 服务
- 开通对应 TTS 厂商服务:
- 方式1:直接通过 zego_test 账号体验
- 方式2:通过 ZEGO 购买 TTS 服务。请联系 ZEGO 商务获取账号及鉴权信息
- 方式3:自行购买 TTS 服务,获取密钥信息等
使用方式
目前可通过 4 个接口设置 TTS 相关参数:
| 接口 | 说明 |
|---|---|
| 注册智能体 | 设置厂商、音色、语速等参数。 |
| 创建语音智能体实例 创建数字人智能体实例 | 设置厂商、音色、语速等参数。 说明 如果不设置,默认会使用注册 Agent 智能体(RegisterAgent)携带的 TTS 参数。 |
| 修改智能体实例 | 设置音色、语速等参数。 注意 不支持修改 FilterText 参数。 |
TTS 参数说明
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| Vendor | String | 是 | 文本转语音(TTS)服务提供商。可选值:
说明 此参数在更新智能体实例时无法更新 |
| Params | Object | 是 | TTS 配置参数,格式为 JSON 对象。包含 app 参数(用于认证)和其他参数(用于调整 TTS 效果)。详见下方 Params 参数说明。 |
| FilterText | Array of Object | 否 | 从输入给 TTS 的内容中(一般是 LLM 返回的内容或者 SendAgentInstanceTTS 接口的 Text 参数值)过滤掉指定标点符号内的文本,然后再进行语音合成。比如把“(开心的说)即构科技欢迎你!”括号内的内容过滤掉,再进行语音合成,则设置成[{"BeginCharacters": "(", "EndCharacters": ")"}]注意 FilterText 是一个 Object 数组。其中的每个 Object 包含两个字符串类型的参数:BeginCharacters 和 EndCharacters。 说明 此参数在更新智能体实例时无法更新 |
| TerminatorText | String | 否 | 可用于设置 TTS 的终止文本。若输入给 TTS 的内容中(一般是 LLM 返回的内容或者 SendAgentInstanceTTS 接口的 Text 参数值)出现匹配 TerminatorText 字符串的内容,则本轮 TTS 从 TerminatorText 字符串(包含)开始的内容将不再进行语音合成。 说明 双向流式只能设置一个字符。最大长度:4 个字符。 |
| CharacterFilter | Array of String | 否 | 输入给 TTS 的内容中(一般是 LLM 返回的内容或者 SendAgentInstanceTTS 接口的 Text 参数值)指定的字符串不参与语音合成。 注意 数组内每个字符串代表一个要被过滤掉的字符串,每个字符串不超过 2 个字符。 说明 此参数在更新智能体实例时无法更新 |
Params 参数说明
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| app | object | 是 | 用于 TTS 服务鉴权,不同的 Vendor 值要求传入的 app 参数的结构不同。详见下方各厂商 app 参数说明。 |
| 其他参数 | - | 否 | 除 app 参数外,还可以传入其他 TTS 配置参数来调整语音合成效果,这些参数会直接透传给对应的 TTS 服务提供商。 您可以根据 Vendor 的值,参考如下服务提供商的官方文档获取所需信息:
|
app 参数及 其他 TTS 参数在不同厂商的定义都不一样,请参考下方各厂商的参数说明。
过滤部分文本内容后再合成语音
说明
过滤内容功能是可选项,可根据您的实际需求设置。
在某些场景下您可能需要对 LLM 生成的文本内容进行过滤,然后再进行语音合成。例如在陪伴类 APP 中,可能会要求 LLM 在对话中使用括号来表示情绪或者语气,但是这些内容仅作字幕显示供用户阅读,不需要进行语音合成:
(开心的说)即构科技欢迎你!这里“(开心的说)”就不需要进行语音合成。
控制文本过滤有三种方式,分别如下:
通过起止符 FilterText 指定起始符和结束符之间的内容不进行语音合成。
以“(开心的说)即构科技欢迎你!”,过滤()内的内容为例
"TTS":{
....
"FilterText": [
{
"BeginCharacters": "(",
"EndCharacters": ")"
}
]
.....
}通过终止符 TerminatorText 指定特定字符串后的内容不进行语音合成。
以“即构科技欢迎你! #2025年1月1日。”过滤#之后内容为例
"TTS":{
....
"TerminatorText": "#"
.....
}通过字符过滤 CharacterFilter 指定特定的字符串不进行语音合成。
以“- **明天10点开会**”过滤符号 - 和 * 为例
"TTS":{
....
"CharacterFilter": ["-","*"]
.....
}