首页 > 热点 > 微信 > 正文

鱼渔微信开发初级教程之接收语音识别结果

2020-03-22 17:16:54
字体:
来源:转载
供稿:网友
  • 首先请下载并安装和本教程配套的鱼渔微信开发包。

    接收语音识别结果的官方文档参见接收语音识别结果,配合本次课程,开发包中专门有一个教学文件tool/send_and_response.php,注意以下代码:

    getRevContent和getRevVoice函数都出自开发包中的common/wechat-php-sdk/wechat.html' target='_blank'>class.php。getRevVoice返回包含MediaId和Format的数组,鱼渔微信开发初级教程【八】- 接收语音消息已经介绍过了。getRevContent代码如下:

    注意其中的逻辑是,如果有Recognition项,就返回语音识别结果。但是这里面有些复杂的情况,详见下面的分析。结论是当MsgType为voice时,可用php的strlen函数判断Recognition的值是否为空串,如果不是空串,说明语音识别功能已经开启,有识别结果,但识别结果的正确概率有多大,微信没有给出任何参数。不管Recognition的值是否为空,微信都给出了MediaId和Format,根据MediaId在3天内可以从微信服务器下载原声,以正视听。

    在run.php的最前面加上下面两行,就可以测试了。

    require_once dirname(__FILE__) . '/tool/send_and_response.php';
    exit;


    鱼渔在这里索性详细解释下这个Recognition。

    一、测试号默认没有开启语音识别功能,需要到帐号管理后台人工开启,下图是已经开启的状态:

    注意由于客户端缓存,开发者开启或者关闭语音识别功能,对新关注者立刻生效,对已关注用户需要24小时生效。开发者可以重新关注此帐号进行测试。

    二、微信输入方式中有一种叫做“语音输入",同样用到语音到文字的转换技术,但用户最后发给微信服务器的不是语音消息,而是文字消息,MsgType为text,和这次课讲的接收语音识别结果没有任何关系,如下图所示:

    三、即便语音识别功能默认是关闭的,只要MsgType为voice,微信服务器发来的xml中就会包含一个Recognition,值为空,详见鱼渔微信开发初级教程【八】- 接收语音消息中的日志记录,那次我们没有开启语音识别功能。下面几点是开启后的情况。

    四、在微信对讲机模式下,如果按住说话后,没有语音输入,也就是发送一个“无声”的语音消息给微信,微信会给出一个mediaId,Format为speex,Recognition为空,下面是交互界面和日志:

    五、在微信对讲机模式下,如果按住说话后,有语音输入,并且识别正确,微信会给出一个mediaId,Format为amr,Recognition非空,下面是交互界面和日志:

    六、在微信对讲机模式下,如果按住说话后,有语音输入,但识别错误,微信会给出一个mediaId,Format为amr,Recognition非空,下面是交互界面和日志:

    如果能够针对语音识别结果的正确率,给出个信心指数,比如80%,也许会对实际应用有所帮助。最近微信推出智能开放平台,包括语音和图像的识别,鱼渔对这些智能领域密切关注,并有一些资源,有任何idea都欢迎联系讨论。

    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表