有奖捉虫:行业应用 & 管理与支持文档专题 HOT

前提条件

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

设置标签页

pages/index/index.wxml
// 设置标签页
<button bindtap="onupload">{{ uploadBtnText }}</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 里面设置监听函数。
// 回调结果
manager.onResponse((res) => {
console.log(res)
})

// 最终结果
manager.onSuccess((res) => {
const tempFilePath = res.tempFilePath // 音频数据
console.log(res)
});

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

设置评测参数

uploadLocalFile 函数内设置音频数据,需要将音频的 byte 数据转成 base64 数据。
// 设置音频数据
manager.uploadLocalFile({
content:"about",
audioBase64: '//uQBAAAA'
});
微信本地临时文件读取。需要使用 wx.chooseMessageFile() ,从客户端会话选择文件。然后使用 FileSystemManager.readFile,读取本地文件内容。
const fs = wx.getFileSystemManager()
wx.chooseMessageFile({
count: 1,
type: 'file',
success(res) {
console.log(res)
fs.readFile({
filePath: res.tempFiles[0].path,
encoding: 'base64',
success(file) {
console.log(file)
}
})
}
})


集成使用

pages/index/index.wxml
// 设置标签页
<button bindtap="onupload">{{ uploadBtnText }}</button>
pages/index/index.js
let plugin = requirePlugin("myPlugin");
let manager = null;
// 设置生命周期回调函数
Page({
data: {
resps: [],
uploadBtnText: '本地文件',
},
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.onResponse((res) => {
console.log(res)
})
// 最终结果
manager.onSuccess((res) => {
const tempFilePath = res.tempFilePath // 音频数据
console.log(res)
});
// 失败回调
manager.onError((res) => {
console.log(res)
})
},
// 对应pages/index/index.wxml中的onupload,点击开始评测
onupload: function () {
const fs = wx.getFileSystemManager()
wx.chooseMessageFile({
count: 1,
type: 'file',
success(res) {
console.log(res)
fs.readFile({
filePath: res.tempFiles[0].path,
encoding: 'base64',
success(file) {
manager.uploadLocalFile({
content: "about",
audioBase64: file.data,
voiceFileType: 3
});
}
})
}
})
},
})


uploadLocalFile(options)说明:

属性
类型
必填
默认值
说明
content
String
被评估语音对应的文本,对应 API 文档 RefText 字段。参考评估文本介绍
evalMode
Number
0
评测模式
0:单词模式 1:句子模式 2:段落模式 3:自由说模式 4:单词音素纠错模式 5:情景评测模式 6:句子多分支评测模式 7:单词实时评测模式 8:拼音评测模式
scoreCoeff
Number
1.5
评价苛刻指数,[1.0 - 4.0] 范围内的浮点数,用于引擎评分的严格程度。参考苛刻指数介绍
serverType
Number
0
评估语言,0:英文,1:中文。参考评测模式介绍
textMode
Number
0
输入文本模式,0:普通文本,1:音素结构文本,参考音素标注
soeAppId
String
业务应用 ID,参考业务应用 ID 介绍
keyword
String
audioBase64
String
评测的音频数据,格式为 base64。
注意:
音频源目前仅支持16k采样率16bit单声道编码方式,如有不一致可能导致评估不准确或失败。参考 音频上传格式
timeoutData
Number
5000
请求超时时间,以毫秒为单位。
voiceFileType
Number
3
语音文件类型 2:wav,3:mp3。