首页 虚拟数字人开放平台 开发指南 数字人播报API接入指南

数字人播报API接入指南

本文档介绍数字人的播报API(SendMessage - 发送文本消息)如何使用。

播报API介绍

1. API参数介绍

名称

类型

必填

描述

SessionId

string

会话 SessionID。通过“启动一个数字人”API的返回值获取。

TenantId

long

租户ID。

TextRequest

object

播报文本

CommandType

string

命令类型。 START 表示开始播报一段文本 HOLDING 表示暂停当前播报 RESUME 表示恢复当前播报

SpeechText

string

播报文本的内容,目前支持纯文本和阿里云智能语音合成的SSML标记语言,最大文本长度1000字(不包含标签)

Id

string

对应SpeechText文本的Id,随机数,保持唯一即可

interrupt

boolean

播报时是否打断上一次播报内容,默认不打断

VAMLRequest

object

VAML协议请求对象

Code

string

VAML请求类型:默认可以不填

Vaml

string

VAML协议请求

2. 文本播报

  • 直接播报一段文本,或者SSML

  • 示例代码

public static void testSendMessage(String sessionId) throws Exception{
    // 初始化 Client,采用 AK&SK 鉴权访问的方式,此方式可能会存在泄漏风险,建议使用 STS 方式。鉴权访问方式请参考:https://help.aliyun.com/document_detail/378657.html
    // 获取 AK 链接:https://usercenter.console.aliyun.com
    com.aliyun.avatar20220130.Client client = createClient("${accessKeyId}", "${accessKeySecret}");
    com.aliyun.avatar20220130.models.SendMessageRequest sendMessageRequest = new com.aliyun.avatar20220130.models.SendMessageRequest();

    // 设置要播报的文本信息
    SendMessageRequestTextRequest textRequest = new SendMessageRequestTextRequest();
    textRequest.setCommandType("START");
    textRequest.setId("${uuid}");
    textRequest.setInterrupt(true);
    textRequest.setSpeechText("${要播报的内容文本}");

    sendMessageRequest.setTenantId(${tenantId}).setSessionId(sessionId).setTextRequest(textRequest);
    com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
    try {
        // 复制代码运行请自行打印 API 的返回值
        SendMessageResponse response = client.sendMessageWithOptions(sendMessageRequest, runtime);
        System.out.println(JSONObject.toJSONString(response.getBody()));
    } catch (TeaException error) {
        // 如有需要,请打印 error
        com.aliyun.teautil.Common.assertAsString(error.message);
        error.printStackTrace();
    } catch (Exception _error) {
        TeaException error = new TeaException(_error.getMessage(), _error);
        // 如有需要,请打印 error
        com.aliyun.teautil.Common.assertAsString(error.message);
        error.printStackTrace();
    }
}
  • 通过SendMessageRequestTextRequest设置需要播报的内容

3. VAML播报

  • 直接播报一段VAML文本,支持自定义动作、卡片

  • 示例代码

public static void testSendMessage(String sessionId) throws Exception{
    // 初始化 Client,采用 AK&SK 鉴权访问的方式,此方式可能会存在泄漏风险,建议使用 STS 方式。鉴权访问方式请参考:https://help.aliyun.com/document_detail/378657.html
    // 获取 AK 链接:https://usercenter.console.aliyun.com
    com.aliyun.avatar20220130.Client client = createClient("${accessKeyId}", "${accessKeySecret}");
    com.aliyun.avatar20220130.models.SendMessageRequest sendMessageRequest = new com.aliyun.avatar20220130.models.SendMessageRequest();

    // 设置要播报的文本信息
    SendMessageRequestVAMLRequest vamlRequest = new SendMessageRequestVAMLRequest();
    vamlRequest.setVaml("${vaml文本}");

    sendMessageRequest.setTenantId(${tenantId}).setSessionId(sessionId).setVAMLRequest(vamlRequest);
    com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
    try {
        // 复制代码运行请自行打印 API 的返回值
        SendMessageResponse response = client.sendMessageWithOptions(sendMessageRequest, runtime);
        System.out.println(JSONObject.toJSONString(response.getBody()));
    } catch (TeaException error) {
        // 如有需要,请打印 error
        com.aliyun.teautil.Common.assertAsString(error.message);
        error.printStackTrace();
    } catch (Exception _error) {
        TeaException error = new TeaException(_error.getMessage(), _error);
        // 如有需要,请打印 error
        com.aliyun.teautil.Common.assertAsString(error.message);
        error.printStackTrace();
    }
}
重要

VAML播报仅支持3D数字人流媒体服务,2D数字人流媒体服务暂不支持。

阿里云首页 虚拟数字人 相关技术圈