因业务需要,要求开发小程序语音识别功能。最后花了四天时间终于把这个坑给爬出来了。一、微信开发者工具坑小程序使用 wx.getRecorderManager(); 接口录音,录音直接就是acc或mp3格式(并不是silk格式,所以是能够播放的,其他具体原因后面会讲),最后使用的是mp3格式。本来mp3格式我认为是能够直接播放的,当我用从 微信开发者工具 上录的音上传( wx.uploadFile(obj) )录音文件后,发现用 Mac 无法打开进行播放,在这个坑中待了大概两天的样子,突然想到会不会是因为 微信开发者工具 录的原因?所以果断用手机录音进行了测试。这一测试,发现手机录得音能够在电脑上直接进行播放,所以现在的录音文件就是一个 正常的MP3文件。但是得要是在手机上录得才能打开播放。* 注: 为什么会在录音能不能播放这个问题上待两天? 因为在网上搜索的所有有关录音的东西,都说其格式是silk,这个是没办法直接打开播放的,所以这个不能播放的文件我一直认为是因为它是silk才不能播放,然而当我看这个文件时,发现其的确是MP3的二进制文件。(silk文件:是一种webm格式的文件进行base64编码后的文件,应该是个文本文件,但是这个是二进制文件,而且还无法打开播放)二、文件转格式的坑–FFmpeg 以及在PHP中使用exec() 执行FFmpeg命令关于FFmpeg的安装就是参考:centos 7.0 下安装FFmpeg软件 过程在使用PHP 的exec() 执行外部命令时发现有几个问题:php.ini中disable_functions 中把 exec 函数给禁用了,需要将其在PHP.ini 中删去,并重启php服务或者集成环境Apache的 www 用户否是具有文件目录的权限,添加权限的方法:参考:PHP 运行 mkdir() Permission Denied 的原因最重要的一点: $cmd_templat = ‘%s -y -i %s %s 2>&1’; $cmd = sprintf( $cmd_templat, FFMPEG_DIR, $BASE_DIR.$path, $new_name ); $info = null; $status = null; exec($cmd, $info, $status); sleep(1); chmod($new_name, 0777); if ( $status == 0 ) { return $new_name; }每次在执行exec后,执行chmod时,发生错误,说没有转换后的文件。因此我在执行chmod之前,暂停了1秒钟,到底为什么exec没有等待结果的返回我也不清楚是什么情况了。 这些问题解决后,语音识别方面就特别好做了,这个就不写了,具体代码: // 转换音频格式到允许的格式function convert_to_allow($path, $to= ‘wav’){ global $BASE_DIR; $path = ltrim($path,’.’); $extra = explode(‘.’, $path); $extra_name = array_pop( $extra ); $all_name = join( ‘.’, $extra ); // 如果现在的扩展名与转换后扩展名一样,则直接返回 if( $extra_name && $extra_name === $to ){ return $BASE_DIR.$path; } $new_name = $BASE_DIR.$all_name.’.’.$to; if( file_exists( $new_name ) ){ $new_name = $BASE_DIR.$all_name.randString(6).’.’.$to; } $cmd_templat = ‘%s -y -i %s %s 2>&1’; $cmd = sprintf( $cmd_templat, FFMPEG_DIR, $BASE_DIR.$path, $new_name ); $info = null; $status = null; exec($cmd, $info, $status); sleep(1); chmod($new_name, 0777); if ( $status == 0 ) { return $new_name; } return false;}
小程序录音、上传、转格式、语音识别爬坑记(微信版本:6.6.7及以上)
相关推荐
小程序全局变清流县E企盈小程序量的使用
微信支付服务商支付模式,sub_mch_id与su涟源市E企盈小程序b_appid不匹配
前端东乡县E企盈小程序css样式小圆点样式
QQ出现0x000000c并且打平凉E企盈小程序不开网页
小程序textarea文本保存后杭锦旗E企盈小程序显示不换行的问题
永善县E企盈小程序如何解决小程序textarea层级最高的问题
小程序或者公众号授权给第三方平台舞阳县E企盈小程序流程
微淮阳县E企盈小程序信小程序如何引入使用js插件?
微信小程序(开发工具、项目内蒙古E企盈小程序创建)
QQ小程序,邀四会市E企盈小程序请码申请链接
小程序——点击太谷县E企盈小程序添加账户
微信小程序永嘉县E企盈小程序企业付款到零钱API开发
最新评论
不错的小程序案例
优秀的团队,不错的服务!
讲的很好
主播长的帅气
好系统好服务
优秀的团队
好服务,值得信赖
不错的服务