天天看点

使用windows自带的语音引擎在客户端朗读一段文本

背景:之前公司有特殊要求,需要在特殊的环境下进行语音播报,且是物理隔离的内网状态,大家懂的。

环境:Windows 7 、IE系列

1. 先在网上看了一下前辈们的文章,发现还是有解决方案的,例如这个

使用JAVA实现语音朗读一段文本

https://my.oschina.net/simpleton/blog/385161?fromerr=v3kIMFRR

但是这玩意在本地试了一下,发现果然是可以播放的,只能在服务端发出声音,坑了个爹,不适用于我的应用场景

使用windows自带的语音引擎在客户端朗读一段文本

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。

最后发张图来结束这篇文章吧

使用windows自带的语音引擎在客户端朗读一段文本