You need to enable JavaScript to run this app.
文档中心
实时音视频

实时音视频

复制全文
下载 pdf
开发指南
通过指令控制语音表现(如情绪)
复制全文
下载 pdf
通过指令控制语音表现(如情绪)
您可以通过指令标签(由 LLM 自动生成或业务实时注入),来控制 AI 播报的情绪(如欢快、伤心)、方言(如四川话、北京话)、语气(如撒娇、吵架)、语速、音量和音调等。同时,可将用户问题作为上下文传递给 TTS,能让 AI 的回复情感更贴合对话场景,实现富有情感的拟人化交互。​
​
Replay
Play
00:00 / 00:00 Live
00:00
Fullscreen
Cssfullscreen
1x
  • 2x
  • 1.5x
  • 1x
  • 0.75x
  • 0.5x
Click and hold to drag
​
​
实现原理​
  1. 标签嵌入(LLM 或业务) :​
  • LLM 自动生成:LLM 实时分析语境,在回复文本中自动插入指定格式的标签。​
  • 业务实时注入:在对话过程中,业务端根据特定事件(如用户投诉、讲笑话等)动态发送指令,为 AI 的下一轮回复注入指定格式的标签。​
  1. 标签解析(平台) :系统识别双大括号 {{ }} 标签(语音合成大模型)或 <cot> 标签(声音复刻大模型),将其转化为 TTS 参数。​
  1. 情感渲染与表达(TTS) :​
  • 2.0 模型:像理解对话一样理解标签里的“要求”,从而调整播报。​
  • 1.0 模型:严格执行标签里的“数值”,从而调整播报。​
使用限制​
该功能仅在使用以下火山引擎 TTS 模型时生效:​
​
支持的模型​
语音合成大模型 2.0(双流式)​
语音合成大模型 1.0(双流式)​
声音复刻大模型 2.0(双流式)​
实现方式​
自然语言指令标签​
{{"additions":...}}​
结构化参数标签​
{{"audio_params":...}}​
COT 局部标签​
<cot>...</cot>​
控制维度​
情绪、方言、语气、语速、音量、音调等​
仅限预设情绪及强度​
情绪、语速、情感风格​
生效范围​
本轮回答中,标签所在的整个子句单元及之后所有子句,直到遇到新标签。​
本轮回答中,标签所在的整个子句单元及之后所有子句,直到遇到新标签。​
仅限于 <cot> 与 </cot> 之间的文字。​
​
语音合成大模型​
步骤 1:开启解析和上下文​
调用 StartVoiceChat 时,配置 TTSConfig.Context:​
QuoteUserQuestion :仅在使用火山语音合成大模型 2.0 时生效,且优先级低于指令标签。​
​
"TTSConfig": {​
"Provider": "volcano_bidirection",​
//...其他配置​
"Context": {​
"TagParse": true, // 设置为 true,开启标签解析​
"QuoteUserQuestion": true // 默认 true,将用户问题传给 TTS,让模型根据对话语境自动匹配合适的回复语气,仅 2.0 模型支持​
}​
}​
​
步骤 2:传入指令标签​
方式1:编写 Prompt 引导 LLM 生成标签​
在 LLM(方舟模型、Coze 智能体或第三方大模型)的系统提示词中引导 LLM 根据语境自动生成标准格式的指令标签。​
对于方舟或第三方大模型,需在 LLMConfig.SystemMessages 编写 Prompt。​
​
火山语音合成大模型 2.0
火山语音合成大模型 1.0
​
通过自然语言指令标签,控制 AI 的情绪、方言、语气、语速、音量和音调等。​
标签要求​
  • 格式:​
  • ​
    {{"additions":{"context_texts":["自然语言描述"]} }}​
    ​
  • 注意末尾 }} 前必须留一个空格。系统解析标签时,会以 {{ 和 }} 作为边界,缺少空格会导致解析失败。​
  • 标签放置位置及生效范围:​
  • 标签须置于所需作用句子的前面,且标签只作用于所在的整个子句单元及之后所有子句,直到遇到新标签。​
  • 例如:下方示例,第一句中性 \-\> 第二句兴奋期待 \-\> 第三句温馨亲切​
  • ​
    没问题,我已经为你预订好了周六去海边的行程。{{"additions":{"context_texts":["语气变得非常兴奋,充满期待"]} }} 那里的沙滩非常漂亮,你一定会玩得非常开心的!{{"additions":{"context_texts":["语速放慢,语气变得温馨亲切"]} }} 不过记得带上防晒霜和遮阳帽,海边的阳光可能会有些强烈。​
    ​
  • 为优化首帧速度,回复的第一句话建议不要携带标签(保持纯文本),从第二句开始按需插入。​
Prompt 编写示例​
​
- 任务:分析对话中的用户情绪,并在回复文本中嵌入情感指令标签,以引导下游 TTS 以匹配的语气、情感和节奏进行播报。​
- 标签格式:{{"additions":{"context_texts":["描述"]} }}​
- 常用控制:​
- 语速:["说慢一点"]​
- 情绪:["用特别伤心的语气"]​
- 方言:["用四川话说"]​
- 语气:["用吵架的语气"]​
- 音量:["声音小一点"]​
- 音调:["音调高一点"]​
- 约束:​
- 为优化首帧速度,首句保持纯文本,从第二句开始添加标签。​
- 标签须置于其所作用句子的前面,且标签的结束符 }} 前必须留一个空格。例如 `{{"additions":{"context_texts":["欢乐一点"]} }} 你好,我很高兴认识你。`。​
​
  • LLM 预期返回:{{"additions":{"context_texts":["你的语气再欢乐一点"]} }}太棒了,恭喜你!​
  • AI 播报(欢乐的语气):太棒了,恭喜你!​
  • 字幕显示:太棒了,恭喜你!​
​
方式2:手动传入标签​
在对话过程中,您可以根据后端识别到的实时事件(如用户讲了个笑话、表达了不满等),动态地为 AI 的下一轮回复注入指令标签。该标签作用于下一轮回答的全局。​
  1. 在您的后端业务逻辑中,识别需要改变 AI 情感的触发点(如通过 ASR 识别到关键词、或者业务逻辑触发)。​
  1. 调用 UpdateVoiceChat 接口:​
  • Command:设为 SetTTSContext​
  • Message:传入一个序列化后的 JSON 字符串。不同模型,指令不同:​
  • 火山语音合成大模型 2.0​
  • ​
    "{\"Tag\":{\"additions\":{\"context_texts\":[\"语气欢乐一点\"]}}}"​
    ​
  • 火山语音合成大模型 1.0​
  • ​
    "{\"Tag\":{\"audio_params\":{\"emotion\":\"happy\",\"emotion_scale\":5}}}"​
    ​
示例: 以火山语音合成大模型 2.0 为例​
​
{​
"AppId": "YOUR_APP_ID",​
"RoomId": "YOUR_ROOM_ID",​
"TaskId": "YOUR_TASK_ID",​
"Command": "SetTTSContext",​
"Message": "{\"Tag\":{\"additions\":{\"context_texts\":[\"语气欢乐一点\"]}}}"​
}​
​
生效优先级​
系统遵循以下优先级:​
  1. 通过 UpdateVoiceChat 发送的指令。​
  1. LLM 文本标签:LLM 自动生成的嵌入式标签。​
  1. QuoteUserQuestion:将用户问题作为上下文。​
例如,当 LLM 返回了带有“伤心”情绪的标签,但您通过 UpdateVoiceChat 接口发送了“开心”的指令时,AI 最终会以“开心”的语气进行播报。​
声音复刻大模型 2.0​
使用声音复刻大模型 2.0 时,可使用 COT 标签来控制 AI 情绪。此功能仅在 “参数透传” 模式下可用。​
步骤 1:启用 COT 解析​
调用 StartVoiceChat 时,在 VolcanoTTSParameters 中传入以下参数:​
  • req_params.speaker:您的声音复刻ID。StartVoiceChat 接口版本不同,获取方式不同。具体请参见声音复刻。​
  • req_params.additions.use_tag_parser:设为 true。​
  • req_params.model:设为 seed-tts-2.0-expressive。​
YOUR_VOICE_ID 替换为您的声音复刻ID。​
​
"TTSConfig": {​
"Provider": "volcano_bidirection",​
"ProviderParams": {​
"Credential": {​
"ResourceId": "seed-icl-2.0"​
},​
"VolcanoTTSParameters": "{\"req_params\":{\"speaker\":\"YOUR_VOICE_ID\",\"model\":\"seed-tts-2.0-expressive\"},\"additions\":{\"use_tag_parser\":true}}"​
}​
}​
​
步骤 2:编写 Prompt 引导 LLM 生成标签​
在 LLM(方舟模型、Coze 智能体或第三方大模型)的系统提示词中引导 LLM 根据语境自动生成 COT 标签。​
对于方舟或第三方大模型,需在 LLMConfig.SystemMessages 编写 Prompt。​
标签要求​
  • 格式:​
  • ​
    <cot text=风格描述>文本内容</cot>​
    ​
  • 文本内容长度:单句文本长度不可超过 64 个字符(包含 <cot> 标签)。​
  • 生效范围:仅限于 <cot> 与 </cot> 之间的文字。​
Prompt 编写示例​
​
- 任务:实时分析对话中的用户情绪,并在回复文本中嵌入 cot 标签,以引导下游 TTS 以匹配的情感播报。​
- 格式:<cot text=风格描述>文本内容</cot>​
- 约束:包含 <cot> 标签在内的单句文本长度不可超过 64 个字符。​
​
  • LLM 预期返回:<cot text=急促难耐>工作占据了生活的绝大部分</cot>,只有去做自己认为伟大的工作,才能获得满足感。​
  • AI 播报(以急促难耐的语气):工作占据了生活的绝大部分,只有去做自己认为伟大的工作,才能获得满足感。​
  • 字幕显示:<cot text=急促难耐>工作占据了生活的绝大部分</cot>,只有去做自己认为伟大的工作,才能获得满足感。​
步骤 3(建议):处理字幕​
COT 标签(<cot>...</cot>)不会被过滤,它们会作为文本内容直接显示在字幕中。如果您需要展示或存储纯净的字幕,必须在自己的业务后端手动移除这些标签(例如,使用正则表达式)。​
最佳实践​
  • 避免在首句添加标签:为获得最优的首帧音频生成时间(TTFT),建议在回复的首句使用纯文本,从第二句开始通过 Prompt 嵌入情感标签。​
  • 标签粒度:为确保情感和风格的准确应用,建议以完整的句子为单位添加标签,避免在句子中间插入标签,以确保语音合成韵律的连贯性。​
​
最近更新时间:2026.09.28 10:19:27
这个页面对您有帮助吗?
有用
有用
无用
无用