小程序语音识别接口
.wxml代码
<view class="voice-button" bindtouchstart="recordStart" bindtouchend="recordEnd"> <image class="pic-img" src="/resource/image/voice.png"></image> <view class="pic-text">长按说话</view> </view>
.wxss代码
.voice-button{ float: right; text-align: center; } .pic-img{ width: 132rpx; height: 132rpx; } .pic-text{ font-size: 26rpx; }
.js代码
.js页面 /* 语音功能 */ //这个是监听语音识别的方法,只要写了bindtouchstart和bindtouchend对应的方法就可自动触发,需注意的是,最好写var that = this;因为会发生指向问题,从而触发不到这个方法。 initRecord: function(){ let that = this; //有新的识别内容返回,则会调用此事件 // manager.onRecognize = (res) => { // var recText = this.sendRecord(res.tempFilePath); // console.log('语音识别中'); // console.log(result); // this.setData({ // inputVal: recText // }); // } // 识别结束事件 manager.onStop ((res) => { console.log('监听识别结束'); console.log(res.tempFilePath) that.sendRecord(res.tempFilePath);//识别结束执行上传语音事件 }) // 识别错误事件 manager.onError ((res) => { that.setData({ //这里的参数根据项目要求自行设置 }) }) }, //识别开始 recordStart: function(){ let that = this; manager.start({ duration: 30000,//指定录音的时长,单位 ms sampleRate: 16000,//采样率 numberOfChannels: 1,//录音通道数 encodeBitRate: 96000,//编码码率 format: 'mp3',//音频格式,有效值 aac/mp3 frameSize: 50,//指定帧大小,单位 KB }) that.setData({ //这里的参数根据项目要求自行设置 }); console.log('识别开始') }, //识别结束 recordEnd: function(){ manager.stop(); console.log('识别结束') }, //上传语音方法 sendRecord: function (src) { let that = this; app.uploadFile({ url: url,//这里写语音识别的接口 method: 'POST', filePath: src, name: 'file', formData: { file:src }, header:{ 'Content-Type': 'application/x-www-form-urlencoded' }, success: function (result) { console.log('识别结果') console.log(result) //必须解析 var res = JSON.parse(result.data); console.log(res) if(res.success){ var data = res.item; let recText ; if(data.length>0){ recText = data.replace(/。/ig, ''); that.setData({ //这里的参数根据项目要求自行设置 }) }else{ that.setData({ //这里的参数根据项目要求自行设置 }); app.msg('无识别结果') return false; } }else{ that.setData({ listening: false }); app.msg(res.message) return false; } }, fail: function (err) { app.msg(res.message) return false; } }); },