在与 AI 进行实时交互时,除了语音互动外,还可以通过视觉理解让智能体能够感知用户周围的环境以及用户的行为,让实时互动更具沉浸感。RTC一站式方案结合火山引擎视觉理解模型,只需在服务端调用 StartVoiceChat 接口进行配置,即可实现 AI 实时视频互动能力。
场景 | 描述 |
---|---|
社交陪伴 | 识别用户的场景以及表情动作,进行实时分析并回应,让社交陪伴更有沉浸感。 |
游戏陪玩 | 实时捕捉游戏画面,识别游戏人物动作,提供及时的游戏信息、打法建议等。 |
学习教育 | 图像识物问答、看图解题实时问答和批改、文字识别和理解、根据图片文案创作等应用,提供更专业的陪伴。 |
事件检测 | 清扫、玩手机、接打电话、闲聊等基础场景和事件检测。 |
参考场景搭建 Web 已实现场景搭建,且你已实现视频采集相关的功能,视频采集相关 API 说明参看startVideoCapture。
如需构建Android 等其他平台对话式 AI 场景,可参看客户端 API 参考。
前往火山方舟创建模型为 doubao-vision-pro
或 doubao-vision-lite
的推理点,并填入StartVoiceChat.Config.LLMConfig.EndPointId
。
在 StartVoiceChat接口配置 Config.LLMConfig.VisionConfig
开启智能体视频理解能力。RTC 会根据配置对采集的视频流进行抽帧截图,将多张截图发送到视频理解模型获取回答。
VisionConfig.Enable
设为 true
开启大模型视觉理解能力。SnapshotConfig
,配置截图流的类型、截图图片质量和尺寸、单次截图的间隔和送入大模型的数量。为达到最佳效果根据使用场景的不同,该结构的参数取值不同。可参看场景参数配置示例。StorageConfig
,选择将截图存储的位置。
针对不同的热门应用,RTC 为你推荐不同场景下视觉理解能力参数配置,比如社交陪伴场景对于识别的频次要求不高,可以降低抽帧频次和送大模型识别的图片数量,而游戏陪玩场景画面变化较快,依赖更高频次的抽帧和更多送图片数量来有更好的体验效果。你可参考以下示例代码实现更好的场景体验效果。
此处仅包含 LLMConfig.VisionConfig
结构,StartVoiceChat
包含其他结构的完整示例参看请求示例。
POST https://rtc.volcengineapi.com?Action=StartVoiceChat&Version=2024-12-01 { ... "Config": { "ASRConfig": { ... }, "TTSConfig": { ... }, "LLMConfig": { ... "VisionConfig": { "Enable": true, // 开启视觉理解功能。 "SnapshotConfig": { "StreamType": 0, // 截图流类型设置为主流。 "ImageDetail": "low", // 图片处理模式为低细节模式。 "Height": 480, //送入大模型视频帧高度为 480。 "Interval": 1000, // 相邻截图之间的间隔时间为 1000 毫秒。 "ImagesLimit": 2 // 最大发送图片数量为 2。 }, "StorageConfig": { "Type": 1, // 存储类型设置为 TOS。 "TosConfig": { "AccountId": "200000000", // 火山引擎账号 ID。 "Region": 0, // 存储区域设置为华北 2(北京)。 "Bucket": "visionbucket" // 你设置的存储桶名称。 } } } } }, "AgentConfig": { ... } }
POST https://rtc.volcengineapi.com?Action=StartVoiceChat&Version=2024-12-01 { ... "Config": { "ASRConfig": { ... }, "TTSConfig": { ... }, "LLMConfig": { ... "VisionConfig": { "Enable": true, // 开启视觉理解功能。 "SnapshotConfig": { "StreamType": 1, // 截图流类型设置为屏幕流。 "ImageDetail": "high", // 图片处理模式为高细节模式。 "Height": 720, // 送入大模型视频帧高度为 720。 "Interval": 200, // 相邻截图之间的间隔时间为 200 毫秒。 "ImagesLimit": 10 // 最大发送图片数量为 10。 }, "StorageConfig": { "Type": 1, // 存储类型设置为 TOS。 "TosConfig": { "AccountId": "200000000", // 火山引擎账号 ID。 "Region": 0, // 存储区域设置为华北 2(北京)。 "Bucket": "visionbucket" // 你设置的存储桶名称。 } } } } }, "AgentConfig": { ... } }
很多场景希望实现用户手动标注区域来重点关注和识别区域内容,你可以使用 RTC 自定义视频处理功能 功能,在编码传输前,对视频帧进行自定义标注处理,再通过 RTC SDK进行本地预览和编码发送,实现重点关注区域的识别