3D语音驱动数字人接入指南

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

3D语音驱动数字人是虚拟数字人开放平台提供能够支持用户与3D数字人进行实时语音驱动的数字人产品能力。本篇文档将介绍如何接入3D语音驱动数字人。

警告

目前3D语音驱动数字人公测已经结束,暂时不支持接入。

使用场景

适用于一些不需要真人出镜的场景。

前置条件

下述介绍接入3D语音驱动数字人需要提前完成的步骤,每个步骤都需要完成才能顺利接入3D语音驱动数字人。

1. 申请阿里云账号

2. 申请购买权限,完成购买开通服务

3. 进入虚拟数字人开放平台创建并配置应用

具体创建和配置流程可以参考:创建并配置数字人应用。选择语音驱动数字人

技术接入

警告

请确保完成上述全部前置步骤,获取到阿里云账号的AccessKey ID和AccessKey Secret(点击获取),以及获取到对应数字人应用的tenantId和appId。

下面介绍接入3D语音驱动数字人的完整步骤以及涉及到API。

1. 了解虚拟数字人开放平台服务端API接入方式

虚拟数字人开放平台的服务端API采用OpenAPI形式对外输出,具体对接方案见:服务端 API 接入篇

2. SDK版本要求

重要

该功能需要升级虚拟数字人开放平台服务端SDK版本至1.0.5及以上。

3. 调用OpenAPI启动一路数字人实例

下面介绍通过Java调用OpenAPI启动一路数字人实例的代码示例,获取到返回的sessionId以及token。

代码示例:

参考OpenAPI官网调试页面,可在线直接填写参数并执行测试。

说明

接口调用返回的sessionId和token在后续步骤对接互动数字人客户端SDK时将会使用到,channel信息在对接RTC进行拉流时需要使用。

关于StartInstance API的详细信息可以参考:《StartInstance - 启动一个数字人》。同时OpenAPI提供了在线调试页面,可以直接面代码调试API:OpenAPI在线调试

4. 通过WebSocket对接语音驱动数字人

语音驱动数字人需要客户端通过WebSocket协议与服务端进行语音流的传输,下面将为您介绍如何通过WebSocket对接语音驱动数字人

4.1 与虚拟数字人开放平台建立WebSocket长连接

4.2 通过WebSocket发送语音驱动数字人语音请求

通过websocket发送启动对话消息,协议如下:

5{ 
	"messageId": "<messageId>", // 必传,消息id,需要保证唯一,可以直接生成16位随机数
	"receiverId": "<sessionId>",    // 必传,startInstance时获得的sessionId,
	"receiverType": "client",   // 必传,固定值
	"receiverAppId": "<appId>", // 必传,数字人应用的开发者信息中的appId
	"content": {
		"type": "cmd",
		"content": {
			 "code": "AUDIO_REQUEST",  // 必传,固定值
			 "params": {   // audio 为pcm,单通道,16k采样率音频数据的base64
				"audio": "UklGRs4KAABXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YaoKAAAHAAkACQAIAAsACgAIAAQA"
			}
		}
	}
}

5. 调用OpenAPI停止对应数字人实例

下面介绍通过Java调用OpenAPI启动一路数字人实例的代码示例,需要使用到第二步中获取的sessionId。

代码示例:

参考OpenAPI官网调试页面,可在线直接填写参数并执行测试。

6. sessionId丢失如何停止数字人实例

针对运行中的数字人实例,如果sessionId丢失将无法调用StopInstance接口停止,此时可通过调用QueryRunningIntance接口获取到正在运行中的数字人实例列表,从而获取到对应的sessionId。

代码示例:

参考OpenAPI官网调试页面,可在线直接填写参数并执行测试。