首先,下载并安装教程和支持鱼渔业开发套件微信。php
收到正式文件的声音识别结果指接收语音识别结果,配合本次课程。开发包中专门有一个教学文件tool/send_and_response.php。注意下面代码:html
getRevContent和getRevVoice函数都出自开发包中的common/wechat-php-sdk/wechat.class.php。api
getRevVoice返回包括MediaId和Format的数组,鱼渔微信开发0基础教程【八】- 接收语音消息已经介绍过了。数组
getRevContent代码例如如下:缓存
注意当中的逻辑是,假设有Recognition项,就返回语音识别结果。微信
但是这里面有些复杂的状况,详见如下的分析。结论是当MsgType为voice时,可用php的strlen函数推断Recognition的值是否为空串,假设不是空串,说明语音识别功能已经开启,有识别结果,但识别结果的正确几率有多大,微信没有给出不论什么參数。不管Recognition的值是否为空。微信都给出了MediaId和Format,依据MediaId在3天内可以从微信server下载原声,以正视听。微信开发
在run.php的最前面加上如下两行。就可以測试了。微信公众平台
require_once dirname(__FILE__) . '/tool/send_and_response.php';
exit;ide
鱼渔在这里索性详解下这个Recognition。函数
1、測试号默认没有开启语音识别功能,需要到账号管理后台人工开启,下图是已经开启的状态:
注意由于client缓存,开发人员开启或者关闭语音识别功能,对新关注者立马生效,对已关注用户需要24小时生效。开发人员可以又一次关注此账号进行測试。
2、微信输入方式中有一种叫作“语音输入",相同用到语音到文字的转换技术,但用户最后发给微信server的不是语音消息,而是文字消息。MsgType为text。和此次课讲的接收语音识别结果没有不论什么关系,例如如下图所看到的:
3、即使语音识别功能默认是关闭的,仅仅要MsgType为voice,微信server发来的xml中就会包括一个Recognition,值为空,详见鱼渔微信开发0基础教程【八】- 接收语音消息中的日志记录,那次咱们没有开启语音识别功能。如下几点是开启后的状况。
4、在微信对讲机模式下。假设按住说话后,没有语音输入,也就是发送一个“无声”的语音消息给微信,微信会给出一个mediaId,Format为speex,Recognition为空,如下是交互界面和日志:
5、在微信对讲机模式下,假设按住说话后,有语音输入。并且识别正确,微信会给出一个mediaId。Format为amr,Recognition非空,如下是交互界面和日志:
6、在微信对讲机模式下,假设按住说话后。有语音输入,但识别错误。微信会给出一个mediaId。Format为amr,Recognition非空。如下是交互界面和日志:
假设能够针对语音识别结果的正确率,给出个信心指数。比方80%,或许会对实际应用有所帮助。
近期微信推出智能开放平台,包含语音和图像的识别,鱼渔对这些智能领域密切关注,并有一些资源。有不论什么idea都欢迎联系讨论。
-----------------------------------------------------------------------------------------------------------------------------------------
欢迎转载。但请注明来自鱼渔解读微信公众平台开发(http://blog.csdn.net/yidongapi)。谢谢!
欢迎关注公众账号:weixintizi。个人我的站点:微通道梯