首先微信有两种录制语音方式
1.wx.startRecord 得到的文件是silk格式的,从版本1.6.0开始,微信就不再维护这个接口了
2.wx.getRecorderManager 得到的文件是mp3格式的,建议使用这个方式来录音
const manager = wx.getRecorderManager();
startRecord: function(e){
const options = {
durations: 10000,
sampleRate: 16000,
numberOfChannels: 1,
encodeBitRate: 96000,
format: 'mp3',
frameSize: 50
}
manager.start(options);
var that = this;
manager.onStart(() => {
console.log('record start')
})
},
endRecord: function(e){
var that = this;
var filePath = '';
manager.stop();
manager.onStop((res) => {
filePath = res.tempFilePath
wx.uploadFile({
...//上传到后台处理
success: function (res) {
that.setData({
text: res.result
})
},
fail: function (res) {
}
})
})
}
这样我们就成功拿到录音拉,然后语音识别我用的是百度的API,JAVA SDK;
看看都会的拉,就是有一个问题,百度语音在识别的时候,只支持PCM WAV AMR这三个格式,但是我们拿到的是MP3的格式,就需要转换一下格式
解决方案 链接,使用这位老铁的方式有一个问题就是转换格式后的语音根本识别不了,然后我就自己设置了一下参数
//AudioFormat baseFormat = in.getFormat();
//targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16, baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);
targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 16000, 16,1, 50, 16000, false);
就好了,就是注意下这些参数,在录音的时候需要配置,转换的时候也有,还有识别的时候也有。。