录音评测说明

最近更新时间:2024-03-27 09:56:11

我的收藏

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/37140
SecretKey: 'your secretkey', // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
success() {
recorder.start({
RefText: 'about'
});
},
error(err) {
console.log(err);
}
});
});

临时密钥接入

使用固定密钥会存在安全问题,线上环境推荐使用临时访问凭证。示例参考 getAuthorization 接口说明
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);
}
});
});

后端评测接入

通过发送 POST 请求, Content-Type 类型为 application/json。调用服务端评测进行评测,将返回结果回调示例参考 TransInitUrl 接口说明
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
获取临时密钥接口,参考getAuthorization 接口说明
TransInitUrl
String
发音数据传输附带初始化接口地址,参考TransInitUrl 接口说明
MediaUrl
String
获取音频byte数据的url,参考微信开发相关
success
function
创建成功回调
error
function
创建失败回调
WorkMode
Integer
0
语音输入模式,1非流式一次性评估。参考语音输入模式介绍
EvalMode
Integer
0
评测模式
0:单词模式 1:句子模式 2:段落模式 3:自由说模式 4:单词音素纠错模式 5:情景评测模式 6:句子多分支评测模式 7:单词实时评测模式 8:拼音评测模式
ScoreCoeff
Float
3.5
评价苛刻指数,取值为[1.0 - 4.0]范围内的浮点数
用于平滑不同年龄段的分数,1.0为小年龄段,4.0为最高年龄段。参考苛刻指数介绍
SoeAppId
String
业务应用 ID,参考业务应用 ID 介绍
ServerType
Integer
0
评估语言,0:英文,1:中文。参考评测模式介绍
TextMode
Integer
0
输入文本模式,0: 普通文本,1: 音素结构文本,参考音素标注
cosBuketUrl
String
音频存储模式,此参数已废弃,无需设置;
注意:
有存储需求的用户建议自行存储至腾讯云 COS 对象存储使用。

start(options) 说明

参数
类型
是否必填
默认值
说明
RefText
String
被评估语音对应的文本,参考 评估文本介绍
Keyword
String

reset(options)说明

参数
类型
是否必填
默认值
说明
WorkMode
Integer
0
语音输入模式,1非流式一次性评估。参考 语音输入模式介绍
EvalMode
Integer
0
评测模式
0:单词模式 1:句子模式 2:段落模式 3:自由说模式 4:单词音素纠错模式 5:情景评测模式 6:句子多分支评测模式 7:单词实时评测模式 8:拼音评测模式
ScoreCoeff
Float
3.5
评价苛刻指数,取值为[1.0 - 4.0]范围内的浮点数
用于平滑不同年龄段的分数,1.0为小年龄段,4.0为最高年龄段。参考苛刻指数介绍
SoeAppId
String
业务应用 ID,参考业务应用 ID 介绍
ServerType
Integer
0
评估语言,0:英文,1:中文。参考评测模式介绍
TextMode
Integer
0
输入文本模式,0: 普通文本,1: 音素结构文本,参考音素标注

error 错误码说明

code
错误说明
10000
参数格式错误
10001
当前浏览器不支持录音功能
10002
未开启麦克风访问权限
10003
未提供发音评估初始化接口
10004
未提供发音数据传输接口接口
10005
未提供测评文本
10006
上传文件必须是 MP3 类型
10007
未引入微信 JS-SDK
10008
用户拒绝用户拒绝授权录音
10009
上传文件必须是 MP3 类型
10010
网络异常
10011
TransInitUrl 接口不正确
10012
MediaUrl 接口不正确
10013
录音失败,请重新录音
10020
接口错误,具体看返回信息