文档

3D播报数字人接入指南

更新时间:
重要

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

3D播报数字人(对应开放平台的“咨询播报”场景)是虚拟数字人开放平台提供能够支持用户通过发送文本让3D数字人进行播报的实时文本驱动数字人产品能力,目前平台支持播报阿里云的智能语音合成的SSML标记语言,可以支持多音字、读手机号、读地址等发音方式。本篇文档将介绍如何接入3D播报数字人。

能力介绍

3D播报数字人是虚拟数字人开放平台提供能够支持用户直接发送文本让3D数字人进行实时播报的数字人产品能力。

使用场景

适用于一些需要3D数字人进行文本播报的场景,如咨询播报等场景,通过封装结合ASR语音识别及云小蜜对话机器人能力也可以实现互动数字人相同的能力(也可以直接使用虚拟数字人平台提供的互动数字人产品直接实现语音与数字人互动)。

前置条件

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

1. 申请阿里云账号

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

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

具体创建和配置流程可以参考:创建并配置数字人项目

重要

创建播报数字人应用时请在菜单选择“播报数字人”,然后点击创建数字人应用。

技术接入

警告

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

下面介绍接入播报数字人的完整步骤以及涉及到API

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

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

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

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

代码示例:

下方代码示例仅用来示意需要传递哪些参数,无法直接运行,请结合实际需求编写代码。完整的API可参考OpenAPI官网调试页面,也可在线直接填写参数并执行测试。

public static void main(String[] args) throws Exception {  
    // 参考OpenAPI官方示例构建Client:https://next.api.aliyun.com/api/avatar/2022-01-30/StartInstance?useCommon=true&tab=DEMO&lang=JAVA
    Client client = Sample.createClient(...);
    
    // 构造参数
    StartInstanceRequest startInstanceRequest = new StartInstanceRequest();
    // 租户ID从数字人开放平台的业务配置详情中获取
    startInstanceRequest.setTenantId(<tenantId>);
    // 业务APP从数字人开放平台的业务配置详情中获取
    startInstanceRequest.setApp(new StartInstanceRequest.StartInstanceRequestApp().setAppId("<appId>"));
    startInstanceRequest.setUser(new StartInstanceRequest.StartInstanceRequestUser().setUserId("<userId>").setUserName("<userName>"));   
    // 透明通道设置,透明通道对视频流播放端有一定的要求,建议加入官方钉钉答疑群(群号:15840000425)沟通
    StartInstanceRequest.StartInstanceRequestCommandRequest commandRequest = new com.aliyun.avatar20220130.models.StartInstanceRequest.StartInstanceRequestCommandRequest()
                .setAlphaSwitch(true);
    StartInstanceRequest startInstanceRequest = new com.aliyun.avatar20220130.models.StartInstanceRequest()
                .setCommandRequest(commandRequest);
    // 调用API服务启动数字人
    StartInstanceResponse startInstanceResponse = client.startInstance(startInstanceRequest);

    // 获取启动后SessionId
    String sessionId = startInstanceResponse.getBody().getData().getSessionId();
}

说明

接口调用返回的sessionId在后续步骤发送文本让数字人进行播报时将会使用到,channel信息在对接RTC进行拉流时需要使用。

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

3. 通过播报API驱动数字人进行播报

播报数字人需要接入方调用SendText等播报接口【详情可参考:数字人播报API接入指南】驱动数字人进行文本播报,下面是一段示例代码。

代码示例:

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

目前数字人播报支持纯文本播报和阿里云智能语音合成的SSML标记语言两种文本播报,SSML播报请参考:数字人服务SSML使用指南

重要

关于数字人播报API的详细使用可以参考:数字人播报API接入指南。同时OpenAPI提供了在线调试页面,可以直接用代码调试API:OpenAPI在线调试

4. 接入RTC客户端进行拉流

接入RTC客户端可参考文档:客户端SDK接入。需要使用到第二步中获取到的Channel信息。

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

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

代码示例:

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

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

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

代码示例:

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

获取到对应的sessionId之后再调用停止数字人服务API(参考5. 调用OpenAPI停止对应数字人实例)。

  • 本页导读 (0)