js语音播报
其实这篇主要分享的重点不在于语音播报,因为它就一个公开接口
如果只是需要语音播报一下
function play(){ var text = 播报; var ttsDiv = document.getElementById('bdtts_div_id'); var au1 = '<audio id="tts_autio_id" autoplay="autoplay">'; var sss = '<source id="tts_source_id" src="http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=5&text='+text+'" type="audio/mpeg">'; var eee = '<embed id="tts_embed_id" height="0" width="0" src="">'; var au2 = '</audio>'; ttsDiv.innerHTML = au1 + sss + eee + au2; }
其中 lan 语言,用zh ie为编码格式 spd为速度传1-9 数字越大越快 text为你要播报的内容
今天分享的重点在于 连续播报
显然 直接for循环是不行的
如我这次要做的
接到的是两个数组
[1,2,3,4,5]
[3,5,2,8,4]
这是直接在列表中获取到的,并且他是一一对应的
比如,1号位3件商品
so
有了以下操作
var basketCodes = [1,2,3,4,5]; var planAmounts = [3,5,2,8,4]; var rstArr = []; for (var i = 0; i < basketCodes.length; i++){ var rst = {}; rst[basketCodes[i]] = planAmounts[i]; rstArr.push(rst) } var i=0; var timeTag=null; function doPlay(){ function play(){ var key = Object.keys(rstArr[i]); var text = key+"号位"+rstArr[i][key]+"件商品"; var ttsDiv = document.getElementById('bdtts_div_id'); var au1 = '<audio id="tts_autio_id" autoplay="autoplay">'; var sss = '<source id="tts_source_id" src="http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=5&text='+text+'" type="audio/mpeg">'; var eee = '<embed id="tts_embed_id" height="0" width="0" src="">'; var au2 = '</audio>'; ttsDiv.innerHTML = au1 + sss + eee + au2; } timeTag = setTimeout(doPlay, 2000); play(); i++; if(i == rstArr.length) { clearTimeout(timeTag); } } doPlay();
有兴趣的同学可以试下