微信公众平台消息接口开发(40)语音识别

来源:互联网 发布:知已知彼百战不殆意思 编辑:程序博客网 时间:2024/04/29 04:53

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

 

微信公众平台开发 语音识别 
作者:方倍工作室 
地址: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     语音为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) 副词

 

根据词性及词名称,我们进入天气查询模块查询深圳这个地点的天气,很准确的回复用户想要的结果。这样一个智能的语音识别产品就出来了。

 

 

0 0