You need to enable JavaScript to run this app.
导航
方案集成(软件应用)
最近更新时间:2025.06.10 18:35:21首次发布时间:2024.07.17 15:35:25
我的收藏
有用
有用
无用
无用

本文将介绍如何基于火山引擎 RTC SDK 实现实时对话式 AI 解决方案。

方案介绍

火山引擎实时对话式 AI 场景方案,通过集成 RTC SDK 与服务端 OpenAPI 接口,实现超低延时 AI 实时对话。本方案为您提供了一站式集成方案,您可以通过 OpenAPI 快速接入火山引擎 ASR、LLM 和 TTS 服务,快速实现 RTC 房间内用户与智能体一对一通话。同时你也可以根据业务实际需求,接入 ASR、 MiniMax TTS 、Coze 大模型平台和第三方大模型服务。

整体业务流程图

AI 实时互动的实现流程如下图所示:

集成指引

前提条件

一、实现音视频通话

RTC 提供 Android、iOS、Windows、macOS、Linux、Web、Electron、Flutter、微信小程序、Unity、抖音小游戏、React Native 等多种客户端 SDK,您可以根据业务实际需求,选择合适的 SDK 进行集成。只需三步即可实现音视频通话:

步骤 1:集成 SDK

你可使用包管理工具或手动下载 SDK 包获取 SDK 并集成到项目中。

步骤 2:创建并进入 RTC 房间。

首先你需要创建引擎,对于 Native 平台,调用 createRTCVideo,对于 Web SDK,调用 createEngine。然后调用 joinRoom创建并加入房间。

在创建房间时,推荐使用默认配置,开启自动订阅音频流和自动发布音频流。若你想手动控制订阅、发布音频流,可以在调用 joinRoom 时将 isAutoPublishisAutoSubscribeAudio设置为 false,使用subscribeStream手动订阅音频流,使用publishStream手动发布音频流。

在创建房间时,房间模式默认使用云端会议模式,该模式下 SDK 会专注提炼语音信号,过滤环境噪声,保证通话质量。若你搭建的 AI 对话场景对音频质量有更高要求,如需要播放音乐,可将手机音量类型切换为媒体音量,可参看通话音量和媒体音量有什么区别?了解两者的区别,详细配置策略可联系技术支持

注意

创建房间时使用的 RoomId 和 UserId 需要与步骤二中启动智能体任务时传入的 RoomId 和TargetUserId 保持一致才能保证房间内用户与智能体正常通话。

步骤 3:开启采集并发布音频流。

你需要调用 startAudioCapture 开启音频采集,房间内用户说话时会 RTC 会进行音频采集并根据设置判断是否自动发布。
在开启音频采集后,若需要静音 SDK 用户,建议使用 muteAudioCapture进行操作达到最低时延。不建议使用 stopAudioCapture 实现静音操作,可能会导致声音卡顿或变声。
至此你已成功构建音视频通话房间且客户端用户已进入房间。你也可参看各端集成文档,详细了解如何在不同端实现音视频通话:

你也可以参看示例项目获取开源项目代码,了解最佳实践快速构建音视频通话房间。

二、发起 AI 实时对话

在构建音视频通话房间后,你可通过 RTC 提供的启动智能体 OpenAPI 接口快速接入 ASR、LLM 和 TTS 服务将智能体引入该房间,实现在 RTC 房间内用户与智能体一对一通话。

说明

推荐在第一次调用启动智能体接口前,先通过无代码跑通 Demo进行调试。调试成功后点击接入 API可复制智能体请求示例代码粘贴到项目中。

如果发起 OpenAPI 接口请求时返回 200,但是智能体未进入房间或进入房间未正常工作,可参考智能体未进房或未正常工作?

至此你已实现房间内真人用户和智能体实时对话。

默认情况下,若房间内与智能体对话真人用户退房,180 s 后智能体任务会自动停止,但该 180s 内仍会计费。建议房间内用户退出房间后,及时调用 StopVoiceChat 接口关闭智能体任务。你也可以设置onRemoteAudioPropertiesReport回调实时监听真人用户的音量信息,调整智能体任务关闭逻辑。

三、结束对话、退出房间

在用户与智能体互动结束后,你可以:

四、进阶功能

在实现基本的 AI 对话功能后,你可能需要实时字幕、智能打断、接收智能体状态、实时视觉理解等进阶功能来增强用户体验、实时监控智能体状态等。目前支持功能可参看体验进阶

FAQ

智能体未进房或未正常工作?

声音采集会把智能体说话内容采集到,智能体开始自问自答。

可通过降低音量增益值,减少少噪音引起的 ASR 错误识别。具体参看如何提升语音识别准确性?

发起新一轮对话时,智能体能否携带上一轮对话的上下文?

可以。在发起新一轮对话时,你可以将上一轮对话的上下文信息作为UserPrompts参数的值传入。