功能概述
大语言模型(LLM)本身并不支持主动输出,需要业务侧基于一定规则主动触发 AI 说话,从而提升实时互动中的沉浸感。例如:用户长时间没有说话,让 AI 主动追问一句;业务侧检测到订单发货、时间到点等关键事件时,让 AI 立刻向用户播报提醒。
TRTC AI 实时对话提供三类 AI 主动说话能力:
能力 | 实现方式 | 特点 |
主动调用 LLM | 任务运行中,通过控制任务接口下发文本注入指令( InvokeLLM)。 | 注入文本进入对话上下文,触发一轮 LLM 回复;回复结合上下文动态生成,经 TTS 合成播报。 |
文本直送 TTS | 任务运行中,通过控制任务接口下发文本播报指令( InvokeTTS)。 | 文本不经过 LLM 推理,直接由 TTS 合成播报,AI 说出的内容与业务下发的一字不差。 |
固定话术播报 | 创建任务时通过 DialogConfig 配置欢迎语、静音追问。 | 直接播报固定文本,由后台在对应时机自动触发,无需业务侧运行时干预。 |
说明:
上述文本注入能力面向 Cascade(三段式) 模式;S2S(端到端) 模式下语音理解与生成由端到端模型完成,不存在独立的 LLM / TTS 段。
主动调用 LLM(文本注入)
使用方式
任务运行期间,业务后端通过控制任务接口(任务生命周期五类标准操作之一)下发
Command=InvokeLLM 指令:注入的文本进入当前对话上下文,触发一轮 LLM 回复;
LLM 基于上下文(含注入文本)生成回复,回复文本经 TTS 合成后推入房间播报;
回复内容可通过客户端字幕事件与服务端 LLM 回复回调获取(见下文)。
输入参数
参数名 | 必选 | 类型 | 描述 |
SdkAppId | 是 | Integer | TRTC 应用 ID。 |
TaskId | 是 | String | 任务 ID。 |
Command | 是 | String | 指令名: InvokeLLM。 |
InvokeLLM | 条件必填 | Object | Command=InvokeLLM 时必填,字段见下表。 |
InvokeLLM 对象:
字段名 | 必选 | 类型 | 描述 |
Content | 是 | String | 注入的文本内容,长度 ≤ 1000。 |
Priority | 否 | Integer | 优先级,决定注入文本与当前交互的冲突处理策略: 1=高优先级;2=中优先级;3=低优先级; |
Priority 优先级说明
InvokeLLM 与 InvokeTTS 共用同一套 Priority 优先级定义,用于处理传入文本与 AI 当前正在进行的交互之间的冲突:Priority | 优先级 | 行为 |
1 | 高优先级 | 立即终止当前 AI 的交互(例如正在进行的播报),并立即执行传入的指令。对于 InvokeTTS,会立即播报指定文本;对于 InvokeLLM,会立即将文本注入 LLM 并触发新一轮回复的生成与播报。 |
2 | 中优先级 | 等当前交互结束后,再播放传入的文本内容。 |
3 | 低优先级 | 若正在交互则直接丢弃传入文本;未在交互则播放传入的文本内容。 |
选型建议:
紧急提醒(例如风控告警、审核拦截提示)用高优先级即时插播;一般性事件通知用中优先级排队播报;可有可无的背景信息用低优先级,宁可不播也不打断当前对话。
请求示例
{"SdkAppId": 1400000000,"TaskId": "-nG0jIFU7q3wqZnqm8xB5TY0n43U5rLb...","Command": "InvokeLLM","InvokeLLM": {"Content": "提醒用户订单已发货","Priority": 1}}
回复的获取
主动调用 TTS(文本直送播报)
使用方式
任务运行期间,业务后端通过控制任务接口下发
Command=InvokeTTS 指令:下发的文本不经过 LLM 推理,直接送 TTS 合成,音频由回推机器人推入 TRTC 房间播报;
AI 说出的内容与业务下发的文本一字不差,适合需要精确控制播报内容的场景:系统公告、审核拦截提示、运营活动话术、固定播报文案等;
播报遵循统一的打断控制——播报过程中用户开口(自动打断模式)或下发
Interrupt 指令即可打断。与 InvokeLLM 的区别
对比项 | InvokeLLM(送 LLM) | InvokeTTS(送 TTS) |
链路 | 文本注入上下文 → LLM 动态生成回复 → TTS 播报 | 文本直接送 TTS 合成播报,不经过 LLM。 |
播报内容 | LLM 结合上下文动态生成,内容不确定。 | 业务下发的原文,一字不差。 |
典型用途 | 让 AI 结合上下文主动开口、事件提醒转述。 | 公告、提示、运营话术等固定内容的精确播报。 |
输入参数
参数名 | 必选 | 类型 | 描述 |
SdkAppId | 是 | Integer | TRTC 应用 ID。 |
TaskId | 是 | String | 任务 ID。 |
Command | 是 | String | 指令名: InvokeTTS(不区分大小写)。 |
InvokeTTS | 条件必填 | Object | Command=InvokeTTS 时必填,字段见下表。 |
InvokeTTS 对象:
字段名 | 必选 | 类型 | 描述 |
Content | 是 | String | 播报的文本内容,长度 ≤ 1000。 |
Priority | 否 | Integer | 优先级,决定播报文本与当前交互的冲突处理策略: 1=高优先级; 2=中优先级; 3=低优先级; |
请求示例
{"SdkAppId": 1400000000,"TaskId": "-nG0jIFU7q3wqZnqm8xB5TY0n43U5rLb...","Command": "InvokeTTS","InvokeTTS": {"Content": "今天你有什么想关注的","Priority": 1}}
播报效果的获取
获取方式 | 说明 |
客户端(音频流) | 订阅回推机器人的音频流即可听到播报内容。 |
客户端(状态事件) | |
服务端(状态回调) |
固定话术播报(欢迎语与静音追问)
固定话术无需 LLM 动态生成,由后台在特定时机直接送 TTS 播报。通过创建任务时的
DialogConfig 配置:字段名 | 必选 | 类型 | 描述 |
WelcomeMessage | 否 | String | 欢迎语,主播进房后自动播报。 |
SilenceFollowUp | 否 | Integer | 静音后 Bot 主动追问的时间(秒),范围 0-300, 0=关闭(默认)。 |
SilenceFollowUpText | 否 | String | 静音追问的文本内容。 |
配置示例:
"DialogConfig": {"InterruptMode": 0,"InterruptSpeechDuration": 200,"SilenceFollowUp": 50,"SilenceFollowUpText": "你还在吗?有想问的直接告诉我。","WelcomeMessage": "你好,我是AI助手,有什么可以帮你的?"}
说明:
典型应用场景
场景 | 实现方式 | 说明 |
进房欢迎语 | DialogConfig.WelcomeMessage | 每次对话开始时 AI 自动播报一句欢迎语。 |
静音追问(避免冷场) | SilenceFollowUp + SilenceFollowUpText | 用户长时间未说话,AI 主动追问,例如:你还在吗?有想问的直接告诉我。 |
业务事件主动提醒 | 运行时 InvokeLLM 注入 | 订单发货、活动开始、时间到点等关键节点,注入“提醒用户订单已发货”,由 AI 播报。 |
主动发起话题 | 运行时 InvokeLLM 注入 | 注入“用户一段时间没有说话了,请主动说一句话”,AI 结合上下文主动开口。 |
固定内容精确播报 | 运行时 InvokeTTS 注入 | 系统公告、审核拦截提示、运营活动话术等需要一字不差的播报。 |
确定性播报(跳过 LLM) | 运行时 InvokeTTS 注入 | 对时延或内容确定性敏感的提醒,绕过 LLM 推理直接合成播报。 |
注意事项
1. 注入文本会进入对话上下文(仅 InvokeLLM):主动调用 LLM 注入的内容作为上下文参与该轮及后续对话,请避免注入与业务无关的文本,以免干扰对话质量;
InvokeTTS 文本不经过 LLM,直接合成播报。2. 长度限制:
InvokeLLM.Content 与 InvokeTTS.Content 长度均 ≤ 1000 字符。3. 按优先级选择冲突策略:高优先级会立即终止当前交互(用户可能听到半截话被截断),请仅在确实需要抢播时使用;对时延不敏感的通知建议用中优先级,避免频繁打断影响对话体验。
4. 播报可被打断:主动说话的 TTS 播报同样遵循打断控制——自动打断模式下用户开口即可打断 AI 的主动播报,详细参见 (客户端)打断指令。
5. 仅对运行中的任务生效:任务结束或 Bot 离开房间后指令不再响应,建议通过状态流转回调维护任务生命周期。
6. 固定话术不可运行时修改:欢迎语与静音追问在创建任务时配置;
DialogConfig 中仅 InterruptMode 支持通过修改任务接口热更新。7. 音色跟随任务配置:
InvokeTTS 播报使用任务 TTSConfig 中配置的音色与厂商,指令本身不指定音色;如需更换音色请重建任务(TTSConfig 不支持热更新),详细参见 TTS 配置。