失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微信公众平台开发模式 微信 语音识别 公众平台 消息接口 语音识别

微信公众平台开发模式 微信 语音识别 公众平台 消息接口 语音识别

时间:2023-07-12 01:19:20

相关推荐

微信公众平台开发模式 微信 语音识别 公众平台 消息接口 语音识别

一、申请微信认证

微信认证后将自动开通高级接口,获得高级接口中所有接口权限,无需二次申请。

高级接口含有获取用户基本信息、客服接口、语音识别等高级接口权限。

二、获取语音识别结果

开通语音识别功能,且该功能设置处于开启状态的公众帐号,用户每次发送语音给公众号时,微信会在推送的语音消息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语音为voiceMediaID语音消息媒体id,可以调用多媒体文件下载接口拉取该媒体Format语音格式:amrRecognition语音识别结果,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 = "/weather/?appkey=trialuser&city=".urlencode($result['keyword']);$output = file_get_contents($url);$contentStr = json_decode($output, true);break;case "空气":$url = "/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;}

四、效果演示

如果觉得《微信公众平台开发模式 微信 语音识别 公众平台 消息接口 语音识别》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。