H5 SDK
Code Examples
Replica
Conversational Video Interface
Android SDK
H5 SDK
Code Examples
Code Examples
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximu-scale=1.0,user-scalable=no" />
<title>Duix Sdk Simple Example</title>
<style>
html,
body {
margin: 0;
padding: 0;
}
.modal {
position: fixed;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: auto;
background-color: rgba(0, 0, 0, 0.4);
display: flex;
align-items: center;
justify-content: center;
}
.modal-content {
background-color: #fefefe;
padding: 20px;
border: 1px solid #888;
width: 80%;
max-width: 600px;
border-radius: 4px;
}
.container {
width: 100vw;
height: 100vh;
}
.item {
margin-bottom: 10px;
display: flex;
align-items: center;
justify-content: center;
}
.item>div {
margin-bottom: 10px;
gap: 10px;
}
.item>span {
font-size: 18px;
font-weight: bold;
margin-bottom: 10px;
}
.input {
background: #F2F3F5;
height: 40px;
line-height: 40px;
border: none;
outline: none;
border-radius: 2px;
padding: 0 8px;
width: 100%;
box-sizing: border-box;
}
.btn {
border: none;
border-radius: 4px;
width: 100%;
height: 40px;
background: #166AFF;
color: #fff;
cursor: pointer;
margin-top: 20px;
}
.subtitle {
position: absolute;
bottom: 40px;
left: 50%;
transform: translate(-50%);
color: #000;
padding: 12px;
box-sizing: border-box;
text-align: center;
background-color: rgba(255,255, 255, 0.5);
border-radius: 12px;
visibility: hidden;
}
.subtitle:empty {
display: none;
}
</style>
<script src="https://cdn.guiji.ai/duix/sdk/0.2.1/duix.js"></script>
</head>
<body>
<!-- Container -->
<div class="container"></div>
<div class="subtitle"></div>
<div id="modal" class="modal">
<div class="modal-content">
<div class="item">
<span>DEMO</span>
</div>
<div class="item">
<input class="input" id="sign" placeholder="please enter sign" value="" />
</div>
<div class="item">
<input class="input" id="conversationId" placeholder="please enter conversationId" value="" />
</div>
<div class="item">
<button id="start" onclick="init()" class="btn">Start</button>
</div>
</div>
</div>
<script>
// The duix.js used for demonstration may not be the latest. Please install the latest sdk via npm
const duix = new window.DUIX()
function init() {
const sign = document.querySelector('#sign').value // sign is generated by the server side
const conversationId = document.querySelector('#conversationId').value // duix platform session id
if (!sign || !conversationId) {
return alert('The parameter cannot be empty')
}
duix.on('error', data => {
console.error(data)
})
duix.on('intialSucccess', () => {
console.info('intialSucccess')
// At this point, the initialization is successful and start can be called
// Some browsers, especially mobile ones, need to be triggered by user action to play the digital human. It is recommended that the start event be called by user click, even if muted is muted, otherwise some browsers may not display the digital human
duix.start({ openAsr: true }).then(res => {
console.info('start', res)
})
})
duix.on('bye', (data) => {
console.info('bye', data)
})
duix.on('progress', progress => {
console.info('progress', progress)
})
duix.on('show', () => {
console.info('show')
// At this point, it can be confirmed that the video has been played
document.querySelector('#modal').style.display = "none"
document.querySelector('.subtitle').style.visibility = "visible"
})
duix.on('openAsrSuccess', () => {
console.info('openAsrSuccess')
})
duix.on('asrStart', (data) => {
console.info('asrStart', data)
document.querySelector('.subtitle').innerText = ''
})
duix.on('asrData', (data) => {
console.info('asrData', data)
})
duix.on('asrStop', (data) => {
console.info('asrStop', data)
})
duix.on('speakStart', (data) => {
console.info('speakStart', data)
})
duix.on('speakEnd', (data) => {
console.info('speakEnd', data)
})
duix.on('speakSection', (data) => {
console.info('speakSection', data)
document.querySelector('.subtitle').innerText = data.text
})
duix.on('speakError', (data) => {
console.info('speakError', data)
})
duix.init({
sign,
containerLable: '.container',
conversationId: conversationId,
platform: 'duix.com'
}).then(data => {
console.info('init', data)
})
}
</script>
</body>
</html>
On this page