前提条件
1. 完成 集成 SDK。
2. 完成 密钥 申请。
SDK 初始化
固定密钥接入
创建 TencentSOE 对象,使用 SecretId,SecretKey 进行签名认证。该格式适用于前端调试,若使用此格式,请避免泄露密钥。
TencentSOE 获取的对象是唯一的,不同的界面需要重新创建。同一页面可以使用 reset 修改评测参数。
注意:
实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密。
代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:云 API 密钥安全方案推荐。
密钥可前往 官网控制台 进行获取。
let recorder = new TencentSOE({ SecretId: 'your secretid', SecretKey: 'your secretkey', success() { recorder.start({}); }, error(err) { console.log(err); } });
临时密钥接入
let recorder = new TencentSOE({ getAuthorization(callback) { let url = ''; // 服务端获取临时密钥地址 $.get(url, function (data) { callback({ Token: data.Credentials.Token, TmpSecretId: data.Credentials.TmpSecretId, TmpSecretKey: data.Credentials.TmpSecretKey, ExpiredTime: data.ExpiredTime }); }); }, success() { recorder.start({}); }, error(err) { console.log(err); } });
服务端评测接入
let recorder = new TencentSOE({ TransInitUrl: '', // 服务端获取评测结果地址 success() { recorder.start({}); }, error(err) { console.log(err); } });
开始录音
创建对象 TencentSOE 后,new TencentSOE 时会授权打开麦克风,使用 start 方法后 SDK 会调用评测服务,调用成功会在 success 中输出评测结果;调用失败会在 error 中返回报错信息。
let recorder = new TencentSOE({SilentDuration:5000,SilentVolume:20,success() {recorder.start({ //使用start方法开始录音RefText: 'about', // 参数error: function (err) {console.log(err);},success: function (res) {console.log(res);result.innerHTML = JSON.stringify(res); //展示结果}});}})
静音检测
在 start 中使用 quiet 检测用户是否连续处于静音状态,使用 volume 检测当前音量。
let recorder = new TencentSOE({SilentDuration:5000,SilentVolume:20,success() {recorder.start({quiet: function(res) {console.log(res);},volume: function(res) {console.log(res);}});}
停止录音
创建对象 TencentSOE 后,在 success()内使用 stop 方法进行录音评测。使用 stop 方法后 SDK 会停止录音,在 success 中返回最终评测结果和音频数据;调用失败后会在 error 中返回报错信息。stop 方法需要在 start 后进行调用。
css 部分:
<button id="stop">stop</button><span id="result"></span>
javascript 部分:
const stopbtn = document.querySelector("#stop") //获取buttonconst result = document.querySelector("#result")let recorder = new TencentSOE({ // 初始化success() {stopbtn.onclick = function () {recorder.stop({success(res) {// 输出测评结果console.log(res); //打印结果result.innerHTML = JSON.stringify(res); //展示结果const audioUrl = res.blob ? URL.createObjectURL(res.blob) : ''; //输出音频url},error(err) {console.log(err);}});}}})
重置参数
创建对象 TencentSOE 后,在 success()内使用 reset 方法进行重置参数。同一页面不同的 tab 可以不通过 TencentSOE 重复初始化,使用 reset 改变评测参数。
let recorder = new TencentSOE({success() {recorder.reset({WorkMode: 1});}})
解除麦克风占用
使用 TencentSOE 创建对象后,调用 destroy 方法,即可解除麦克风占用。
// 使用场景:在停止录音后需要解除麦克风占用let recorder = new TencentSOE({success() {recorder.stop({success(res) {// 输出测评结果console.log(res); //打印结果recorder.destroy(); //解除麦克风占用},});}})
参数说明
TencentSOE 说明
参数 | 类型 | 是否必填 | 默认值 | 说明 |
SecretId | String | 否 | 无 | 用户 SecretId |
SecretKey | String | 否 | 无 | 用户 SecretKey |
getAuthorization | function | 否 | 无 | |
TransInitUrl | String | 否 | 无 | |
success | function | 否 | 无 | 创建成功回调 |
error | function | 否 | 无 | 创建失败回调 |
WorkMode | Integer | 否 | 0 | |
EvalMode | Integer | 否 | 0 | 评测模式 0:单词模式 1:句子模式 2:段落模式 3:自由说模式 4:单词音素纠错模式 5:情景评测模式 6:句子多分支评测模式 7:单词实时评测模式 8:拼音评测模式 |
ScoreCoeff | Float | 否 | 3.5 | 评价苛刻指数,取值为[1.0 - 4.0]范围内的浮点数 |
SoeAppId | String | 否 | 无 | |
ServerType | Integer | 否 | 0 | |
TextMode | Integer | 否 | 0 | |
SilentDuration | Float | 否 | 5000 | 触发静音回调所需要检测的连续的时间;单位为毫秒 |
SilentVolume | Float | 否 | 20 | 低于该值,则认为是静音。取值为1 - 100 |
cosBucketUrl | String | 否 | 无 | 音频存储模式,此参数已废弃,无需设置; 注意: 有存储需求的用户建议自行存储至腾讯云 COS 对象存储使用。 |
start(options) 说明
reset(options)说明
参数 | 类型 | 是否必填 | 默认值 | 说明 |
WorkMode | Integer | 否 | 0 | |
EvalMode | Integer | 否 | 0 | 评测模式 0:单词模式 1:句子模式 2:段落模式 3:自由说模式 4:单词音素纠错模式 5:情景评测模式 6:句子多分支评测模式 7:单词实时评测模式 8:拼音评测模式 |
ScoreCoeff | Float | 否 | 3.5 | 评价苛刻指数,取值为[1.0 - 4.0]范围内的浮点数 |
SoeAppId | String | 否 | 无 | |
ServerType | Integer | 否 | 0 | |
TextMode | Integer | 否 | 0 |
error 错误码说明
code | 错误说明 |
10000 | 参数格式错误 |
10001 | 当前浏览器不支持录音功能 |
10002 | 未开启麦克风访问权限 |
10003 | 未提供发音评估初始化接口 |
10004 | 未提供发音数据传输接口 |
10005 | 未提供测评文本 |
10006 | 上传文件必须是 MP3 类型 |
10007 | 未引入微信 JS-SDK |
10008 | 用户拒绝用户拒绝授权录音 |
10009 | 上传文件必须是 MP3 类型 |
10010 | 网络异常 |
10011 | TransInitUrl 接口不正确 |
10012 | MediaUrl 接口不正确 |
10013 | 录音失败,请重新录音 |
10020 | 接口错误,具体看返回信息 |