微信公众平台消息接口开发(40)语音识别
微信公众平台开发模式 微信 语音识别 公众平台 消息接口 语音识别
微信公众平台开发 语音识别
作者:方倍工作室
地址:http://www.cnblogs.com/txw1958/archive/2013/02/06/weixin-if40-voice-recognition.html
一、申请微信认证
微信认证后将自动开通高级接口,获得高级接口中所有接口权限,无需二次申请。
高级接口含有获取用户基本信息、客服接口、语音识别等高级接口权限。
二、获取语音识别结果
开通语音识别功能,且该功能设置处于开启状态的公众帐号,用户每次发送语音给公众号时,微信会在推送的语音消息XML数据包中,增加一个Recongnition字段。
开启语音识别后的语音XML数据包如下:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1357290913</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <Format><![CDATA[Format]]></Format> <Recognition><![CDATA[深圳天气怎么样]]></Recognition> <MsgId>1234567890123456</MsgId> </xml>
参数说明: 参数 描述 ToUserName 开发者微信号 FromUserName 发送方帐号(一个OpenID) CreateTime 消息创建时间 (整型) MsgType 语音为voice MediaID 语音消息媒体id,可以调用多媒体文件下载接口拉取该媒体 Format 语音格式:amr Recognition 语音识别结果,UTF8编码 MsgID 消息id,64位整型
三、使用中文分词提取关键特征
中文分词 (Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多、困难的多。通过分词可以提取其中关键词语进行搜索。
打个比方:
例如,识别结果为”深圳天气怎么样”,可分词为”深圳”,”怎么样”,三个词。我们提取出“天气”作为名词,“深圳”作为地点名词,
以下是SAE上的分词代码示例:
<?php $str = "深圳天气怎么样"; $seg = new SaeSegment(); $ret = $seg->segment($str, 1); print_r($ret); //输出 if ($ret === false) var_dump($seg->errno(), $seg->errmsg()); ?>
识别结果如下:
Array ( [0] => Array ( [word] => 深圳 [word_tag] => 102 [index] => 0 ) [1] => Array ( [word] => 天气 [word_tag] => 95 [index] => 1 ) [2] => Array ( [word] => 怎么样 [word_tag] => 40 [index] => 2 ) )
//词性对应关系 POSTAG_ID_N = 95 (line 322) 名词 POSTAG_ID_NS_Z = 102 (line 357) 地名(名处词专指:“中国”) POSTAG_ID_D = 40 (line 207) 副词
三、程序实现
判断是否开启语音识别
private function receiveVoice($object) { if (isset($object->Recognition) && !empty($object->Recognition)){ $contentStr = "你发送的是语音,内容为:".$object->Recognition; }else{ $contentStr = "未开启语音识别功能或者识别内容为空"; } if (is_array($contentStr)){ $resultStr = $this->transmitNews($object, $contentStr); }else{ $resultStr = $this->transmitText($object, $contentStr); } return $resultStr; }
效果如下:
调用SAE分词
var_dump(segment("明天长沙天气怎么样")); function segment($str) { $seg = new SaeSegment(); $ret = $seg->segment($str, 1); if ($ret === false){ return; } $category = ""; $keyword = ""; foreach ($ret as $key => $value) { if ($value["word_tag"] == 95){ $category = $value["word"]; } if ($value["word_tag"] == 102){ $keyword = $value["word"]; } } if (!empty($category) && !empty($keyword)){ return array('category'=>$category, 'keyword'=>$keyword); }else{ return; } }
返回结果如下:
array(2) { ["category"]=>string(6) "天气" ["keyword"]=>string(6) "长沙" }
这样就获知晓了用户要查询的功能是天气,城市名称是长沙。
功能查询
根据获得的功能类别及关键字,我们可以查询相应的城市天气预报。
include("segment.php"); $result = sinasegment($content); if (is_array($result)){ switch ($result['category']) { case "天气": $url = "http://api100.duapp.com/weather/?appkey=trialuser&city=".urlencode($result['keyword']); $output = file_get_contents($url); $contentStr = json_decode($output, true); break; case "空气": $url = "http://api100.duapp.com/airquality/?appkey=trialuser&city=".urlencode($result['keyword']); $output = file_get_contents($url); $contentStr = json_decode($output, true); break; default: $contentStr = "还不支持这一功能:".$result['category']; break; } }else{ $contentStr = "不能理解你的内容:".$content; }
四、效果演示

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
微信公众平台消息接口开发(20)图片识别之人脸识别
微信公众平台开发模式微信 公众平台 图片识别 人脸识别 作者:方倍工作室[QQ:1354386063]原文:http://www.cnblogs.com/txw1958/archive/2013/02/05/weixin-if20-face-recognition.html 一、前言 前几个小应用似乎不给力,反应不冷不热,似乎大家不感兴趣,今天给大家推出一个亮眼一点的:微信公众平台上的人脸识别。 前段时间看到网上有个报道 四川大学计算机科学系主任、副教授 魏骁勇 开发了 基于图像的课堂考勤系统,上课点名用人脸识别来‘刷脸’,看下图 在点名时,只需多角度对教室内的学生分区域拍照,然后将照片上传到服务器,自动拼接成一张整图,系统再对照片里的学生头像自动编号和识别,最后出现学生的个人信息,旁边则有“It’sme(是我)”和“notme(不是我)”两个选项。这样马上就能知道谁在上课、谁在逃课了 更神的是,这东西在统计学上的意义:它甚至可以分析出学生的人际关系甚至性格兴趣,比如它根据学生在课堂上喜欢坐在哪些位置,喜欢坐在谁的旁边,得出原始数据,经过一段时间之后,再来分析,就可以谁和谁在谈恋爱,...
- 下一篇
微信公众平台消息接口开发(23)图片识别之男人味/女人味指数
微信 图片识别 人脸识别男人味 女人味微信公众平台消息接口 微信开发模式 作者:http://www.cnblogs.com/txw1958/标题:http://www.cnblogs.com/txw1958/archive/2013/02/28/weixin-if23-man-woman.html 家有儿女 测试结果 某航空姐测试结果 --------------------------------------------------------------------------------------------------------------------------- 关注天气神(账号WeatherGod)方法: 1. 依次进入以下路径:朋友们—>添加朋友—>搜号码,输入WeatherGod,不区分大小写,点击查找,然后点击关注。 2. 扫描二维码:
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS关闭SELinux安全模块
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群