数字人播报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协议请求 |
关于接口的详细描述参考:SendMessage - 发送文本消息,支持在线直接调试。
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数字人流媒体服务暂不支持。