当前位置: 首页 > Web前端 > CSS

小程序实现语音识别需要填多少坑?

时间:2023-03-30 22:30:39 CSS

前不久写了一个工具类的微信小程序(围绕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:{{text}}}音频转换我后台用的是php的开源框架thinkphp,当然还有node,java,python其他任何后端语言都可以,你可以根据你的你自己的喜好和能力。想要做好音频转码,就需要用到音视频转码工具ffmpeg和avconv,它们都依赖于gcc。安装过程中可以自行百度,也可以按照最下方的文章链接进行安装。$flag,'message'=>$message,'data'=>$data);printjson_encode($result);exit;}}调用识别接口我们准备好文件后,就可以通过api接口请求传输base64编码的音频文件了,在过去的一段时间里,我们应该注意严格按照文档中描述的规范传输,否则会造成未知结果。'main','userid'=>'user_0001',"auf"=>"16k","aue"=>"raw","spx_fsize"=>"60")));$data="data=".$d;$res=$this->httpsRequest($url,$data,$xparam);if(!empty($res)&&$res['code']==00000){apiResponse("success","识别成功!",$res);}else{apiResponse("error","识别失败!");}}//数据返回封装函数apiResponse($flag='error',$message='',$data=array()){$result=array('flag'=>$flag,'message'=>$消息,'数据'=>$数据);打印json_encode($result);出口;}}到这里基本就完成了。以上代码是整理出来的,不一定能满足你实际的开发需求。如有发现不妥之处,欢迎微信(xiaoqiang0672)交流。想看实际案例可以微信扫码-关于gcc安装:http://www.linuxidc.com/Linux...关于FFmpeg安装:http://note.youdao.com/notesh...关于ffmpeg/avconv安装:http://blog.csdn.net/killmice...