本文由雲+社區發表
作者:騰訊智慧教育
概述
騰訊雲智聆口語評測(英文版)(Smart Oral Evaluation-English,SOE-E)是騰訊雲推出的語音評測產品,是基於英語口語類教育培訓場景和騰訊雲的語音處理技術,應用特徵提取、聲學模型和語音識別算法,爲兒童和成人提供高準確度的英語口語發音評測。騰訊雲智聆口語評測(英文版)支持單詞和句子模式的評測,多維度反饋口語表現,可廣泛應用於英語口語類教學應用中。
本 SDK 爲智聆口語測評(英文版)的 Web 版本,封裝了對智聆口語測評(英文版)網絡 API 的調用及本地音頻文件處理,並提供簡單的錄音功能,使用者可以專注於從業務切入,方便簡潔地進行二次開發。
本文檔只對 Web SDK 進行描述,詳細的網絡 API 說明請參見 API 文檔。
使用說明
SDK引入
只需要在您的 Web 頁面中添加如下代碼即可:
html
<script src="https://imgcache.qq.com/open/qcloud/soe/TencentSOE-0.0.1.js"></script>
創建對象
new TencentSOE
參數 | 類型 | 說明 | 是否必填 | 默認值 |
---|---|---|---|---|
InitUrl | String | 初始化接口地址 | 是 | 無 |
TransUrl | String | 評分接口地址 | 是 | 無 |
WorkMode | Integer | 上傳方式:語音輸入模式,0流式分片,1非流式一次性評估 | 否 | 0 |
EvalMode | Integer | 評估模式,0:詞模式, 1:句子模式 | 否 | 0 |
ScoreCoeff | Float | 評價苛刻指數,取值爲1.0 - 4.0範圍內的浮點數 用於平滑不同年齡段的分數,1.0爲小年齡段,4.0爲最高年齡段 | 否 | 3.5 |
SoeAppId | String | 業務應用ID,與賬號應用APPID無關,是用來方便客戶管理服務的參數 | 否 | 無 |
StorageMode | Integer | 音頻存儲模式,0:不存儲,1:存儲到公共對象存儲, 輸出結果爲該會話最後一個分片TransmitOralProcess 返回結果 AudioUrl 字段。 | 否 | 無 |
success | function | 創建成功回調 | 否 | 無 |
error | function | 創建失敗回調 | 否 | 無 |
用戶需自行替換後臺接口地址,nodejs版本可參考此SDKlet recorder = new TencentSOE({ InitUrl: ‘http://127.0.0.1:3000/cgi/init’, TransUrl: ‘http://127.0.0.1:3000/cgi/trans’, success() { // TODO }, error(err) { console.log(err); } });
方法
初始化
/**
* 調用初始化接口,設置測評文本
* @param {
* success: function() {} // 成功回調
* error: function() {} // 失敗回調
* }
*/
recorder.init({
RefText: 'about',
success() {
recorder.start();
},
error(err) {
console.log(err);
}
});
開始錄音
/**
* 開始錄音
* @param {
* error: function() {} // 錄音過程出現錯誤時回調,選填
* }
*/
recorder.start({
error(err) {
console.log(err);
}
});
停止錄音
/**
* 停止錄音,返回測評結果
* @param {
* success: function() {} // 成功回調
* error: function() {} // 失敗回調
* }
*/
recorder.stop({
success(res) {
// 獲取blob對象,創建audio進行回放
let audio = document.createElement('audio');
audio.setAttribute('controls', '');
let blobUrl = URL.createObjectURL(res.blob);
document.body.appendChild(audio);
// 輸出測評得分
console.log(res.PronAccuracy)
},
error(err) {
console.log(err);
}
});
重置參數
/**
* 重置參數,用於修改請求參數
* @param {Object} params
*/
recorder.reset({
WorkMode: 1
});
在線Demo
錯誤碼
code | 錯誤說明 |
---|---|
10000 | 參數格式錯誤 |
10001 | 當前瀏覽器不支持錄音功能 |
10002 | 未開啓麥克風訪問權限 |
10003 | 未提供發音評估初始化接口 |
10004 | 未提供發音數據傳輸接口接口 |
10005 | 未提供測評文本 |
10020 | 接口錯誤 |
Tip: 非本地環境必須使用https協議
極簡示例
創建html, 引入TencentSOE SDK,代碼如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="//imgcache.qq.com/open/qcloud/soe/TencentSOE-0.0.1.js"></script>
</head>
<body>
<input type="text" value="about" id="word">
<button id="start">開始錄音</button>
<button id="stop">結束錄音</button>
<!-- 顯示當前狀態 -->
<span id="status"></span>
<!-- 顯示測評結果 -->
<div id="result"></div>
</body>
</html>
編寫錄音代碼:開始錄音、結束錄音、展示結果,代碼如下
let recorder = new TencentSOE({
InitUrl: 'http://127.0.0.1:3000/cgi/init',
TransUrl: 'http://127.0.0.1:3000/cgi/trans',
success(res) {
console.log('創建成功');
},
error(err) {
console.log('創建失敗');
},
});
startBtn.onclick = function () {
result.innerHTML = '';
status.textContent = '初始化中';
recorder.init({
RefText: word.value,
success(res) {
status.textContent = '錄音轉碼中...';
recorder.start();
},
error(err) {
console.log('err', err);
}
});
};
stopBtn.onclick = function () {
recorder.stop({
success(res) {
status.textContent = '已結束';
createAudioLinkFromBlob(res, 'wav');
},
error(err) {
console.log('err', err);
}
});
};
// 創建音頻、下載鏈接
function createAudioLinkFromBlob(res, type) {
let audio = document.createElement('audio');
let alink = document.createElement('a');
let score = document.createElement('span');
let blobUrl = URL.createObjectURL(res.blob);
alink.download = 'demo.' + type;
alink.textContent = 'demo.' + type;
alink.href = blobUrl;
audio.src = blobUrl;
audio.setAttribute('controls', '');
score.textContent = '分數:' + res.PronAccuracy;
let container = document.createElement('div');
container.appendChild(audio);
container.appendChild(alink);
container.appendChild(score);
result.appendChild(container);
}
此文已由騰訊雲+社區在各渠道發佈
獲取更多新鮮技術乾貨,可以關注我們騰訊雲技術社區-雲加社區官方號及知乎機構號