1.0.19 • Published 1 month ago

aliyun-avatar-sdk v1.0.19

Weekly downloads
-
License
ISC
Repository
-
Last release
1 month ago

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