功能概述
本文介绍端到端(S2S,Speech-to-Speech)模式的最短接入路径。与三段式不同,S2S 模式下用户音频直接送入端到端语音大模型,由模型直接返回音频与转写文本,无需分别配置 ASR / LLM / TTS 三段,天然低延迟。
对比项 | 三段式(Cascade) | 端到端(S2S) |
配置项 | STTConfig + LLMConfig + TTSConfig | 仅 S2SConfig |
链路 | ASR → LLM → TTS 分段 | 音频直入、音频直出 |
视觉理解(截图问答) | 支持 | 不支持 |
对话历史查询 | 支持 | 不支持 |
前提条件与配额
项目 | 要求 |
TRTC 服务 | 已开通并完成实名认证。 |
SdkAppId | TRTC 应用 ID,用于所有服务端接口调用。 |
房间号 | 支持数字房间号( RoomIdType=0)与字符串房间号(RoomIdType=1,推荐)。 |
接口频率 | 20 次/秒。 |
单应用并发 | 100 个任务。 |
空闲回收 | 默认 30 秒( AgentConfig.MaxIdleTime 可调,范围 5-86400 秒)。 |
说明:
超出频率或并发上限时接口返回
FailedOperation.RestrictedConcurrency / FailedOperation.RequestLimitExceeded,请实现指数退避重试。接入步骤
步骤1:签发 UserSig
业务后端为 App 用户和 AI Bot 各签发一份 UserSig:
Bot 的 UserSig:即创建任务时
AgentConfig.UserSig;App 用户的 UserSig:由业务后端下发给客户端,用于进房。
步骤2:客户端集成 TRTC SDK 并进房
// 1. 创建 TRTC 实例TRTCCloud trtc = TRTCCloud.sharedInstance(context.getApplicationContext());// 2. 开启音量回调与 VAD 通知,用于 UI 展示用户是否正在说话TRTCAudioVolumeEvaluateParams volumeParams = new TRTCAudioVolumeEvaluateParams();volumeParams.enableVadDetection = true;trtc.enableAudioVolumeEvaluation(true, volumeParams);// 3. 开启音频采集(通话音质)trtc.setSystemVolumeType(TRTCSystemVolumeTypeMedia);trtc.startLocalAudio(TRTC_AUDIO_QUALITY_SPEECH);// 4. 进房TRTCParams params = new TRTCParams();params.sdkAppId = <sdkAppId>;params.userId = <localUserId>;params.userSig = <userSig>;params.roomId = <roomId>;params.role = TRTCRoleAnchor;trtc.enterRoom(params, TRTC_APP_SCENE_VIDEOCALL);
进房成功条件:
TRTCCloudListener.onEnterRoom(result > 0)。参数 | 说明 |
volumeParams.enableVadDetection | 是否开启本地人声检测。注意:仅反馈本地检测结果,且自身角色必须是主播(步骤 4 里 TRTCRoleAnchor 满足此条件);结果通过 onUserVoiceVolume 回调带出 |
volumeParams.interval | 代码未显式设置,走默认值。单位 ms,最小 100,≤0 关闭回调,建议 300 |
enableAudioVolumeEvaluation(enable, params) | enable=true 开启音量回调,false 关闭;params 即上面构造的参数对象 |
说明:
S2S 模式为纯语音交互,无需开启视频预览与截图相关能力。
步骤3:服务端创建 AI 对话任务
业务后端调用创建任务接口(完整定义见 发起 AI 对话任务),将
ConversationMode 设置为 S2S,并通过 S2SConfig 配置端到端模型(无需再传 STTConfig / LLMConfig / TTSConfig):{"SdkAppId": 140000000,"RoomId": "ai-room-001","RoomIdType": 1,"ConversationMode": "S2S","AgentConfig": {"UserId": "ai-bot-001","UserSig": "eJyrVgrxCdYr...","TargetUserId": ["user-123"],"TTSPushRoomParams": { "UserId": "tts-bot-001" }},"S2SConfig": {"Provider": "volc_doubao_realtime","Params": "{\\"Model\\":\\"doubao-seed-realtime\\",\\"APIKey\\":\\"<YOUR_API_KEY>\\",\\"SystemPrompt\\":\\"你是一个亲切的语音助手。\\",\\"VoiceId\\":\\"zh_female_qingxin\\",\\"Language\\":\\"zh-CN\\"}"}}
支持的接入方式(
Provider):接入方式 | 说明 |
volc_doubao_realtime | 火山豆包实时语音( doubao-seed-realtime),国内接入。 |
OpenAI GPT-Live | OpenAI 端到端实时语音模型,海外接入。 |
TRTC 自研 S2S | 腾讯自研端到端语音大模型,国内 + 海外。 |
custom | 自建 S2S 网关。 |
接口返回
TaskId 即表示任务创建成功,Bot 已进房并订阅目标用户音频,用户开口即开始端到端对话。说明:
S2S 模式下模型直接输出音频,无需配置
TTSConfig;但该音频仍需由房间内一个 Bot 身份推流播放。TTSPushRoomParams.UserId 用于指定播放 Bot 的身份。S2SConfig 字段与各厂商 Params 参数的完整说明见 S2S 配置。步骤4:配置事件回调并校验签名
在控制台(或通过工单)配置业务后端的回调 URL 与回调密钥,并实现
X-TRTC-Signature 签名校验。S2S 模式注意:
步骤5:结束任务
说明:
也可依赖空闲回收:房间内持续
MaxIdleTime 无有效音频,任务自动结束。验证对话链路
任务运行期间向 Bot 说一句话,可通过三个通道确认链路工作正常:
注意事项
1. 模式创建后不可切换:
ConversationMode 不支持运行时修改,Cascade 与 S2S 互切需销毁旧任务后重建;S2SConfig(Provider / Params)支持热更新。2. 不支持视觉理解:S2S + 截图问答组合不可用,需要边通话边看屏场景请使用三段式 + VLM。
3. 对话记录依赖回调:S2S 不支持查询对话历史,请在回调侧落库留存。
4. 打断策略:端到端模型默认原生 barge-in(用户开口即打断);如需业务侧强制打断,可通过控制任务接口下发
Interrupt 指令。