背景:之前公司有特殊要求,需要在特殊的环境下进行语音播报,且是物理隔离的内网状态,大家懂的。
环境:Windows 7 、IE系列
1. 先在网上看了一下前辈们的文章,发现还是有解决方案的,例如这个
使用JAVA实现语音朗读一段文本
https://my.oschina.net/simpleton/blog/385161?fromerr=v3kIMFRR
但是这玩意在本地试了一下,发现果然是可以播放的,只能在服务端发出声音,坑了个爹,不适用于我的应用场景
2. 只能另寻妙招了,Plan B
使用JavaScript调用ActiveXObject对象来播放声音,就可以在客户端播放
先看看代码长什么样子
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试播放音频</title>
</head>
<body>报警信息:<input type="text" id="alarmNum" ><button onclick="">报警</button>
</body><script type="text/javascript">var voice=new ActiveXObject("SAPI.SpVoice");function speak(s) {
// debugger;voice.Speak(s,1);voice.WaitUntilDone(-1);}speak("黄独秀很秀");
</script></html>
另外需要说明一下,ActiveXObject是Windows的一个组件,特有的好么,还只能在IE上用,另外,测试的时候只有IE8,IE9,IE11通过,另外IE10 测试不通过,浏览器需进行一定的配置才可以。
OK,到了这里如果顺利的话,你就会发现还是播放不了,报了一下错误❌信息,哈哈哈哈?,好吧,这是正常现象,让我们看看怎么solve这个problem。
主要是需要注册组件,注册组件就不在这里凑字数了,大家可以参考下面这篇文章的内容,简单好用,最主要是能解决问题而且无后遗症。哈哈?
automation 服务器不能创建对象
https://jingyan.baidu.com/article/e73e26c0e5bd2124adb6a7b0.html
好了啦,到这里就差不多可以实现基本装逼功能了,服务器传递想要播放的信息,然后前端进行播放,可以玩的东西还很多,例如让女盆友打开你发给她的网址,点击进去就播放XXX,我爱你?,哈哈,前提是你女盆友用的IE浏览器,OK,forget it。
最后发张图来结束这篇文章吧