我正試圖在視覺障礙人士的家庭自動化項目中實現瀏覽器中的語音合成。在我的測試頁面中,我注意到在調用speak()
方法和實際聽到它之間大約有1秒的時滯。。我的代碼是壞的還是這是可以預料的?
只是想知道這是正常行爲還是我做錯了什麼。如果任何人都可以提供如何加快它的建議(甚至半秒左右),我真的很感激它:)
[編輯1]
好吧,所以我試過我的測試頁在MS邊緣(只使用Chrome),滯後消失。我也嘗試了Chrome中的Web Speech Synthesis Demo,「語音」設置爲「本地」,並且沒有延遲。這些測試都以英國英語的聲音呈現了文字。
在Chrome中,我的測試頁使用澳大利亞 - 英語語音(我在AU)呈現文本,並在播放前有滯後。
我的直覺告訴我,Chrome瀏覽器正在從某個遠程位置加載語音,而不是使用本地系統語音,並且僅用於此特定頁面(即codepen.io上的演示在同一瀏覽器中正常工作)。但是我不知道的是爲什麼。
如果它只加載一次聲音,而不是每次調用聲音時(這只是假設發生了什麼),這並不是什麼大問題。
[/ EDIT 1]
這裏是我的代碼:
<body>
<div class='col col-xs-6'>
<div style='width:100%;'>
<button type='button' class='btn' onmouseover='speak("mouse over");' onmouseout="cancel();">
Test button.
</button>
</div>
</div>
<p id="msg"></p>
<script type="text/javascript">
var globalVolume = 0.8;
var globalRate = 1;
var globalPitch = 0.9;
var enterMsg = "Mouse over";
function speak(text) {
var msg = new SpeechSynthesisUtterance();
msg.text = text;
msg.volume = globalVolume;
msg.rate = globalRate;
msg.pitch = globalPitch;
//msg.voice = "native";
window.speechSynthesis.speak(msg);
}
function cancel() {
window.speechSynthesis.cancel();
}
//speak("Hello, world!");
</script>
</body>