简单4步,快速搭建数字人实时视频通话功能


引言:

在数字人应用日益广泛的当下,实现与数字人的实时视频通话已成为许多开发者的需求。即构实时互动AI AGENT凭借其强大的功能和便捷的集成方式,让这一需求的实现变得简单高效。只需4步,就能快速搭建起数字人视频通话系统,下面就为大家详细介绍。

第一步:注册账号,开启数字人视频通话之旅

首先需要在即构ZEGO控制台注册账号并创建项目。在注册过程中,要确保信息的准确性,这是后续一切操作的基础。创建项目后,你将获得有效的AppID和ServerSeret,这两个关键信息在后续的开发过程中会频繁用到,是接入即构服务的重要凭证,就像一把钥匙,能打开即构服务的大门。

第二步:开通服务,解锁数字人视频通话能力

完成账号注册和项目创建后,就需要联系ZEGO技术支持开通相关服务。这包括数字人PaaS服务、AI Agent相关服务以的相关配置信息。只有开通了这些服务,才能真正具备实现数字人视频通话的能力。

值得一提的是,在接入测试期间(AI Agent服务开通2周内),可以将LLM和TTS的鉴权参数设置为"zego_test"来使用相关服务,这为开发者的测试工作提供了便利,让开发者能在测试阶段快速体验服务的功能。

即构实时互动AI AGENT在数字人视频通话方面有着显著的优势。其数字人仅需一张上半身的真人或二次元照片或图片,就能达到1080P的高清效果,口型准确且形象逼真。而且互动延迟超低,数字人驱动延迟<200ms,结合AI Agent互动延迟<1.5s,相比传统方案,能带来更真实沉浸的互动体验。同时,它支持多语种口型准确呈现,尤其对中英文效果更佳,还支持轻微的身体动作,面部表情自然不变形。

第三步:后台配置,搭建数字人视频通话的核心架构

后台配置是实现数字人视频通话的核心环节, 主要包括注册智能体、 创建数字人智能体实例和删除智能体实例等操作。

①注册智能体

注册智能体用于设定智能体基础配置,包括智能体名称、LLM、TTS、ASR等相关配置。注册后可以将该智能体作为模板创建多个实例与多个真实用户进行互动。通常智能体是相对固定的,一旦设定好相关参数(人设形象)就不会经常改动。

需要注意的是,一个智能体只能注册一次(同一个ID),如果重复注册会返回错误码410001008。以下是调用注册智能体接口的示例代码:

复制代码
// 请将以下示例中的 LLM 和 TTS 的 ApiKey、appid、token 等鉴权参数换成你实际的鉴权参数。
async registerAgent(agentId: string, agentName: string) {
    // 请求接口:https://aigc-aiagent-api.zegotech.cn?Action=RegisterAgent
    const action = 'RegisterAgent';
    const body = {
        AgentId: agentId,
        Name: agentName,
        LLM: {
            Url: "https://ark.cn-beijing.volces.com/api/v3/chat/completions",
            ApiKey: "zego_test",
            Model: "doubao-lite-32k-240828",
            SystemPrompt: "你是一个智能体,请根据用户的问题回答。"
        },
        TTS: {
            Vendor: "ByteDance",
            Params: {
                "app": {
                    "appid": "zego_test",
                    "token": "zego_test",
                    "cluster": "volcano_tts"
                },
                "audio": {
                    "voice_type": "zh_female_wanwanxiaohe_moon_bigtts"
                }
            }
        }
    };
    // sendRequest 方法封装了请求的 URL 和公共参数。详情参考:https://doc-zh.zego.im/aiagent-server/api-reference/accessing-server-apis
    return this.sendRequest<any>(action, body);
}

在配置过程中,要确保LLM和TTS所有参数都按照其服务提供商官方文档填写正确,否则可能导致智能体无法正常输出文本内容或语音。

②创建数字人智能体实例

可以用已注册的智能体为模板创建多个数字人智能体实例,加入不同房间与不同用户进行实时互动。创建成功后,数字人智能体实例会自动登录房间并推流,同时拉真实用户的流,且会返回数字人配置给客户端,客户端根据该配置初始化数字人SDK后即可进行实时互动。

默认情况下一个账号下最多同时存在10个数字人智能体实例,超过限制后创建会失败,如需调整可联系ZEGO商务。以下是创建数字人智能体实例接口的示例代码:

复制代码
async createDigitalHumanAgentInstance(agentId: string, userId: string, rtcInfo: RtcInfo, digitalHuman: DigitalHumanInfo, messages?: any[]) {
    // 请求接口:https://aigc-aiagent-api.zegotech.cn?Action=CreateDigitalHumanAgentInstance
    const action = 'CreateDigitalHumanAgentInstance';
    const body = {
        AgentId: agentId,
        UserId: userId,
        RTC: rtcInfo,
        DigitalHuman: digitalHuman, // 测试时可使用公共 ID :c4b56d5c-db98-4d91-86d4-5a97b507da97
        MessageHistory: {
            SyncMode: 1, // Change to 0 to use history messages from ZIM
            Messages: messages && messages.length > 0 ? messages : [],
            WindowSize: 10
        }
    };
    // sendRequest 方法封装了请求的 URL 和公共参数。详情参考:https://doc-zh.zego.im/aiagent-server/api-reference/accessing-server-apis
    const result = await this.sendRequest<any>(action, body);
    console.log("create agent instance result", result);
    // 返回的 DigitalHumanConfig 是数字人配置,客户端根据数字人配置初始化数字人 SDK ,然后即可与数字人进行实时互动。
    return result.AgentInstanceId, result.DigitalHumanConfig;
}

③删除智能体实例

当互动结束后,需要删除智能体实例,删除后智能体实例会自动退出房间并停止推流。以下是删除智能体实例接口的示例代码:

复制代码
async deleteAgentInstance(agentInstanceId: string) {
    // 请求接口:https://aigc-aiagent-api.zegotech.cn?Action=DeleteAgentInstance
    const action = 'DeleteAgentInstance';
    const body = {
        AgentInstanceId: agentInstanceId
    };
    // sendRequest 方法封装了请求的 URL 和公共参数。详情参考:https://doc-zh.zego.im/aiagent-server/api-reference/accessing-server-apis
    return this.sendRequest(action, body);
}

第四步:客户端配置,实现数字人视频通话的前端交互

客户端配置主要是集成ZEGO Express SDK完成实时通信和集成数字人SDK完成数字人渲染。即构提供了Android、iOS和Web等多个平台的客户端示例代码,开发者可以参考这些示例代码实现登录、推流、拉流、退出房间等基本功能。

以Web客户端为例,参考示例代码完成相关配置后,用户登录房间并推流,数字人智能体登录房间并推流、拉用户流,用户拉智能体流并且把帧数据和SEI数据传给数字人SDK,从而实现与数字人的实时视频互动。

完成以上四个步骤后,就成功实现了与数字人智能体的实时视频互动。在整个开发过程中,由于LLM和TTS等参数较多且复杂,容易出现配置错误导致的异常问题,所以强烈建议在接入测试过程中监听异常回调,并根据回调信息快速排查问题。

总结:

即构实时互动AI AGENT凭借其简单易用的集成方式和强大的功能优势,让数字人视频通话的实现变得轻松高效,适用于数字人1V1互动视频、数字人客服、数字人直播等多种场景,为开发者带来了极大的便利。

以上内容仅供参考,开发中可参考 开发者文档 获取更多细节。

相关推荐
wei_shuo7 小时前
基于魔珐星云打造的心理咨询师数字人:情绪疏导、压力管理、语音随时交互
数字人
换个昵称都难8 小时前
webrtc源码解析概要介绍
webrtc
换个昵称都难8 小时前
WebRTC 完整调用流程(前端纯 JS 实现,最简可运行)
webrtc
做萤石二次开发的哈哈1 天前
AI 陪护机器人硬件如何接入萤石ERTC 实现实时通话?
人工智能·音视频·实时音视频·萤石开放平台
换个昵称都难1 天前
webrtc 拥塞控制GCC 和PCC
webrtc
Cxiaomu1 天前
React接入WebRTC实时视频实践
react.js·音视频·webrtc
XiaoLin laile1 天前
私有化企业 IM:重构企业经营数据的内网属地边界
安全·即时通讯·私有化·企业通讯
Multipath7121 天前
急救车上的“信号堡垒”:多链路聚合路由如何让生命连线永不掉线
网络·5g·安全·实时音视频
AndyHuang19761 天前
WebRTC 强制 Relay 模式下 TCP 重连失败深度排查与优化实战
webrtc
换个昵称都难1 天前
webrtc pacing 平滑发包模块
webrtc