鱼渔微信的发展0基础课程【十二】- 接收语音识别结果

首先,下载并安装教程和支持鱼渔业开发套件微信

收到正式文件的声音识别结果指接收语音识别结果,配合本次课程。开发包中专门有一个教学文件tool/send_and_response.php。注意下面代码:

getRevContent和getRevVoice函数都出自开发包中的common/wechat-php-sdk/wechat.class.php。

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;

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

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

注意因为client缓存,开发人员开启或者关闭语音识别功能,对新关注者立马生效,对已关注用户须要24小时生效。开发人员能够又一次关注此帐号进行測试。

二、微信输入方式中有一种叫做“语音输入",相同用到语音到文字的转换技术,但用户最后发给微信server的不是语音消息,而是文字消息。MsgType为text。和这次课讲的接收语音识别结果没有不论什么关系,例如以下图所看到的:

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

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

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

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

假设可以针对语音识别结果的正确率,给出个信心指数。比方80%,或许会对实际应用有所帮助。

近期微信推出智能开放平台,包含语音和图像的识别,鱼渔对这些智能领域密切关注,并有一些资源。有不论什么idea都欢迎联系讨论。

-----------------------------------------------------------------------------------------------------------------------------------------

欢迎转载。但请注明来自鱼渔解读微信公众平台开发(http://blog.csdn.net/yidongapi)。谢谢!

欢迎关注公众帐号:weixintizi。我的个人站点:微通道梯

时间: 2024-10-20 00:21:25

鱼渔微信的发展0基础课程【十二】- 接收语音识别结果的相关文章

Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明

紧接上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>,这里专讲OAuth2.0. 理解OAuth2.0 首先我们通过一张图片来了解一下OAuth2.0的运作模式: 从上图我们可以看到,整个过程进行了2次"握手",最终利用授权的AccessToken进行一系列的请求,相关的过程说明如下: A:由客户端向服务器发出验证请求,请求中一般会携带这些参数 ID标识,例如appId 验证后跳转到的URL(redirectUrl) 状态参数

Java Script基础(十二) 正则表达式

Java Script基础(十二) 正则表达式 一.正则表达式中常用的符号 虽然可以使用string函数来完成验证,但是这种验证方式不够严谨,而且编写比较麻烦.而正则表达式是一种描述字符模式的对象,由一些特殊的符号组成,其组成的字母模式用来匹配各种表达式.下表中列举出常用的符号和用法. 正则表达式中常用的符号和用法 符号 描述  /....../  代表一个模式的开始和结束.  ^  匹配字符串的开始   $  匹配字符串的结束  \s  任何空白字符   \S  任何非空白字符   \d  匹

微信html5六人九人十二人牛牛斗牛斗公牛棋牌架设解析H5文件方法

解析H5文件方法 每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js.index.wxml.index.wxss.index.json..js后缀的文件是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件,.wxml后缀的文件是页面结构文件. 上面的意思就已经很清楚了.翻译过来就是: 微信html5六人九人十二人牛牛(h5.ttkmwl.com)斗牛斗公牛棋牌架设解析H5文件方法 .js就是javascript .wxss相当于css .wxml相

Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用

Hyperledger Fabric 1.0 从零开始(十)--智能合约 Hyperledger Fabric 1.0 从零开始(十一)--CouchDB 上述两章,最近网上各路大神文章云集,方案多多,因为最近工作太忙太忙,我暂时就先不赘述了,后续会提供我参考过的大神文章链接出来. 这章先捡大家都比较在意的java sdk应用方案贴出来,很多朋友都找我要过,我主要是把注释都写进去了,用法简单了说了下,一般情况下会java开发的都能看懂. 年前实在太忙. JAVA-SDK 9.1.基本介绍 官方在

java基础知识十二

第十二章 异常 异常(Exception):又称为例外,是程序在运行过程中发生的非正常事件,其发生会影响程序的正常执行.Exception是程序级错误,可由程序本身处理:Error是系统级错误,程序可不用处理.Java异常类都必须继承Throwable类或其子类.用户通过继承自定义异常.常见异常:除数为零.负数开方.数组越界.I/O异常. 抛出的异常由catch捕获,未被捕获的异常逐层传播直到main.如果main也没有处理该异常,则操作系统会终止main执行. 处理异常时,也可以抛出新异常,也

JavaSE基础笔记十二

第十一章 多线程 理解程序.进程.线程的概念 程序可以理解为静态的代码. 进程可以理解为执行中的程序. 线程可以理解为进程的近一步细分,程序的一条执行路径. 2.如何创建java程序的进程(重点) 方式一:继承于Thread类 ①创建一个继承于Thread的子类 ②重写Thread类的run()方法,方法内实现此子线程要完成的功能 ③创建一个子类的对象 ④调用线程的start():启动此线程,调用相应的run()方法 ⑤一个线程只能够执行一次start 方式二:实现Runnable接口 ①创建一

用一个标题引爆微信传播:0基础+超实用,值得一看

作为一个从没做过编辑的小白,当如愿谋得微信公众号编辑这样一份工作时,我完全没意识到这简直是自虐的开始: 每天磕完选题磕标题,磕完标题磕配图,磕完配图磕排版,磕完排版磕细节--然后发现又出错了,后台有哥们留言:第3段第4行有个错字儿-- 这样的日子重复了三个月,进步的速度总赶不上新问题出现的速度,只能不断复盘总结经验,让自己跑得更快一些,免得被小伙伴甩得太远.所以,才有了这篇文章. 这既是对过去3个月的一次梳理,也是对想做编辑的小伙伴一种提醒:入行需谨慎! 但如果你真不怕做编辑又苦逼.又磨人.又可

[视频解说]0基础课程-运营商-Java它J2se

本节解说 运营商应用 Java 算被分成: 算术运算符 颂值运营商 逻辑运算符 位运算符 元运算符 这里录制了 视频解说这几大类运算符,并有练习题提供大家 面试题: 1. 最有效率的方式算出2乘以8等于几? 2. 对两个整数变量的值进行互换(不须要第三方变量) 答案在官网论坛 - 第三课课后习题贴中 www.xiaozhangwx.com 视频地址: http://v.youku.com/v_show/id_XODEyNTkzMTI0.html ======================= 该

python基础(十二)

一. Mysql的介绍 1.1. 数据库介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大量数据量.所谓的关系型数据库,是建立的关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据. RDBMS即关系数据库管理系统的特点: 1.数据以表格