logo
当前页

控制智能体语音情绪

场景说明

目前部分大模型版本文字转语音(TTS),支持指定合成时所使用的情绪。 在与 AI 进行实时语音互动场景下,可以搭配大语言模型 LLM 的系统提示词,实现让 AI 基于人设输出对应的情绪的能力,从而让AI更富有情感表现力。

例如,MiniMax 的 Speech 系列支持在合成 TTS 时,指定多种("happy" - 高兴, "sad" - 悲伤, "angry" - 愤怒, "fearful" - 害怕, "disgusted" - 厌恶, "surprised" - 惊讶, "calm" - 中性, "fluent" - 生动)情绪进行语音合成。具体可参考同步语音合成 WebSocket 详细参数说明。

功能简介

controlling-tts-effects.png
注意
必须使用注册智能体修改智能体创建智能体实例接口的 LLM.SystemPrompt 参数控制 LLM 回答时按 ZEGO 控制参数输出特定格式才能实现情绪控制效果。

支持情绪的模型及控制标签

说明
当前 ZEGO 支持两个模型能力,若您需要其他 TTS 模型,请联系 ZEGO 技术支持。
  • 音色/情绪列表可能会变更,请以 TTS 厂商提供的最新列表为准。
  • ZEGO 控制参数即 ZEGO AI Agent 会通过待合成的 TTS 文本中指定的参数统一控制 TTS 情绪。LLM 应该按 ZEGO 控制参数输出特定格式才能实现情绪控制效果,但是值还是与 TTS 厂家的音色/情绪名保持一致。
TTS厂商支持的模型支持的音色/情绪体验方式ZEGO 控制参数
MiniMaxSpeech 系列
  • "happy" - 高兴
  • "sad" - 悲伤
  • "angry" - 愤怒
  • "fearful" - 害怕
  • "disgusted" - 厌恶
  • "surprised" - 惊讶
  • "calm" - 中性
  • "fluent" - 生动

其中某些情绪仅在某些模型中支持,更多情绪请参考同步语音合成 WebSocket -> 任务开始 -> voice_setting -> emotion
语音调试台{"emotion": emotion}
豆包语音(单向流式)1.0、2.0 系列中文音色举例
  • "happy" - 高兴
  • "sad" - 悲伤
  • "angry" - 愤怒
  • "fearful" - 害怕
  • "disgusted" - 厌恶
  • "surprised" - 惊讶
  • "calm" - 中性
  • "fluent" - 生动

英文音色举例
  • "neutral" - 中性
  • "happy" - 高兴
  • "angry" - 愤怒
  • "sad" - 悲伤
  • "excited" - 兴奋
  • "chat" - 对话/闲聊
  • "warm" - 温暖
  • "affectionate" - 深情
  • "authoritative" - 权威

更多音色请参考音色列表 -> 情感参数
豆包语音合成大模型中的多情感音色{"emotion": emotion}
{"emotion_scale": scale}

实现智能体输出的语音内容指定情绪能力

要实现该能力主要分为三步:

  1. 指定 LLM 文本中控制情绪的内容格式。
  2. 让 LLM 按照指定的控制情绪格式输出内容。
  3. 让 TTS 厂商根据情绪控制参数合成带情绪的语音(ZEGO AI Agent 自动处理)。

前提条件

  1. 开通 AI Agent 服务
  2. 确认所使用的 TTS 模型或音色支持指定情感标签
  3. ZEGO AI Agent 服务支持对应的 TTS 模型及标签。参考支持情绪的模型及控制标签

使用步骤

我们以指定 LLM 文本中以“[[”和“]]”包裹的文本为元数据,让 LLM 按照格式输出控制情绪控制参数元数据,然后提取出“emotion”和“emotion_scale”参数来控制语音情绪为例。

1

指定 LLM 文本中控制情绪的内容格式

说明
无需在注册智能体或创建智能体实例时再配置 FilterText.BeginCharacters 和 FilterText.EndCharacters 参数,因为元数据及标志符号将会被从 LLM 输出文本中移除。

通过配置创建智能体实例接口的 AdvancedConfig.LLMMetaInfo 参数,指定如何从 LLM 文本中提取控制情绪的元数据。例如:

"LLMMetaInfo" : {
    "BeginCharacters": "[[",
    "EndCharacters": "]]"
}
2

让 LLM 按照指定的控制情绪格式输出内容

说明
  • 请按支持情绪的模型及控制标签确定要使用哪家 TTS 厂商后,参考厂商对应的 ZEGO 控制参数格式再设置 LLM.SystemPrompt 的内容。
  • 元数据中 JSON 的 key 只能是 emotion 或者 emotion_scale,value 则必须与 TTS 厂商支持的情绪参数值完全相同。
说明
以下示例中,提示的 emotion 选值仅仅是示例,实际 TTS 厂商支持哪些情绪就可以让 LLM 输出的文本中包含哪些情绪。但是一般都不会包含所有情绪(比如一个人工客服应用不会让它有悲伤情绪)。

以下是使用 MiniMax 和豆包语音 TTS 时,调用 注册智能体创建智能体实例接口对应的 LLM.SystemPrompt 示例,仅供参考,请根据实际需求调整:

3

让 TTS 厂商根据情绪控制参数合成带情绪的语音

现在您可以与创建的智能体实例开始语音对话啦!当 LLM 输出的内容包含了情绪控制参数时,AI Agent 服务会自动根据这些参数调用 TTS 厂商接口,让它以丰富的语音情绪表现力与您进行互动。🎉🎉🎉

上一篇

语音活动检测 VAD 灵敏度

下一篇

角色扮演 System Prompt

当前页

返回到顶部