微信公众平台消息接口开发(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;
}

 

 

四、效果演示

 

 

时间: 2024-09-22 22:32:14

微信公众平台消息接口开发(40)语音识别的相关文章

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

微信公众平台消息接口开发 微信公众平台开发模式 语音识别 天气预报 天气神 方倍工作室 作者:http://www.cnblogs.com/txw1958/  本系统教程以微信公众平台应用天气神(账号WeatherGod,支持国内近400个城市天气的名称.拼音.区号.邮编以及语音触发模式查询)为例,讲解微信接口开发过程.欢迎大家关注该账号并使用语音方式查询当地天气,二维码见底部.   一.通过输入文字的方式查询天气一般都是通过城市名称.拼音.区号等方式实现的查询,基本上都是搜索数据库,获得对应的

微信公众平台消息接口开发(7)快递查询

微信公众平台消息接口 微信公众平台开发 微信公众平台开发模式  快递查询 作者:方倍工作室原文:http://www.cnblogs.com/txw1958/archive/2013/03/12/weixin-if7-express.html   一.请求数据 快递100提供快递查询接口.  通过向指定的地址发送请求,即可返回如JSON.XML等格式的跟综结果 3.请求地址 http://api.kuaidi100.com/api?id=[]&com=[]&nu=[]&valico

微信公众平台消息接口开发(24)图片识别之人脸识别API

微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 图片识别 人脸识别 API 作者:方倍工作室  原文:http://www.cnblogs.com/txw1958/archive/2013/03/13/weixin-if24-face-recognize-api.html   一.微信图片获取 首先要获得用户发过来的图片,微信公众平台支持接收图片,一条图片消息的格式如下: <xml> <ToUserName><![CDATA[gh_13d1a3a7

微信公众平台消息接口开发(34)微信墙之表白墙/婚礼墙/晚会墙/会议墙/晒单墙/照片墙/历史墙

微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 微信墙 婚礼墙/晚会墙/会议墙/晒单墙/照片墙/历史墙 历史上的今天作者:方倍工作室  原文: http://www.cnblogs.com/txw1958/archive/2013/06/08/weixin-if34-wall.html    微信上墙是利用微信公众平台,让观众将希望互动的内容通过手机发送给相关平台账号,进而由工作人员从后台筛选/或不筛选上墙的一种方式.只要像和朋友聊天一样,将你想要表达的内容发给对方,

微信公众平台消息接口开发(32)空气质量指数查询

原文:微信公众平台消息接口开发(32)空气质量指数查询 微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 空气质量指数 PM2.5 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archive/2013/05/30/weixin-if32-air-quality.html   一.获取原版数据 在中国环境监测总站http://www.cnemc.cn/ 可以找到全国城市空气质量实时发布平台,其地址为 http://113.108.142.147:

微信公众平台消息接口开发-封装weixin.class.php

原文:微信公众平台消息接口开发-封装weixin.class.php 一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理. 我们就考虑在这个基础上做一次封装,weixin.class.php,代码如下: <?php class Weixin {     public $token = '';//token     public $debug =  false;//是否debug的状态标示,方便我们在调试的时候记录一

微信公众平台消息接口开发教程 附封装工具实例(1/3)

微信公众平台消息接口 要接收微信平台发送的消息,我们需要先熟悉微信公众平台API中消息接口部分,点此进入,点击后将进入到消息接口指南部分,如下图所示: 开发教程 附封装工具实例(1/3)-js封装组件实例"> 在上图左侧可以看到微信公众平台目前开放的接口有三种:消息接口.通用接口和自定义菜单接口.通用接口和自定义菜单接口只有拿到内测资格才能调用,而内测资格的申请也已经关闭了,我们只有期待将来某一天微信会对大众用户开放吧,所以没有内测资格的用户就不要再浪费时间在这两个接口上,只需要用好消息接

微信公众平台消息接口开发(50)在线点歌/在线音乐

微信 在线听歌 在线点歌 在线点播 音乐API 公众平台 微信公众平台消息接口 微信开发模式  作者:http://www.cnblogs.com/txw1958/ 原文:http://www.cnblogs.com/txw1958/archive/2013/02/25/weixin-if50-music.html 微信公众平台在年前开放了新的消息接口-音乐消息,这是广大微信公众平台开发者的福音.根据这一功能,如果能做出在微信中点歌功能,那么我们以后就可以不用安装其他APP,直接在微信里面关注一

微信公众平台消息接口开发(13)多语种互译

微信公众平台消息接口 微信公众平台API 微信开发模式 多语种翻译 多语言互译 Microsoft Translator 方倍工作室     Paraphrase API   10 out of 11 rated this helpful - Rate this topic   The Paraphrase API is an English-to-English machine translation system that rephrases English sentences in Eng

微信公众平台消息接口开发(12)消息接口Bug

微信公众平台开发模式 微信公众平台消息接口 微信公众平台API 微信开发模式 Bug 方倍工作室 原文:http://www.cnblogs.com/txw1958/archive/2013/03/16/weixin-if12-bug.html     自己看吧,不做说明了.