# Install Duix
npm i duix-guiji -S
您也可以在 CodePen (opens new window) 中体验
import DUIX from 'duix-guiji'
const duix = new DUIX({
containerLable: '.remote-container',
sign: 'xxxxxxxxx'
})
注意: Vue2的双向数据绑定机制会破坏我们内部使用的事件绑定机制,不要将duix实例放在Vue2的data中。如下:
import DUIX from 'duix-guiji'
export default {
name: 'Home',
data: function () {
return {
// duix: null 这一行不能有
}
},
methods: {
initDUIX() {
this.duix = new DUIX({
containerLable: '.container',
sign: 'xxxx',
})
},
},
mounted() {
this.initDUIX()
}
}
以上示例中的new DUIX(options)即可得到一个DUIX实例,其中option是一个配置对象,细节如下:
名称 | 类型 | 描述 | 默认值 | 示例 |
---|---|---|---|---|
containerLable | string | 数字人容器。数字人将渲染到这个Dom中。 | .remote-container | #human |
sign | string | duix sign,用于鉴权。另见:如何获取sign? (opens new window) |
new DUIX(option)
只创建了一个DUIX对像,此时界面上并不会显示数字人,调用 start
方法将开始渲染。
注意: 此方法需要在
intialSucccess
事件触发后调用,intialSucccess
事件表示所有资源准备完成。如下:duix.on('intialSucccess', () => { const sessionId = duix.start({ robotMode: 'bot', muted: true, transparent: false, wipeGreen: false, }) console.log('sessionId', sessionId) })
参数
key | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
robotMode | string | 否 | 'null' | 开启一次会话。 robotMode参数指定以何种模式开启duix,可选值'bot'。 null:直驱模式。调用 speak 方法后,数字人将直接说出这句话。比如:调用 speak('你是谁?') ,数字人会说“你是谁?”bot:对话模式。调用 speak 方法后,数字人将回答出您的问题。比如:调用 speak('你是谁?') ,数字人可能会说“我是硅基数字人爱夏,很高兴认识你。” |
muted | boolean | 否 | false | 是否以静音的模式开启数字人视频。 重要提示: 由于自动播放政策 (opens new window)限制,如果您的网页还没有与用户有任何点击交互,请把这个参数置为 true ,否则将导致数字人无法加载。如果您有这样的需求,建议您先用静音模式启动,在产品中设计一个交互,比如一个“开始”的按钮来调用duix.setVideoMuted(false) |
openAsr | boolean | 否 | false | 是否直接开启实时识别,此项传true,相当于在调start后立即调用 openAsr 方法 |
wipeGreen | boolean | 否 | false | 是否对视频做扣绿幕操作。在平台上创建会话时不选背景,背景将默认是一个标准绿幕,搭配这个属性,可以实现背景透明的效果。 |
transparent | boolean | 否 | false | 数字人背景是否透明。此选项效果与wipeGreen效果类似,作为扣绿幕效果不理想时的备选方案。此方案消耗更多的性能,可能导致数字人卡顿、掉帧。 |
返回值 本次会话的ID,可用于从后端主动关闭此会话。
设置数字人视频是否静音, true是静音,false为非静音。
驱动数字人说话,支持文本驱动和音频文件驱动。 第二个参数是可选的,如果需要使用音频文件驱动,可以如下传参。
duix.speak('xx',{wavPath: 'https://your.website.com/xxx/x.wav'})
立即停止数字人说话
开始录音。
结束录音,录音成功后将返加语音识别结果(文本),返回Promise。
开启语音实时识别(注意此方法需在show触发时候调用)。开启语音实时识别后,可通过监听 asrResult
事件,接收识别(文本)结果。
关闭语音实时识别。
停止当前会话。建议在页卸载事件中调用此方法,以防止刷新或关闭网页时当前会话不释放造成下次打开时触发busy
事件。
window.addEventListener('beforeunload', function(event) {
if (duix) {
duix.stop()
}
});
监听事件。
事件名称,详见下方表格。
回调函数
获取本地语音流,方便外部做音频可视化等功能
获取远端音视频流,方便外部做自定义
名称 | 描述 |
---|---|
error | 有未捕获错误时触发。 |
bye | 会话结束时触发。 |
intialSucccess | 数字人初始化成功。可以在这个事件的回调中调用start 方法 |
show | 出数字人已显示。 |
progress | 数字人加载进度。 |
command | 服务端驱动数字人的命令。如果调用 start 时指定对话模式,每次服务端执行的话术回复都会通过该事件触发,里面包含本轮数字人回复的文本等信息,可以用来做字幕。 |
speakStart | 驱动数字人说话,到数字人实际说话之间有一点延迟,此事件表示数字人实际开始说话了 |
speakEnd | 数字人说话结束 |
openAsrSuccess | 语音实时识别开启成功后触发 |
asrResult | 语音实时识别结果 |
asrClose | 关闭语音实时识别成功时触发 |
report | 每秒报告RTC网络/画面质量等信息 |
{
"video": { // 视频相关信息
"download": {
"frameWidth": 1920, // 分辨率-宽
"frameHeight": 1080,// 分辨率-高
"framesPerSecond": 24,// 分辨率-帧率
"packetsLost": 0, // 总丢包数
"packetsLostPerSecond": 0 // 总丢率(每秒丢包数)
}
},
"connection": { // 连接信息
"bytesSent": 206482, // 发送总字节数
"bytesReceived": 79179770, // 接收总字节数
"currentRoundTripTime": 3, // 包往返时间(单位毫秒),这个时间越大画面越延迟
"timestamp": 1688043940523,
"receivedBitsPerSecond": 2978472, // 接收码率(每秒接收到的bit数,1Mb = 1024^2 bit)
"sentBitsPerSecond": 7920 // 发送码率(每秒发送的bit数,1Mb = 1024^2 bit)
}
}
1.1.21
1.1.19
修复report事件在初次触发时参数可能不完整的问题 1.1.18
speakStart和speakEnd事件暴露与本次事件相关的额外数据。
1.1.17
report
事件。1.1.15
1.1.14
1.1.13
1.1.11
1.1.10
1.1.8
start
方法调用注意事项说明。1.1.6
1.1.5
wipeGreen
,以支持对视频扣绿幕。1.1.4
window.addEventListener('beforeunload', function(event) {
console.log('on beforeunload')
if (duix) {
duix.stop()
}
});
show
事件触发时才会显示。1.1.2
transparent
值,如果传true,则数字人背景透明。1.1.1
start
方法中传muted: true
无效的bug。1.1.0
openAsr
方法不再传入回调方法,改用 asrResult
事件来接收实时语音识别回传的识别结果。speakStart
事件,表示数字人开始说话。speakEnd
事件,数字人说话结束。stopRecord
方法新增支持 Promise 方式调用,原传回调的方式目前依然兼容,建议使用 Promise 方式。1.0.30
start
方法接收robotMode参数,现在可以在不重新new实例的情况下,切换对话/直驱模式。1.0.27
1.0.26
1.0.25
1.0.24
1.0.23
1.0.22
1.0.19
0.0.45 (暂未发布到npm)
0.0.44
0.0.43
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.27
0.0.26
(1)我们将依据相关法律法规,对人工智能生成合成内容添加相应标识(如在生成合成内容或者交互场景界面中添加的显式标识,采用技术措施在生成合成内容的文件元数据中添加的隐式标识)。您应确保您已仔细阅读并理解《人工智能生成合成内容标识办法》及其他相关的标识管理要求。您不得使用或尝试使用任何技术手段或其他方法删除、篡改、伪造、隐匿该等生成合成内容标识,不得为他人实施删除、篡改、伪造、隐匿该等生成合成内容标识行为提供工具或者服务,不得通过不正当标识手段损害他人合法权益。
(2)在特定场景下,为更好地满足您的使用需求,我们可能根据您的申请为您提供没有添加显式标识的人工智能生成合成内容。如您申请我们提供没有添加显式标识的生成合成内容的,您需承诺并保证:
①不利用该内容发布、传播任何虚假信息或从事其他任何违法违规活动;
②在发布或传播基于深度学习、虚拟现实、深度合成、生成式人工智能等新技术制作的非真实信息,或其他可能引发公众误解或混淆的信息内容时,应当以显著方式标识;
③在向第三方分享该内容或使用网络信息内容传播服务发布该内容或以其他方式使用该内容时,主动声明其为人工智能生成合成内容;
④遵守其他相关法律、法规、政策、办法的规定。
(3)如您违反上述约定,您应自行承担由此引起的所有责任,并赔偿由此给我们及第三方造成的全部损失(包括但不限于直接损失、间接损失、诉讼费、仲裁费、公证费、鉴定费、律师费、差旅费、保全费用、保全保险费、向任何第三方承担的责任、行政处罚、罚款等)。