ie浏览器语音播报
- 在ie下用 SpVoice实现语音播报功能
spvoice详细接口
示例代码
<!DOCTYPE html>
<html>
<head>
<title>语音播报</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
</style>
<script type="text/javascript">
//每次播报都重新创建对象会导致播放中断或间隔性播放等问题,因此建议只全局创建一次
var voiceObj = new ActiveXObject("Sapi.SpVoice");
function listen1(){
//var voiceObj = new ActiveXObject("Sapi.SpVoice");
//朗读
voiceObj.Speak("开始在ie浏览器上朗读文本了",1);
var handle=voiceObj.SpeakCompleteEvent();
voiceObj.WaitUntilDone(handle)
alert("播报完毕");
}
function listen2(){
//var voiceObj = new ActiveXObject("Sapi.SpVoice");
//朗读
voiceObj.Speak("开始在ie浏览器上朗读文本了",1);
}
function listen3(){
//var voiceObj = new ActiveXObject("Sapi.SpVoice");
//语速
voiceObj.Rate=-1;
//音量
voiceObj.Volume=60;
//换女声,经测试无效
//voiceObj.Voice=voiceObj.GetVoices('','').Item(2);
var text=document.getElementById("p1").innerHTML;
//朗读
voiceObj.Speak(text,1);
}
</script>
</head>
<body>
<input type="button" value="语音播报" onclick="listen1();">
<input type="button" value="语音播报2" onclick="listen2();">
<input type="button" value="语音播报3" onclick="listen3();">
<p id="p1">啦啦啦啦啦啦啦</p>
</body>
</html>
异步播报
- SpVoice.Speak()接收两个参数,第二个参数可选,不传则为同步阻塞,传1表示异步非阻塞。
等待播报完毕
var voiceObj = new ActiveXObject("Sapi.SpVoice");
//朗读,参数1表示异步非阻塞
voiceObj.Speak("开始在ie浏览器上朗读文本了",1);
voiceObj.Speak("开始在ie浏览器上朗读文本了",1);
//var handle=voiceObj.SpeakCompleteEvent();
//此处会阻塞直到超时时间,-1则为等待队列中的语音播报完毕
voiceObj.WaitUntilDone(-1);//设置为-1可以看到speak两次后才弹出播报完毕
alert("播报完毕");
参考
IE 前端页面实现语音播报功能 - Crimson - CSDN博客
https://blog.csdn.net/qq_24089175/article/details/73647920
js实现语音播报功能 - 浣花水榭 - 博客园
https://www.cnblogs.com/qinglingyue/p/5477813.html