6.1.2 如何获取语音消息

在公众账号后台的CoreService类中,可以像下面这样获取到语音消息的MediaId、Format、Recongnition等参数。

  1. // 消息类型
  2. String msgType = requestMap.get("MsgType");
  3. // 判断消息类型是否为voice
  4. if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {
  5. // 语音消息文件的标识
  6. String mediaId = requestMap.get("MediaId");
  7. // 语音格式:amr
  8. String format = requestMap.get("Format");
  9. // 语音识别结果
  10. String recognition = requestMap.get("Recognition");
  11. // TODO 处理用户请求
  12. }

说明 由于微信客户端缓存的原因,开发者开启或者关闭语音识别功能,对新关注用户会立刻生效,而对已关注用户则需要24小时之后才能生效。开发者可以通过重新关注公众账号的方法进行测试。


在某些特殊情况下,微信提供的语音识别功能并不能满足要求,例如,用户使用方言、少数民族语言或外语。遇到类似情况时,就只能调用下载多媒体文件接口将语音文件下载到本地,然后通过自主研发的语音识别引擎或者第三方(Google、讯飞、云知声等)语音识别引擎来实现。