### [小程序实现语音识别经验分享](https://www.prosaas.cn/article/17729) **Published:** 2018-02-08T08:02:03 **Author:** 5201314 **Excerpt:** 之前写了个工具型微信小程序(Find周边),里面用到了语音识别技术。本文就主要和大家分享小程序实现语音识别经验… 之前写了个工具型微信小程序(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、wav** - wx.getRecorderManager() > 相对wx.startRecord()接口,该接口提供的能力更为强大(详情),可以暂停录音也可以继续录音,根据自己需求设置编码码率,录音通道数,采样率。最让人开心的是可以指定音频格式,有效值 aac/mp3。不好的是wx.getRecorderManager()在1.6.0才开始被支持。当然如果你要兼容低端微信用户需要使用wx.startRecord()做兼容处理。 - 事件监听细节 // wxjs: const recorderManager = 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("开始")     recorderManager.start({       duration: 10000     })   },   //松开按钮   endHandle: function () {     console.log("结束")     //触发录音停止     recorderManager.stop()   } }) //wxml:     {{text}} **音频转换** 我这边后端使用php的开源框架thinkphp,当然node、java、python等后端语言都可以,你根据自己的喜好和能力来。想做好音频转码我们就要借助音视频转码工具ffmpeg、avconv,它们都依赖于gcc。安装过程大家可以自行百度,或者关注底部的文章链接。 $flag,'message'=>$message,'data'=>$data);         print json\_encode($result);exit;     } } **调用识别接口** 当我们把文件准备好之后,接下来我们就可以将base64编码之后的音频文件通过api接口请求传输过去。期间我们要注意严格按照文档中所说的规范传输,否则将造成不可知的结果。  '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","识别失败!");         }     }     //数据返回封装     function apiResponse($flag = 'error', $message = '',$data = array()){         $result = array('flag'=>$flag,'message'=>$message,'data'=>$data);         print json\_encode($result);exit;     } } 到这里基本就完成了。以上代码是经过整理之后的,并不一定能够满足各位的实际开发需求。如果发现不当之处欢迎微信交流(xiaoqiang0672)。 想看实际案例的可以微信扫码 \- ![](https://img.php.cn/upload/article/000/054/025/076a0b0c2648b8970985129bbc46fc1a-0.jpg) 相关推荐: .Net开发微信公众平台之语音识别代码解析 关于微信公众平台语音识别结果的调用 HTML5语音识别标签写法附图\_html5教程技巧 以上就是小程序实现语音识别经验分享的详细内容,更多请关注知企PROSAAS其它相关文章! **Tags:** ffmpeg, html5, Java, php, Python, thinkphp, 事件, 微信小程序, 接口 **Categories:** 后端开发 ---