You need to enable JavaScript to run this app.
导航
方案集成(软件应用)
最近更新时间:2025.04.25 15:49:23首次发布时间: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 对话功能后,你可能需要实时字幕、智能打断、接收智能体状态、实时视觉理解等进阶功能来增强用户体验、实时监控智能体状态等。目前支持功能可参看体验进阶

集成问题排查

如果调用智能体接口 HTTP 返回 200,但是智能体未进入房间或进入房间未正常工作,可参考以下步骤排查:

步骤1:定位问题类型

进入实时对话式 AI Web 体验 Demo进行 AI 对话:

  • 如果无法和智能体进行正常对话,则证明是设备问题,请跳转至步骤 2 检查音频输入设备。
  • 如果可以和智能体进行正常对话,则证明是智能体接口设置问题,请跳转至步骤 3 检查智能体参数设置。

步骤2:检查音频输入设备

步骤3:检查智能体参数设置

  1. 请确保已开通 ASR、TTS、LLM 中你需要的服务并获取对应的参数值.

注意

若 ASR、TTS 或 LLM 使用火山引擎服务,请检查是否在使用免费版。如在使用免费版请前往控制台确认免费版额度是否用完。如已开通正式版,请确认是否购买资源包。

服务名称需获取参数

ASR

火山引擎流式语音识别

  • AppId:开通火山引擎流式语音识别服务后获取的 App ID,用于标识应用。你可登录语音技术控制台获取。

  • Cluster:开通的流式语音识别服务对应的集群标识(Cluster ID)。你可登录语音技术控制台开通服务后获取。

火山引擎流式语音识别大模型

  • AppId:开通火山引擎流式语音识别大模型服务后获取的 App ID,用于标识应用。你可登录语音技术控制台获取。

  • AccessToken:与开通流式语音识别大模型服务 App ID 对应的 AccessToken,用于身份认证。你可登录语音技术控制台获取。

TTS

火山引擎语音合成

  • appid:开通火山引擎语音合成服务后获取的 App ID,用于标识应用。你可登录语音技术控制台获取。

  • cluster:开通的语音合成服务对应的集群标识(Cluster ID)。你可登录语音技术控制台开通服务后获取。

  • voice_type:已开通音色对应的音色种类(Voice_type)。你可登录语音技术控制台购买音色后获取。

火山引擎语音合成大模型流式输入流式输出

  • appid:开通火山引擎语音合成大模型服务后获取的 App ID,用于标识应用。你可登录语音技术控制台获取。

  • token:与开通流式语音识别大模型服务 App ID 对应的 AccessToken,用于身份认证。你可登录语音技术控制台获取。

  • voice_type:已开通音色对应的音色种类(Voice_type)。你可登录语音技术控制台购买音色后获取。

火山引擎声音复刻大模型非流式输入流式输出

  • appid:开通火山引擎声音复刻大模型服务后获取的 App ID,用于标识应用。你可登录语音技术控制台获取。

  • cluster:开通的声音复刻大模型服务对应的集群标识(Cluster ID)。你可登录语音技术控制台开通服务后获取。

  • voice_type:声音复刻声音 ID。你可登录语音技术控制台获取。

火山引擎声音复刻大模型流式输入流式输出

  • appid:开通火山引擎声音复刻大模型服务后获取的 App ID,用于标识应用。你可登录语音技术控制台获取。

  • cluster:开通的声音复刻大模型服务对应的集群标识(Cluster ID)。你可登录语音技术控制台开通服务后获取。

  • voice_type:声音复刻声音 ID。你可登录语音技术控制台获取。

MiniMax

LLM

火山方舟平台

自定推理点 EndPointID 或智能体应用 ID。前往火山方舟控制台获取。

Coze 平台

  • BotId:Coze 智能体 ID。可前往你需要调用的智能体开发页面获取。开发页面 URL 中 bot 参数后的数字即智能体ID。例如开发页面 URL 为:`https://www.coze.cn/space/341/bot/73428668`,则 `BotId` 为 `73428668`。

  • APIKey:Coze 访问密钥。你可以生成++个人访问令牌++以供测试。线上环境注意替换为 OAuth 访问密钥。你可根据不同的使用场景,选择不同的 OAuth 授权方式,详情参考OAuth 应用管理

第三方大模型URL:第三方大模型 URL。
  1. 请确保是否配置角色权限。
    前往无代码跑通 Demo查看是否已开启 VoiceChat 角色权限。若显示未开通可按照提示一键开通。
    alt
  2. 检查 StartVoiceChat 接口请求参数是否填写正确。
  • 所有必填参数是否填写。
  • RoomId、TaskId、TargetUserId、UserId 是否按照参数赋值规范填写,不得出现中文字符。
  • RoomId 是否与房间内客户端 SDK 进房时的使用的 RoomId 保持一致
  • TargetUserId 是否与房间内客户端 SDK 进房时使用的 UserId 保持一致。

若按照以上步骤排查后智能体依然无法正常工作,请联系技术支持提供 OpenAPI 接口请求的 RequestId 进行排查。