天天看點

使用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自帶的語音引擎在用戶端朗讀一段文本