记录开发过程中的东西:
录音之前有wx.startRecord来调用录音,不过目前微信小程序已经停止对该接口的维护,目前可采用wx.getRecorderManager创建录音管理来进行录音
录音转文字调用后端写的接口,我这里是PCM录音格式,具体要求可根据后端需要进行传递,设置录音格式字段已标明 实现步骤:
第一步:在要录音的page.js中全局创建录音管理
const manager1 = wx.getRecorderManager() //创建录音管理
第二步:在该js文件中可以写一个方法用来开启录音:
//使用录音接口
manager_start: function () {
let that = this
const options = {
duration: 5000, //指定录音的时长,单位 ms
sampleRate: 16000, //采样率
numberOfChannels: 1, //录音通道数
encodeBitRate: 96000, //编码码率
format: 'PCM', //音频格式,有效值 aac/mp3
frameSize: 50, //指定帧大小,单位 KB
audioSource: 'auto', //自动设置,默认使用手机麦克风,插上耳麦后自动切换使用耳机麦克风,所有平台适用
}
//开始录音
manager1.start(options);
manager1.onStart(() => {
console.log('recorder start')
});
manager1.onStop((res) => {
console.log('录音结束', res)
if (res.tempFilePath) {
console.log('录音后的地址',res)
that.contentText(res.tempFilePath)//将录音转文字(调用接口)
}
})
manager1.onRecognize = function (res) {
console.log(res)
}
//错误回调
manager1.onError((res) => {
console.log(res);
})
},
//调用接口语音转文字
contentText: function (url) {
// console.log(url)
let that = this
wx.uploadFile({
url: '接口地址',
filePath: url,//录音地址
name: 'file',//后端拿录音的key值,需要与后端确认
header: {
//请求头
'content-type': 'multipart/form-data',
},
formData: {
},
success: function (res) {
console.log("success-res", res)
that.condition(JSON.parse(res.data))
},
fail: function (res) {
console.log("fail-res", res)
return
}
});
},
将录音转文字的第二种方法(使用微信小程序插件:同声传译插件进行解析):
实现步骤:
前面一片文章已经说过该插件的引入方式
首先在page.js中引入插件
const plugin = requirePlugin('WechatSI');
//获取全局唯一的语音识别管理器recordRecoManager
const manager = plugin.getRecordRecognitionManager();
在该js页面中写入方法:
//触发录音的事件
touchStart: function (e) {
// var flag = Number(e.currentTarget.dataset.flag);
// this.setData({
// flag: flag
// })
// 语音开始识别
manager.start({
lang: 'zh_CN', // 识别的语言,目前支持zh_CN en_US zh_HK sichuanhua
})
},
//识别语音 -- 初始化
initRecord: function () {
const that = this;
// 有新的识别内容返回,则会调用此事件
manager.onRecognize = function (res) {
console.log(res)
if (res) {
manager.stop();
}
}
// 正常开始录音识别时会调用此事件
manager.onStart = function (res) {
console.log("成功开始录音识别", res)
}
// 识别错误事件
manager.onError = function (res) {
console.error("error msg", res)
}
//识别结束事件
manager.onStop = function (res) {
console.log('..............结束录音', res)
console.log('录音临时文件地址 -->' + res.tempFilePath);
console.log('录音总时长 -->' + res.duration + 'ms');
console.log('文件大小 --> ' + res.fileSize + 'B');
console.log('转语音为中文的内容 --> ' + res.result);
}
},