这一章我们讲一下微信的语音识别处理功能,微信公众账号通过微信认证后可以获得语音识别接口,开启语音识别功能以后,用户每次发送语音给微信账号时,微信会在推送的语音消息 XML 数据包中,增加一个 Recognition
字段,该字段为语音识别出的文本内容。下面是开启语音识别后的 XML 数据包示例:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>2357291913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<Recognition><![CDATA[腾讯微信团队]]></Recognition>
<MsgId>Msg Id</MsgId>
</xml>
解释 XML 格式如下:
接下来我们把声音类型消息的处理代码添加到 doPost
方法里:
else if(msgType.equals('voice'))
{
rtnMsg = handleVoice(receiveMsg);
}
这里我们识别消息类型为 voice
类型,在这个 if 语句中调用了 handleVoice
方法并传递 ReceiveMsg
对象来处理声音,handleVoice
方法代码如下:
private static String handleVoice(ReceiveMsg msg)
{
String result = '您说了: ' + msg.recognition;
return composeTextReply(msg, result);
}
代码读取了腾讯平台识别后传递过来的 XML 内容,其中 Recognition
节点的内容是语音转化后的文本内容。保存代码后尝试发送语音给微信测试账号,测试了两条语音,结果并没有得到语音内容。之后在公众测试账号的体验接口权限表中发现 接收语音识别结果
接口并未开启,如下图所示:
开启后再次测试,显示内容如下:
注:由于客户端缓存,开发者开启或者关闭语音识别功能,对新关注者立刻生效,对已关注用户需要24小时生效。开发者可以重新关注此帐号进行测试。