前不久写了一个工具类的微信小程序(围绕Find),它使用了语音识别技术。现将实现细节整理如下:接口预览通过阅读理解科大讯飞接口文档、小程序接口开发文档和学习后台ThinkPhp框架,整理出以下开发步骤:注册科大讯飞账号(骄傲中国人,全球领先的语音识别技术)进入AIUI开放平台在应用管理中创建应用并记录APPID和ApiKey进入应用配置,配置自己的场景模式、识别方式和技巧开发小程序并记录需要识别的音频(详见下文)后端对录制的音频进行转码(讯飞支持pcm、wav),提交给识别接口(详见下文)。小程序收到识别结果,进入下一步业务录音接口wx.startRecord()和wx.stopRecord()wx.startRecord()和wx.stopRecord()接口也可以满足要求,但不再维护由微信团队从1.6.0版本开始。建议使用功能更强大的wx.getRecorderManager接口。该接口获取的音频格式为silk。silk是webm格式base64编码后的结果。解码后,我们需要将webm转换成pcm。与wx.startRecord()接口相比,wavwx.getRecorderManager()提供了更强大的能力(详情),可以暂停录音或者继续录音,并根据需要设置编码码率、录音通道数、采样率您的需求。最开心的是可以指定音频格式,有效值为aac/mp3。不幸的是,wx.getRecorderManager()仅在1.6.0中受支持。当然,如果要兼容低端微信用户,还需要使用wx.startRecord()进行兼容处理。事件监听细节//wxjs:constrecorderManager=wx.getRecorderManager()recorderManager.onStart(()=>{//开始录音的回调方法})//录音停止函数recorderManager.onStop((res)=>{const{tempFilePath}=res;//上传录制好的音频wx.uploadFile({url:app.d.hostUrl+'/Api/Index/wxupload',//只是一个例子,不是真正的接口地址filePath:tempFilePath,name:'viceo',success:function(res){console.log(res);}})})Page({//按下按钮--录音startHandel:function(){console.log("Start")recorderManager.start({duration:10000})},//释放按钮endHandle:function(){console.log("End")//触发录制停止recorderManager.stop()}})//wxml:
