微信公众号提供了一个音频接口,可以进行录音、上传、下载、识别等操作。
实现起来也比较简单,跟着文档来就行了。下面的把音频的功能放到了一个文件 里面,直接用即可:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="/static/weui/css/weui.css"/> <link rel="stylesheet" href="/static/weui/css/weuix.css"/> <title>在线录音</title> </head> <body> <div id="status" style="color: red;text-align: center">请操作</div> <input class="weui-btn weui-btn_default" id="start" type="button" value="录音" /> <input class="weui-btn weui-btn_default" id="stop" type="button" value="停止录制" /> <br> <input class="weui-btn weui-btn_default" id="play" type="button" value="播放" /> <input class="weui-btn weui-btn_default" id="pause" type="button" value="暂停播放" /> <input class="weui-btn weui-btn_default" id="stopPlay" type="button" value="停止播放" /> <br> <input class="weui-btn weui-btn_default" id="translate" type="button" value="识别" /> <br> <input class="weui-btn weui-btn_default" id="upload" type="button" value="上传" /> <input class="weui-btn weui-btn_default" id="download" type="button" value="下载" /> <script type="text/javascript" src="/static/js/jquery2.0.min.js"></script> <script type="text/javascript" src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script> <!--<script type="text/javascript" src="/static/weui/js/vconsole.min.js"></script>--> </body> <script> wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '{$jsApiConfig.appid}', // 必填,公众号的唯一标识 timestamp: '{$jsApiConfig.timestamp}', // 必填,生成签名的时间戳 nonceStr: '{$jsApiConfig.noncestr}', // 必填,生成签名的随机串 signature: '{$jsApiConfig.signature}',// 必填,签名 jsApiList: [ 'startRecord', 'playVoice', 'stopRecord', 'stopVoice', 'pauseVoice', 'onVoicePlayEnd', 'onVoiceRecordEnd', 'uploadVoice', 'downloadVoice', 'translateVoice', ] // 必填,需要使用的JS接口列表 }); var localId; var serverId; var timer; wx.ready(function () { //需在用户可能点击分享按钮前就先调用 //监听语音播放完毕接口 wx.onVoicePlayEnd({ success: function (res) { localId = res.localId; // 返回音频的本地ID $("#status").html('录音完毕') if (timer){ clearInterval(timer) } } }); wx.onVoiceRecordEnd({ // 录音时间超过一分钟没有停止的时候会执行 complete 回调 complete: function (res) { localId = res.localId; $("#status").html('录音时间已达上限'); if (timer){ clearInterval(timer) } } }); $("#start").click(function () { wx.startRecord(); var i=1; timer = setInterval(function(){ $("#status").html('已录制'+i+'秒,还可以录制'+(60-i)+'秒'); i++; if (i===60){ clearInterval(timer); } }, 1000) }); $("#stop").click(function () { if (timer){ clearInterval(timer) } wx.stopRecord({ success: function (res) { localId = res.localId; $("#status").html('录音已停止') console.log(res) } }); }); $("#play").click(function () { $("#status").html('录音播放中'); wx.playVoice({ localId: localId }); }); $("#stopPlay").click(function () { $("#status").html('录音已停止播放') wx.stopVoice({ localId: localId // 需要停止的音频的本地ID,由stopRecord接口获得 }); }); $("#pause").click(function () { $("#status").html('录音播放已暂停') wx.pauseVoice({ localId: localId // 需要暂停的音频的本地ID,由stopRecord接口获得 }); }); $("#download").click(function () { wx.downloadVoice({ serverId: serverId, // 需要下载的音频的服务器端ID,由uploadVoice接口获得 isShowProgressTips: 1, // 默认为1,显示进度提示 success: function (res) { localId = res.localId; // 返回音频的本地ID console.log('下载',res); } }); }); //翻译 $("#translate").click(function () { $("#status").html('语音识别中....') wx.translateVoice({ localId: localId, // 需要识别的音频的本地Id,由录音相关接口获得 isShowProgressTips: 1, // 默认为1,显示进度提示 success: function (res) { $("#status").html('识别结果:'+res.translateResult) //alert(res.translateResult); // 语音识别的结果 } }); }); ////上传语音有效期3天,可用微信多媒体接口下载语音到自己的服务器,此处获得的 serverId 即 media_id,参考文档 .目前多媒体文件下载接口的频率限制为10000次/天,如需要调高频率,请登录微信公众平台,在开发 - 接口权限的列表中,申请提高临时上限。 $("#upload").click(function () { wx.uploadVoice({ localId: localId, // 需要上传的音频的本地ID,由stopRecord接口获得 isShowProgressTips: 1, // 默认为1,显示进度提示 success: function (res) { serverId = res.serverId; // 返回音频的服务器端ID console.log('上传',res) $("#status").html('录音上传中...') $.ajax({ url:"{:url('get_file')}", data:{ serverId:serverId }, dataType:'json', success:function (res) { $("#test").attr('scr',res.file.url) console.log('up',res) $("#status").html('上传操作完成,可以继续新的录音') } }) } }); }); }); </script> </html>
效果如下(未做css修饰):