AI 同声传译
TRTC 云助手文档中心入门中心API 中心SDK 中心文档活动我的反馈文档反馈官招募中,报名立赚积分兑换代金券!> HOT文档中心>TRTC 云助手>场景化方案>AI 实时对话>AI 同声传译AI 同声传译最近更新时间:2026-01-16 15:29:42
微信扫一扫QQ新浪微博复制链接链接复制成功我的收藏本页目录:场景介绍实现方案方案架构前提条件接入步骤APP 设计参考面对面同传方案谷歌 Gemini / 苹果 AirPods 同传方案1V1视频/语音对话同传方案高级功能远场人声抑制延迟优化服务端回调云端录制常见问题为什么没有收到转录字幕/翻译?听不到机器人的声音?TRTC 异常错误处理方案配套产品场景介绍AI 同声传译是一种结合多语种语音识别、机器翻译与语音合成技术,并通过高质量实时音视频通信实现“边听边译、边说边播”的新一代实时翻译方案。相比传统人工同传受限于译员数量、排班成本、场地和时间等因素,AI 同声传译能够以更低成本、更高扩展性,为会议、培训、在线教育、跨境直播、电商带货、在线客服、国际洽谈等多种场景提供稳定可靠的多语言沟通能力。基于大语言模型(LLM)的语义理解和生成能力,AI 同声传译不仅可以完成字面翻译,还能结合上下文理解讲话人的意图和语气,对专业术语、本地化表达进行更自然的润色与适配,显著提升译文的准确度与可读性。同时,系统支持语音与文本双通路输出:既可以在屏幕上实时展示多语种字幕,也可通过语音合成将译文以“同传语音”的形式播放,满足不同场景下的使用需求。TRTC 作为底层实时音视频技术支撑,为 AI 同声传译提供低延时、高清晰、强抗弱网的音视频传输能力。发言人的音频可被毫秒级捕获并实时推送至云端 AI 引擎进行识别与翻译,再通过 TRTC 实时分发给各端用户,实现真正意义上的“即说即译”。同时,TRTC 跨平台、跨网络、跨区域的互通能力,使参会者无论身处何地、使用 iOS、Android、Windows、Mac、Web 等任意终端,都能稳定接入同传会议,获得接近本地应用体验的流畅效果。对于开发者和企业方,TRTC 提供完善的实时音视频 SDK、连麦/互动等场景化组件,以及与 AI 能力灵活编排的接口能力。开发者只需在现有应用中集成少量代码,即可快速构建具备多语言实时同传能力的在线会议、直播、课堂或客服系统,大幅缩短开发周期,降低技术门槛,加速 AI 同声传译在各类业务场景的落地。实现方案实时语音转文本:音频流经过 TRTC 全球网络节点传输到服务端进行音频处理后,由语音识别引擎(ASR)将语音转写为文本。系统支持多语种、热词权重配置、VAD 检测以及实时流式识别。对于需生成字幕或实时内容记录的场景,在此流程即可直接输出最终转写结果回调。实时翻译链路:针对跨语言理解的场景,可在语音转写的基础上开启翻译功能。系统会将转写后的文本通过 LLM 翻译引擎进行翻译处理,并同时输出原文转写内容以及多语种翻译结果。方案架构前提条件注意:AI 智能识别调用会产生使用费用,具体详情请参见 AI 智能识别计费说明。1. 创建 TRTC 应用。2. 解锁 AI 智能识别能力位。接入步骤业务流程图步骤1:集成 TRTC SDKiOS 无 UI 集成指引Android 无 UI 集成指引Web&H5 无 UI 集成指引Flutter 无 UI 集成指引Windows 无 UI 集成指引Mac 无 UI 集成指引步骤2:进入 TRTC 房间iOS 进入 TRTC 房间Android 进入 TRTC 房间Web&H5 进入TRTC房间Flutter 进入TRTC 房间Windows 进入 TRTC 房间Mac 进入TRTC 房间参数类型描述sdkAppIdnumber您在 TRTC 控制台 中创建的音频和视频应用程序的 sdkAppId。userIdstring您指定的用户 ID。userSigstring用户签名,请参见 UserSig。roomIdnumber您指定的房间 ID,通常是唯一的房间 ID。同声传译场景推荐使用TRTCAppSceneAudioCall进房。步骤3:发布音频流Android&iOS&FlutterWeb&H5WindowsMac您可以调用 startLocalAudio 来开启麦克风采集,该接口需要您通过 quality 参数确定采集模式。虽然这个参数的名字叫做 quality,但并不是说质量越高越好,不同的业务场景有最适合的参数选择(这个参数更准确的含义是 scene)。AI 转录场景下推荐使用 SPEECH 模式,该模式下的 SDK 音频模块会专注于提炼语音信号,尽最大限度的过滤周围的环境噪音,同时该模式下的音频数据也会获得较好的低质量网络的抵抗能力,因此该模式特别适合于“视频通话”和“在线会议”等侧重于语音沟通的场景。AndroidiOSFlutter// 开启麦克风采集,并设置当前场景为:语音模式(高噪声抑制能力、强弱网络抗性)mCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_SPEECH );self.trtcCloud = [TRTCCloud sharedInstance];// 开启麦克风采集,并设置当前场景为:语音模式(高噪声抑制能力、强弱网络抗性)[self.trtcCloud startLocalAudio:TRTCAudioQualitySpeech];// 开启麦克风采集,并设置当前场景为:语音模式(高噪声抑制能力、强弱网络抗性)trtcCloud.startLocalAudio(TRTCAudioQuality.speech);使用 trtc.startLocalAudio() 方法开启麦克风,并发布到房间。await trtc.startLocalAudio();调用 startLocalAudio 开启麦克风采集,请根据您的需求选择其中一个声音质量参数 Quality。// 开启麦克风采集,设置当前场景为:语音模式// 具有高的噪声抑制能力,有强有弱的网络阻力ITRTCCloud* trtcCloud = CRTCWindowsApp::GetInstance()->trtc_cloud_;trtcCloud->startLocalAudio(TRTCAudioQualitySpeech);调用 startLocalAudio 开启麦克风采集,请根据您的需求选择其中一个声音质量参数 Quality。// 开启麦克风采集,设置当前场景为:语音模式// 具有高的噪声抑制能力,有强有弱的网络阻力AppDelegate *appDelegate = (AppDelegate *)[[NSApplication sharedApplication] delegate];[appDelegate.trtcCloud startLocalAudio:TRTCAudioQualitySpeech];步骤4:后台发起语音转文字、实时翻译任务通过业务后台调用 开始 AI 转录任务(StartAITranscription) 接口,来发起 AI 转录,调用成功后,转录机器人会进入 TRTC 房间。可在 TargetLanguages 中指定目标翻译语种,例如 [“en”,“ja”]。目前支持配置以下语种翻译:语言代码对应语种"zh"中文"en"英语"es"西班牙语"pt"葡萄牙语"fr"法语"de"德语"ru"俄语"ar"阿拉伯语"ja"日语"ko"韩语"vi"越南语"ms"马来语"id"印度尼西亚语"it"意大利语"th"泰语TTSConfig中的VoiceID,可参见 TRTC 语音合成精品音色库 Voice ID。 注意:RoomId 需要和客户端进房的 RoomId 保持一致,并且房间号的类型(数字房间号、字符串房间号)也必须相同(即机器人和用户需要在同一个房间)。步骤5:开始同声传译此时,用户已经可以正常进行同声传译。步骤6:接收转录和翻译字幕通过 TRTC SDK 接收自定义消息功能,在客户端上监听回调来接收实时字幕与 AI 状态等数据。cmdID 固定是1。接收转录字幕{ "type": 10000, // 10000表示是下发的实时字幕 "sender": "user_a", // 说话人的userid "receiver": [], // 接收者userid列表,该消息实际是在房间内广播 "payload": { "text":"", // 语音识别出的文本 "start_time":"00:00:01", // 这句话的开始时间 "end_time":"00:00:02", // 这句话的结束时间 "roundid": "xxxxx", // 唯一标识一轮对话 "end": true // 如果为true,代表这是一句完整的话 "taskid": "x-dPLCz" // 转录任务唯一标识 }}接收翻译字幕{ "type": 10000, "sender": "ai_951073", // 转录机器人的userid "payload": { "start_time_ms": 1760, "end_time_ms": 5530, "end": false, "roundid": "e6330a3c-eed7-40bb-8229-9bbe733a313f", // 一轮对话的 ID "translation_text": "simultaneous interpretation of the meeting", // 翻译文本 "translation_language": "en", // 翻译的语言代码 "taskid": "x-dPLCz" // 转录任务唯一标识 }}字段说明字段名类型含义typeInteger10000:实时字幕与完整的一句话下发消息类型。senderString说话人的 UserID。receiverArray接收者 userid 列表,该消息实际是在房间内广播。payload.textString识别出的文本。 Unicode 编码。payload.start_timeString消息产生的时间 任务启动后的绝对时间。payload.end_timeString消息结束的时间 任务启动后的绝对时间 。payload.endBoolean如果为 true,代表这是一句完整的话。payload.roundidString一轮对话的 ID。payload.taskidString转录任务唯一标识。payload.translation_textString翻译文本。payload.translation_languageString翻译的语言代码。示例代码AndroidiOS&MacWeb&H5WindowsFlutter@Overridepublic void onRecvCustomCmdMsg(String userId, int cmdID, int seq, byte[] message) { String data = new String(message, StandardCharsets.UTF_8); try { JSONObject jsonData = new JSONObject(data); Log.i(TAG, String.format("receive custom msg from %s cmdId: %d seq: %d data: %s", userId, cmdID, seq, data)); } catch (JSONException e) { Log.e(TAG, "onRecvCustomCmdMsg err"); throw new RuntimeException(e); }}func onRecvCustomCmdMsgUserId(_ userId: String, cmdID: Int, seq: UInt32, message: Data) { if cmdID == 1 { do { if let jsonObject = try JSONSerialization.jsonObject(with: message, options: []) as? [String: Any] { print("Dictionary: \\(jsonObject)") } else { print("The data is not a dictionary.") } } catch { print("Error parsing JSON: \\(error)") } }}trtcClient.on(TRTC.EVENT.CUSTOM_MESSAGE, (event) => { let data = new TextDecoder().decode(event.data); let jsonData = JSON.parse(data); console.log(`receive custom msg from ${event.userId} cmdId: ${event.cmdId} seq: ${event.seq} data: ${data}`); if (jsonData.type == 10000 && jsonData.payload.end == false) { // 字幕中间状态 } else if (jsonData.type == 10000 && jsonData.payload.end == true) { // 一句话说完了 }});void onRecvCustomCmdMsg(const char* userId, int cmdID, int seq, const uint8_t* message, uint32_t msgLen) { std::string data; if (message != nullptr && msgLen > 0) { data.assign(reinterpret_cast