最近在做一个微信项目,接触到了微信公众平台。通过公众平台可以很方便的搭建一个功能完善的移动应用。昨天发现:开发者可使用手机号来申请接口测试帐号,体验高级接口。

这篇文章的应用将使用到高级接口中的语音识别,以及音乐回复接口。通过这两个接口,让大家体验一下语音点歌的魅力。

   这个应用简单的来说:就是你向微信公众平台报一首歌名,微信公众平台返回这首歌曲给你听。本文将一步一步教你如何实现这个看似复杂的移动应用。

  下面是我申请的测试账号的二维码,大家可以关注一下测试一下效果,不过测试账号的有效期只有一年,最多只能有20个关注者。

另外一个是我个人的订阅号,有更多的功能,没有人数限制,但是不能识别语音。说了这么多,不如自己动动手吧。

首先申请测试账号和百度的bae云平台:

微信公众平台测试账号具体见:https://mp.weixin.qq.com/cgi-bin/readtemplate?t=news/note-20131202_tmpl&lang=zh_CN

百度bae见:http://developer.baidu.com/bae/

相关配置:

申请完成之后,进行相关的配置:

1、在bae上创建应用并申请域名

2、下载公众平台的php演示代码,并上传到bae上

3、调整php代码,并配置接口

然后准备一下音乐的api:

在网上找到了百度的一个私有的音乐api。具体见:

http://blog.csdn.net/leixiaohua1020/article/details/12927707

接着开始编码:

1、我们先了解一下用到的微信语音识别接口

我们将语音发送给微信服务器,微信服务器会将语音转换成文字。我们拿到文字之后调用音乐api获取音乐,然后通过微信的被动回复中的回复音乐消息将音乐返回给客户端。

代码如下:(此代码可以直接上传到你的百度bae平台,只需要修改token就可以了)

<?phpdefine("TOKEN", "yourtoken");$wechatObj = new wechatCallbackapiTest();// $wechatObj->valid();$wechatObj->responseMsg();class wechatCallbackapiTest{public function valid(){$echoStr = $_GET["echostr"];//valid signature , optionif($this->checkSignature()){echo $echoStr;exit;}}public function responseMsg(){//获取post数据$postStr =    $GLOBALS["HTTP_RAW_POST_DATA"];//解析post数据if (!empty($postStr)){$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$type= $postObj->MsgType;switch($type){case "voice";$resultStr=  $this->getMusicContent($postObj);   echo   $resultStr;exit;  break;}}}private function checkSignature(){$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];    $token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature ){return true;}else{return false;}}public  function getMusicContent($postObj){        $ret=   "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[music]]></MsgType><Music><Title><![CDATA[%s]]></Title><Description><![CDATA[]]></Description><MusicUrl><![CDATA[%s]]></MusicUrl><HQMusicUrl><![CDATA[%s]]></HQMusicUrl><FuncFlag><![CDATA[1]]></FuncFlag></Music>    </xml>";$recognition=$postObj->Recognition;  $keywordc= urlencode($recognition); $musicapi =  "http://box.zhangmen.baidu.com/x?op=12&count=1&title={$keywordc}\$\$";  $simstr=file_get_contents($musicapi);$musicobj=simplexml_load_string($simstr);$i=0;$musicurl;foreach($musicobj->url as $itemobj){$encode = $itemobj->encode;//处理decode ,发现微信在处理音乐的时候有个问题,所以这里删除一个参数$decode = $itemobj->decode;   $removedecode = end(explode('&', $decode));if($removedecode<>""){$removedecode="&".$removedecode;    }$decode = str_replace($removedecode,"", $decode);$musicurl= str_replace(end(explode('/', $encode))   ,$decode,$encode);break;}$resultStr = sprintf($ret, $postObj->FromUserName, $postObj->ToUserName,time(), $recognition,$musicurl,$musicurl);return $resultStr;}     }?>

总结:微信的语音识别非常的强大,我的普通话,不算标准,但是每次都能识别出来,另外百度音乐api的音乐应有尽有。

从上面描述可以看到,我只是简单的配置和写了几句简单的php代码,就实现了一个复杂的语音点歌系统。

体验:

另外,欢迎大家关注一下我的个人订阅号:

十分钟教你打造一个微信语音点歌系统相关推荐

  1. 打造一个微信语音点歌系统

    最近在做一个微信项目,接触到了微信公众平台.通过公众平台可以很方便的搭建一个功能完善的移动应用.昨天发现:开发者可使用手机号来申请接口测试帐号,体验高级接口. 这篇文章的应用将使用到高级接口中的语音识 ...

  2. 做一个微信语音点播系统

    最近在做一个微信项目,接触到了微信公众平台.通过公众平台可以很方便的搭建一个功能完善的移动应用.昨天发现:开发者可使用手机号来申请接口测试帐号,体验高级接口. 这篇文章的应用将使用到高级接口中的语音识 ...

  3. 十分钟教你搭建一个漂亮的博客(二--主题的修改)

    总体效果 框架的选择(butterfly) 前面我们搭建的博客,可以看见非常的单调,那如果我们想要让他变得漂亮,自然我们是不会自己去写代码的,我们通过网上比较成熟的框架,通过修改配置文件便可以得到漂亮 ...

  4. 十分钟教你部署一个属于自己的chatgpt网站

  5. 手把手教你打造一个可视化接口自动化测试系统

    现如今,接口开发几乎成为一个互联网公司的标配了,无论是web还是app,哪怕是小程序,都离不开接口作为支撑,当然,这里的接口范围很广,从http到websocket,再到rpc,只要能实现数据通信的都 ...

  6. python批量删缩进_鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频?...

    鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频? 前言 半个月前,后台有个小伙伴问我,如何将视频中的音频提取出来,并且将声音转成文字写入到 word 中,正好接下来的 ...

  7. 十分钟带你打造unity3d第一人称射击

    那抱歉,上次那个Unity+kinect还没有更新,最近在深一步研究,不久将更新(绝对不负众望)!现在进入正题,十分钟带你打造unity3D第一人称射击游戏! 看完本篇博客,你将学会第一人称控制,粒子 ...

  8. 十分钟教你开发EOS智能合约

    十分钟教你开发EOS智能合约 在CSDN.柏链道捷(PDJ Education).HelloEOS.中关村区块链产业联盟主办的「EOS入门及最新技术解读」专场沙龙上,柏链道捷(PDJ Educatio ...

  9. python黑科技:Python大佬用20行代码带你打造一个微信聊天机器人,真神了~

    如何用20行Python代码打造一个微信群聊助手? 1.安装python环境 2.安装python的itchat库 3.安装itchat库 4.Linux 5.申请图灵机器人API和key 6.编写p ...

最新文章

  1. 如何限制上传服务器的文件容量,如何通过配置php文件限制上传文件的大小
  2. nanopore测序第12期培训班(含新冠病毒分析)开始报名
  3. qt 串口粘包_Qt Socket 传输图片——图像拆包、组包、粘包处理
  4. go语言笔记——包的概念本质上和java是一样的,通过大小写来区分private,fmt的Printf不就是嘛!...
  5. MATLAB实战系列(二十六)-matlab通过遗传算法求解车间调度问题
  6. Java 异常处理的误区和经验总结
  7. 联想T430i安装Win7
  8. C++实现拓扑排序(vector模拟邻接表存储,栈实现)
  9. jQuery滑盖式自定义radio选择框按钮 jTumbler - Beautiful, Slider-Style Selection Boxes
  10. Linux下的“句柄”(文件句柄,窗口句柄)
  11. SQLAlchemy Transactions
  12. jQuery 停止动画
  13. TV直播app TV版 超级直播 空壳 可玩性强 带EPG 带回看 带自定义 定制可带自定义协议等
  14. R语言数据分析报告 鲍鱼年龄预测
  15. 小朋友排队问题(树状数组)
  16. 解决现行m8u3格式的视频下载问题
  17. RocketMQ Web控制台监控界面介绍+部署
  18. NTLite 1 2 0 4453授权注册版
  19. Mac数据恢复首选easyrecovery
  20. 无线蓝牙耳机哪个牌子的好?无线耳机排行榜前十名!

热门文章

  1. 硕、博士论文致谢词产生器
  2. 那些“认怂”的中年人,才是真强大
  3. 去除Oracle数据库中字段的回车换行
  4. Unity3D编辑器的5大视图
  5. Java设计模式:23种设计模式全面解析,墙都不扶就服你
  6. 23种设计模式汇总整理
  7. 华为od机考题目-分苹果
  8. 美国大学研究生院计算机专业排名,美国大学研究生院计算机工程专业排名真得细心的去考察...
  9. 【宁波中软实习】Day2:JDBC的增删改查
  10. InfoGAN论文理解及复现