控制智能体语音情绪
场景说明
目前部分大模型版本文字转语音(TTS),支持指定合成时所使用的情绪。 在与 AI 进行实时语音互动场景下,可以搭配大语言模型 LLM 的系统提示词,实现让 AI 基于人设输出对应的情绪的能力,从而让AI更富有情感表现力。
例如,MiniMax 的 Speech 系列支持在合成 TTS 时,指定多种("happy" - 高兴, "sad" - 悲伤, "angry" - 愤怒, "fearful" - 害怕, "disgusted" - 厌恶, "surprised" - 惊讶, "calm" - 中性, "fluent" - 生动)情绪进行语音合成。具体可参考同步语音合成 WebSocket 详细参数说明。
功能简介

支持情绪的模型及控制标签
- 音色/情绪列表可能会变更,请以 TTS 厂商提供的最新列表为准。
- ZEGO 控制参数即 ZEGO AI Agent 会通过待合成的 TTS 文本中指定的参数统一控制 TTS 情绪。LLM 应该按 ZEGO 控制参数输出特定格式才能实现情绪控制效果,但是值还是与 TTS 厂家的音色/情绪名保持一致。
| TTS厂商 | 支持的模型 | 支持的音色/情绪 | 体验方式 | ZEGO 控制参数 |
|---|---|---|---|---|
| MiniMax | Speech 系列 |
其中某些情绪仅在某些模型中支持,更多情绪请参考同步语音合成 WebSocket -> 任务开始 -> voice_setting -> emotion | 语音调试台 | {"emotion": emotion} |
| 豆包语音(单向流式) | 1.0、2.0 系列 | 中文音色举例:
英文音色举例:
更多音色请参考音色列表 -> 情感参数 | 豆包语音合成大模型中的多情感音色 | {"emotion": emotion} {"emotion_scale": scale} |
实现智能体输出的语音内容指定情绪能力
要实现该能力主要分为三步:
- 指定 LLM 文本中控制情绪的内容格式。
- 让 LLM 按照指定的控制情绪格式输出内容。
- 让 TTS 厂商根据情绪控制参数合成带情绪的语音(ZEGO AI Agent 自动处理)。
前提条件
- 开通 AI Agent 服务
- 确认所使用的 TTS 模型或音色支持指定情感标签
- ZEGO AI Agent 服务支持对应的 TTS 模型及标签。参考支持情绪的模型及控制标签
使用步骤
我们以指定 LLM 文本中以“[[”和“]]”包裹的文本为元数据,让 LLM 按照格式输出控制情绪控制参数元数据,然后提取出“emotion”和“emotion_scale”参数来控制语音情绪为例。
指定 LLM 文本中控制情绪的内容格式
通过配置创建智能体实例接口的 AdvancedConfig.LLMMetaInfo 参数,指定如何从 LLM 文本中提取控制情绪的元数据。例如:
"LLMMetaInfo" : {
"BeginCharacters": "[[",
"EndCharacters": "]]"
}让 LLM 按照指定的控制情绪格式输出内容
- 请按支持情绪的模型及控制标签确定要使用哪家 TTS 厂商后,参考厂商对应的 ZEGO 控制参数格式再设置 LLM.SystemPrompt 的内容。
- 元数据中 JSON 的 key 只能是 emotion 或者 emotion_scale,value 则必须与 TTS 厂商支持的情绪参数值完全相同。
emotion 选值仅仅是示例,实际 TTS 厂商支持哪些情绪就可以让 LLM 输出的文本中包含哪些情绪。但是一般都不会包含所有情绪(比如一个人工客服应用不会让它有悲伤情绪)。以下是使用 MiniMax 和豆包语音 TTS 时,调用 注册智能体 和 创建智能体实例接口对应的 LLM.SystemPrompt 示例,仅供参考,请根据实际需求调整:
让 TTS 厂商根据情绪控制参数合成带情绪的语音
现在您可以与创建的智能体实例开始语音对话啦!当 LLM 输出的内容包含了情绪控制参数时,AI Agent 服务会自动根据这些参数调用 TTS 厂商接口,让它以丰富的语音情绪表现力与您进行互动。🎉🎉🎉
