1.0.19 • Published 1 month ago
aliyun-avatar-sdk v1.0.19
Aliyun Avatar Cloud Render Sdk
aliyun-avatar-sdk,虚拟数字人开放平台推出的适用于web浏览器的云渲染SDK。 当您调用服务端OpenAPI StartInstance接口获取RTC和IM参数信息后,可以在web端搭建本地SDK,实现数字人拉流和双工对话。aliyun-avatar-sdk通过阿里云音视频通信服务(阿里云RTC)提供视频流的订阅,并通过标准WebSocket与服务端建立IM连接。
接入前准备
欢迎访问虚拟数字人开放平台开通数字人服务。
虚拟数字人是一项将人工智能技术应用于业务场景的整合技术方案。方案基于达摩院在语音、图像、3D美术、自然语言处理等领域的技术优势,提供数字人开放平台(面向开发者)、数字人应用市场(面向终端用户)、数字人资产服务等产品及服务。同时虚拟数字人具备多模态的表达与交互能力,具有广阔的应用场景。
Installation
在线安装(推荐)
可以通过npm安装
$ # save into package.json dependencies with -S
$ npm install aliyun-avatar-sdk -S
离线安装
从oss下载sdk包
$ # 切换到项目根目录
$ cd your-project
$ # 解压下载的压缩包
$ tar -xvf avatar-sdk-x.x.x.tar.gz
4 # 本地安装
$ npm install avatar-sdk
快速开启
详细文档请参考数字人流媒体服务WebSDK
CHANGELOG
1.0.2
- 新增静音接口功能
- DialogSDK新增onIMInitSuccess和onRtcInitSuccess
1.0.3
- 修复IM在网络正常情况下的重连
1.0.4
- 修复onAnswer回调失效的问题
1.0.5
- 兼容因浏览器限制导致静音播放的问题
1.0.6
- 修复已知问题
1.0.7
- 新增chrome内核下的抠绿幕功能
1.0.8
- 新增onWarning回调
1.0.9
- 修复已知问题
1.0.10
- 新增使用demo
1.0.11
- 修复asr demo bug
1.0.12
- 修复muteRtc/unMuteRtc接口失效问题
1.0.13
- 修复部分rtc错误无法抛出
1.0.14
- 公有云demo服务端工程新增透明通道选项
1.0.15
- 公有云asr demo新增服务端工程
1.0.16
- 更新demo工程,提升使用体验
1.0.17
- 更新asr_demo说明;详细透出录音权限未获取的控制台报错
1.0.18
- 可选跳过控制台水印 & 兼容websocket心跳无响应
1.0.19
- 修复Websocket消息堆积导致心跳超时的问题
快速开启
DialogAvatarSDK
/*
* 引入DialogAvatarSDK
*/
import { DialogAvatarSDK } from 'aliyun-avatar-sdk';
/*
* 获取建立im和拉rtc流的关键信息
*/
// StartInstanceRes:从服务端StartInstance接口返回值
/* global StartInstanceRes */
const { sessionId, token, channel } = StartInstanceRes;
/*
* 调用构造方法,输入服务端返回的信息
*/
const dialogAvatarSDK = new DialogAvatarSDK({
// im连接参数
tenantId: "", // 用户自行提供
appId: "", // 用户自行提供
sessionId,
token, // 注意是StartInstance外层返回的token,不是channel里的token
// rtc拉流相关参数
/*
* 注意StartInstance接口返回的channel中的变量为大驼峰,如果服务端没有转化的话
* 前端需要在这里手动转成小驼峰
*/
channel: {
appId: channel.AppId, // 手动转成小驼峰
channelId: channel.ChannelId,
expiredTime: channel.ExpiredTime,
gslb: channel.Gslb,
nonce: channel.Nonce,
token: channel.Token,
type: channel.Type,
userId: channel.UserId,
},
// 用来播放rtc下行流的容器
videoDOM: document.getElementById("rtc"),
// 选项
options: {
wsUrl: "wss://avatar-im.console.aliyun.com/ws", // 建立IM连接的websocket地址
maxReconnectTimeout: 300000, // 断线重连最大尝试时间(ms),超出这个时间仍未重连成功将抛出断线重连超时错误
audio: {
autoStartRecord: false, // 是否在初始化过程中自动开启浏览器录音
interval: 100, // 音频采集间隔(ms),注意不能小于60ms,不能大于1000ms,否则会抛出错误
autoDodge: false, // 是否开启音频闪避
},
rtc: {
muted: false, // 是否静音订阅流
},
},
// 初始化成功回调
onInitSuccess: () => {
console.log("IM连接成功,RTC拉流成功");
console.log(dialogAvatarSDK.rtc.aliRtcEngine); // 此时可以访问aliRtcEngine原始对象
},
// RTC初始化成功回调
onRtcInitSuccess: () => {
console.log("RTC拉流成功,等待IM链接...");
console.log(dialogAvatarSDK.rtc.aliRtcEngine); // 此时可以访问aliRtcEngine原始对象
},
// IM初始化成功回调
onIMInitSuccess: () => {
console.log("IM连接成功,等待RTC拉流...");
},
// 错误回调
onError: (e) => {
console.error(e);
},
// 收音开始回调
onRecordingStart: () => {
// 可以在ui上提示用户
},
// 收音结束回调
onRecordingStop: () => {
// 可以在ui上提示用户
},
// ASR下发文本回调
onASR: (text, sentenceId) => {
console.log(`ASR: ${text}`);
console.log(`sentenceId: ${sentenceId}`);
},
// 数字人回答下发文本回调
onAnswer: (text, sentenceId) => {
console.log(`Answer: ${text}`);
console.log(`sentenceId: ${sentenceId}`);
},
// 未知im消息回调,用于接收后端业务增加新的消息类型
onUnknownIMMessage: (msg) => {
console.log("onUnknownIMMessage",msg);
},
});
/*
* 初始化
*/
dialogAvatarSDK
.init()
.then(() => {
// 等同于onInitSuccess
console.log("IM连接成功,RTC拉流成功");
})
.catch((e) => {
// 同样的错误也会被onError捕获
console.log(e);
});
dialogAvatarSDK.openAutoDodge(); // 开启音频闪避
dialogAvatarSDK.stopRecording(); // 手动停止收音,会触发onRecordingStop
dialogAvatarSDK.startRecording().then(() => {
// 手动开启收音,会触发onRecordingStart
console.log("录音成功");
});
dialogAvatarSDK.destroy(); // 销毁实例
BroadcastingAvatarSDK
/*
* 引入BroadcastingAvatarSDK
*/
import { BroadcastingAvatarSDK } from 'aliyun-avatar-sdk';
/*
* 获取建立im和拉rtc流的关键信息
*/
// StartInstanceRes:从服务端StartInstance接口返回值
/* global StartInstanceRes */
const { channel } = StartInstanceRes;
/*
* 调用构造方法,输入服务端返回的信息
*/
const broadcastingAvatarSDK = new BroadcastingAvatarSDK({
// rtc拉流相关参数
/*
* 注意StartInstance接口返回的channel中的变量为大驼峰,如果服务端没有转化的话
* 前端需要在这里手动转成小驼峰
*/
channel: {
appId: channel.AppId, // 手动转成小驼峰
channelId: channel.ChannelId,
expiredTime: channel.ExpiredTime,
gslb: channel.Gslb,
nonce: channel.Nonce,
token: channel.Token,
type: channel.Type,
userId: channel.UserId,
},
// 用来播放rtc下行流的容器
videoDOM: document.getElementById("rtc"),
options: {
maxReconnectTimeout: 300000, // 断线重连最大尝试时间(ms),超出这个时间仍未重连成功将抛出断线重连超时错误
rtc: {
muted: false, // 是否静音订阅流
},
},
// 初始化成功回调
onInitSuccess: () => {
console.log("RTC拉流成功");
},
// 错误回调
onError: (e) => {
console.error(e);
},
});
/*
* 初始化
*/
broadcastingAvatarSDK
.init()
.then(() => {
// 等同于onInitSuccess
console.log("RTC拉流成功");
console.log(broadcastingAvatarSDK.rtc.aliRtcEngine); // 此时可以访问aliRtcEngine原始对象
})
.catch((e) => {
// 同样的错误也会被onError捕获
console.log(e);
});
broadcastingAvatarSDK.destroy(); // 销毁实例
1.0.19
1 month ago
1.0.18
1 month ago
1.0.17
1 month ago
1.0.16
4 months ago
1.0.15
4 months ago
1.0.9
8 months ago
1.0.8
8 months ago
1.0.7
9 months ago
1.0.6
9 months ago
1.0.11
8 months ago
1.0.10
8 months ago
1.0.14
6 months ago
1.0.13
8 months ago
1.0.12
8 months ago
1.0.5
1 year ago
1.0.2
1 year ago
1.0.4
1 year ago
1.0.3
1 year ago
1.0.1-release
1 year ago
1.0.0-release3
1 year ago
1.0.0-release2
1 year ago
1.0.0-release
1 year ago
1.0.0
1 year ago