SDK 初始化
固定密钥接入
1. 您在 获取密钥 后,可以开始创建 TencentSOE 对象,使用 SecretId,SecretKey 进行签名认证。
注意:
该格式适用于前端调试,若使用此格式,请避免泄露密钥。
2. TencentSOE 获取的对象是唯一的,不同的界面需要重新创建。同一页面可以使用 reset 修改评测参数。
注意
建议用户使用子账号密钥 + 环境变量的方式调用 SDK,提高 SDK 使用的安全性。为子账号授权时,请遵循 最小权限指引原则,防止泄漏其他资源。
如果您一定要使用永久密钥,建议遵循 最小权限指引原则 对永久密钥的权限范围进行限制。
wx.ready(function() {const recorder = new TencentSOE({SecretId: 'your secretid', // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140SecretKey: 'your secretkey', // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140success() {recorder.start({RefText: 'about'});},error(err) {console.log(err);}});});
临时密钥接入
wx.ready(function () {const 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({RefText: 'about'});},error(err) {console.log(err);}});});
后端评测接入
wx.ready(function() {const recorder = new TencentSOE({TransInitUrl: '',服务端获取评测结果地址success() {recorder.start({RefText: 'about'});},error(err) {console.log(err);}});});
开始录音
创建对象 TencentSOE 后,在 success()内使用 start 方法进行录音评测。使用 start 方法后 SDK 会开始录音,调用成功会在 success 中输出评测结果;调用失败会在 error 中返回报错信息;录音超过60s会调用 complete 停止录音。使用方法原型参考微信 JSSDK - 开始录音接口。
wx.ready(function () {const recorder = new TencentSOE({// SDK初始化代码MediaUrl: 'https://yourdomain/getMedia',success() {stopbtn.onclick = function () {recorder.start({RefText: 'about',error: function (err) {console.log(err);},complete: function () {console.log('录音超过1分钟未停止触发此回调')},success: function (res) {console.log(res);result.innerHTML = JSON.stringify(res); //展示结果}});}}})})
停止录音
创建对象 TencentSOE 后,在 success()内使用 stop 方法进行录音评测。使用 stop 方法后 SDK 会停止录音,在 success 中返回最终评测结果和 localId,localId 可以用于播放等;调用失败后会在 error 中返回报错信息。stop 方法需要在 start 后进行调用。使用方法原型参考微信 JSSDK - 停止录音接口。
wx.ready(function () {const recorder = new TencentSOE({// SDK初始化代码MediaUrl: 'https://yourdomain/getMedia',success() {stopbtn.onclick = function () {recorder.stop({success(res) {// 输出测评结果console.log(res); //打印结果result.innerHTML = JSON.stringify(res); //展示结果audioUrl = res.localId || '';},error(err) {console.log(err);}});}}})})
SDK 内部会在停止录音后上传语音,获取到 media_id。MediaUrl 需要填入自身后端地址,SDK 会拼接
?mediaId=meida_id
发送 get 请求,获取到音频数据(blob 或 base64 格式)进行评测。MediaUrl 后端接口参考微信开发相关 - mediaurl接口。录音回放
使用 stop 方法后根据返回的 localId 数据,生成音频 url。使用 audio 标签进行播放。
css 部分:
<button id="listen">试听</button><audio id="audio"><source src="" type="audio/mp3"></audio>
javascript 部分:
const listenBtn = document.querySelector("#listen")let isPlaying = false;listenBtn.onclick = function () {if (isWX) {wx.playVoice({filePath: 'wxLocalResource://6876692290864'});return;}const ele = document.getElementById('audio');if (!audioUrl.length || !ele) {alert('当前没有录音音频可播放');return;}if (isPlaying) {ele.currentTime = 0;ele.pause();} else {ele.setAttribute('src', audioUrl);ele.play();}}
重制参数
创建对象 TencentSOE 后,在 success()内使用 reset 方法进行重制参数。同一页面不同的 tab 可以不通过 TencentSOE 重复初始化,使用 reset 改变评测参数。
wx.ready(function () {const recorder = new TencentSOE({// SDK初始化代码MediaUrl: 'https://yourdomain/getMedia',success() {recorder.reset({WorkMode: 0});},error(err) {console.log(err);}});});
参数说明
TencentSOE 说明
参数 | 类型 | 是否必填 | 默认值 | 说明 |
SecretId | String | 否 | 无 | 用户 SecretId |
SecretKey | String | 否 | 无 | 用户 SecretKey |
getAuthorization | function | 否 | 无 | |
TransInitUrl | String | 否 | 无 | |
MediaUrl | 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 | |
cosBuketUrl | 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 | 接口错误,具体看返回信息 |