录音评测说明

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

我的收藏

前提条件

1. 完成 集成 SDK
2. 完成 密钥 申请。

设置标签页

"pages/index/index.wxml"
// 设置标签页
<button onlongpress="ontouchstart" ontouchend="ontouchend">{{ btnText }}</button>

SDK 初始化

在"pages/index/index.js"中引入 SDK
let plugin = requirePlugin("myPlugin");
let manager = null;

设置生命周期回调函数

参考 微信开发者文档,设置生命周期回调函数 onShow。选择一种密钥接入方式。
Page({
data: {
resps: [],
btnText: '长按录制',
},
onShow: function() {
// Do something when page show.
},
})

固定密钥接入

创建 getSoeRecorderManager 对象,使用 SecretId,SecretKey 进行签名认证。固定密钥适用于前端调试,若使用此格式,请避免泄露密钥。getSoeRecorderManager 获取的对象是唯一的,不同的界面需要重新创建。
注意:
建议用户使用子账号密钥 + 环境变量的方式调用 SDK,提高 SDK 使用的安全性。为子账号授权时,请遵循 最小权限指引,防止泄漏其他资源。
如果您一定要使用永久密钥,建议遵循最小权限指引 对永久密钥的权限范围进行限制。
manager = plugin.getSoeRecorderManager({
SecretId: 'your secretid', // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
SecretKey: 'your secretkey', // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
});

临时密钥接入

使用固定密钥会存在安全问题,需要创建 getSoeRecorderManager 对象,线上环境需要在 服务端获取临时授权凭证 。调用服务端示例参考:
manager = plugin.getSoeRecorderManager({
getAuthorization: function (callback) {
wx.request({
url: 'https://example.com/server/getTmpIdAndKey', //服务端地址
method: 'POST',
data: {},
success: data => {
callback({
Token: data.Credentials.Token,
TmpSecretId: data.Credentials.TmpSecretId,
TmpSecretKey: data.Credentials.TmpSecretKey
})
}
});
}
});

临时密钥接入(微信云开发)

使用微信云开发进行接入。需要创建 getSoeRecorderManager 对象,完成 微信云开发相关内容,调用云函数示例参考:
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力 。。')
} else {
wx.cloud.init({
traceUser: true,
})
}
manager = plugin.getSoeRecorderManager({
getAuthorization: function (callback) {
wx.cloud.callFunction({
name: 'getAuthorization',
data: {},
success: data => {
console.log('test:', data)
callback({
Token: data.result.Credentials.Token,
TmpSecretId: data.result.Credentials.TmpSecretId,
TmpSecretKey: data.result.Credentials.TmpSecretKey
})
}
})
}
})

SDK 使用方法

设置监听函数

onShow里面设置监听函数,录音方法参考 RecorderManager
// 开始录音
manager.onStart(() => {
this.setData({
resps: [],
btnText: '录制中'
})
})

//停止录音
manager.onStop((res) => {
console.log(res.tempFilePath); //音频数据
this.setData({
btnText: '长按录制'
})
})

// 回调结果
manager.onResponse((res) => {
console.log(res)
})

// 最终结果
manager.onSuccess((res) => {
console.log(res)
});

// 失败回调
manager.onError((res) => {
console.log(res)
})

设置评测参数

在 start 函数内设置评测参数,参数描述参考 start(options)说明
//设置请求参数并进行录音评测
manager.start({
content: 'about'
})
使用 stop 函数停止评测
//停止录音
manager.stop()

集成使用

"pages/index/index.wxml"
// 设置标签页
<button onlongpress="ontouchstart" ontouchend="ontouchend">{{ btnText }}</button>
"pages/index/index.js"
let manager = null;
let plugin = requirePlugin("myPlugin");
// 设置生命周期回调函数
Page({
data: {
resps: [],
btnText: '长按录制',
},
onShow: function () {
// 设置初始化初始化,具体参考https://cloud.tencent.com/document/product/884/84111#434bdd99-20df-4763-9a51-00cf0b6e46dc
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力 。。')
} else {
wx.cloud.init({
traceUser: true,
})
}
manager = plugin.getSoeRecorderManager({
getAuthorization: function (callback) {
wx.cloud.callFunction({
name: 'getAuthorization',
data: {},
success: data => {
console.log('test:', data)
callback({
Token: data.result.Credentials.Token,
TmpSecretId: data.result.Credentials.TmpSecretId,
TmpSecretKey: data.result.Credentials.TmpSecretKey
})
}
})
}
})

//设置监听函数
manager.onStart(() => {
// 改变btnText的值,提示录音状态
this.setData({
resps: [],
btnText: '录制中'
})
})

manager.onStop((res) => {
console.log(res.tempFilePath); //音频数据
this.setData({
btnText: '长按录制'
})
})

// 回调结果
manager.onResponse((res) => {
console.log(res)
})
// 最终结果
manager.onSuccess((res) => {
console.log(res)
});

manager.onError((res) => {
console.log(res)
})
},
// 对应pages/index/index.wxml中的ontouchstart,触摸开始评测
ontouchstart: function () {
console.log('ontouchstart');
manager.start({
content: "about",
})
},
// 对应pages/index/index.wxml中的ontouchend,停止触摸结束评测
ontouchend: function () {
console.log('ontouchEnd');
manager.stop()
},
})

参数说明

getSoeRecorderManager 说明

参数
类型
是否必填
默认值
说明
SecretId
String
用户 SecretId
SecretKey
String
用户 SecretKey
getAuthorization
function
获取临时密钥接口,参考getAuthorization 接口说明

start(options) 说明

属性
类型
必填
默认值
说明
content
String
被评估语音对应的文本,对应 API 文档 RefText 字段。参考评估文本介绍
evalMode
Number
0
评测模式
0:单词模式 1:句子模式 2:段落模式 3:自由说模式 4:单词音素纠错模式 5:情景评测模式 6:句子多分支评测模式 7:单词实时评测模式 8:拼音评测模式
duration
Number
60000
指定录音的时长,单位 ms,最大为300000(需要使用段落模式或自由说模式),在到达 duration 后会自动停止录音。
scoreCoeff
Number
1.5
评价苛刻指数,[1.0 - 4.0] 范围内的浮点数,用于引擎评分的严格程度。参考苛刻指数介绍
serverType
Number
0
评估语言,0:英文,1:中文。参考评测模式介绍
textMode
Number
0
输入文本模式,0:普通文本,1:音素结构文本,参考音素标注
soeAppId
String
业务应用 ID,参考业务应用 ID 介绍
sentenceInfiEnabled
Number
0
输出断句中间结果标识(需要使用1.2.16及以上版本才可以使用该字段)
0:不输出,1:输出
通过设置该参数可以在评估过程中的分片传输请求中,返回已经评估断句的中间结果,中间结果可用于客户端 UI 更新,输出结果为 TransmitOralProcess 请求返回结果 SentenceInfoSet 字段
keyword
String
cosBuketUrl
String
音频存储模式,此参数已废弃,无需设置;
注意:
有存储需求的用户建议自行存储至腾讯云 COS 对象存储使用。