十分钟教你打造一个微信语音点歌系统
最近在做一个微信项目,接触到了微信公众平台。通过公众平台可以很方便的搭建一个功能完善的移动应用。昨天发现:开发者可使用手机号来申请接口测试帐号,体验高级接口。
这篇文章的应用将使用到高级接口中的语音识别,以及音乐回复接口。通过这两个接口,让大家体验一下语音点歌的魅力。
这个应用简单的来说:就是你向微信公众平台报一首歌名,微信公众平台返回这首歌曲给你听。本文将一步一步教你如何实现这个看似复杂的移动应用。
下面是我申请的测试账号的二维码,大家可以关注一下测试一下效果,不过测试账号的有效期只有一年,最多只能有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代码,就实现了一个复杂的语音点歌系统。
体验:
另外,欢迎大家关注一下我的个人订阅号:
十分钟教你打造一个微信语音点歌系统相关推荐
- 打造一个微信语音点歌系统
最近在做一个微信项目,接触到了微信公众平台.通过公众平台可以很方便的搭建一个功能完善的移动应用.昨天发现:开发者可使用手机号来申请接口测试帐号,体验高级接口. 这篇文章的应用将使用到高级接口中的语音识 ...
- 做一个微信语音点播系统
最近在做一个微信项目,接触到了微信公众平台.通过公众平台可以很方便的搭建一个功能完善的移动应用.昨天发现:开发者可使用手机号来申请接口测试帐号,体验高级接口. 这篇文章的应用将使用到高级接口中的语音识 ...
- 十分钟教你搭建一个漂亮的博客(二--主题的修改)
总体效果 框架的选择(butterfly) 前面我们搭建的博客,可以看见非常的单调,那如果我们想要让他变得漂亮,自然我们是不会自己去写代码的,我们通过网上比较成熟的框架,通过修改配置文件便可以得到漂亮 ...
- 十分钟教你部署一个属于自己的chatgpt网站
- 手把手教你打造一个可视化接口自动化测试系统
现如今,接口开发几乎成为一个互联网公司的标配了,无论是web还是app,哪怕是小程序,都离不开接口作为支撑,当然,这里的接口范围很广,从http到websocket,再到rpc,只要能实现数据通信的都 ...
- python批量删缩进_鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频?...
鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频? 前言 半个月前,后台有个小伙伴问我,如何将视频中的音频提取出来,并且将声音转成文字写入到 word 中,正好接下来的 ...
- 十分钟带你打造unity3d第一人称射击
那抱歉,上次那个Unity+kinect还没有更新,最近在深一步研究,不久将更新(绝对不负众望)!现在进入正题,十分钟带你打造unity3D第一人称射击游戏! 看完本篇博客,你将学会第一人称控制,粒子 ...
- 十分钟教你开发EOS智能合约
十分钟教你开发EOS智能合约 在CSDN.柏链道捷(PDJ Education).HelloEOS.中关村区块链产业联盟主办的「EOS入门及最新技术解读」专场沙龙上,柏链道捷(PDJ Educatio ...
- python黑科技:Python大佬用20行代码带你打造一个微信聊天机器人,真神了~
如何用20行Python代码打造一个微信群聊助手? 1.安装python环境 2.安装python的itchat库 3.安装itchat库 4.Linux 5.申请图灵机器人API和key 6.编写p ...
最新文章
- 如何限制上传服务器的文件容量,如何通过配置php文件限制上传文件的大小
- nanopore测序第12期培训班(含新冠病毒分析)开始报名
- qt 串口粘包_Qt Socket 传输图片——图像拆包、组包、粘包处理
- go语言笔记——包的概念本质上和java是一样的,通过大小写来区分private,fmt的Printf不就是嘛!...
- MATLAB实战系列(二十六)-matlab通过遗传算法求解车间调度问题
- Java 异常处理的误区和经验总结
- 联想T430i安装Win7
- C++实现拓扑排序(vector模拟邻接表存储,栈实现)
- jQuery滑盖式自定义radio选择框按钮 jTumbler - Beautiful, Slider-Style Selection Boxes
- Linux下的“句柄”(文件句柄,窗口句柄)
- SQLAlchemy Transactions
- jQuery 停止动画
- TV直播app TV版 超级直播 空壳 可玩性强 带EPG 带回看 带自定义 定制可带自定义协议等
- R语言数据分析报告 鲍鱼年龄预测
- 小朋友排队问题(树状数组)
- 解决现行m8u3格式的视频下载问题
- RocketMQ Web控制台监控界面介绍+部署
- NTLite 1 2 0 4453授权注册版
- Mac数据恢复首选easyrecovery
- 无线蓝牙耳机哪个牌子的好?无线耳机排行榜前十名!