我正在尝试为视障人士的家庭自动化项目在浏览器中实现语音合成。在我的测试页面中,我注意到调用该speak()
方法和实际听到它之间大约有 1 秒的延迟。
只是想知道这是正常行为还是我做错了什么。如果有人可以就如何加快速度(甚至半秒左右)提供建议,我将不胜感激:)
[编辑 1]
好的,所以我在 MS Edge 中尝试了我的测试页面(只使用了 Chrome)并且滞后消失了。我还尝试了Chrome 中的Web Speech Synthesis Demo,将“voice”设置为“native”,也没有延迟。这两项测试都以英国英语语音呈现文本。
在 Chrome 中,我的测试页面使用澳大利亚英语语音(我在 AU)呈现文本,并且在播放之前有延迟。
我的直觉告诉我,Chrome 浏览器正在从某个远程位置加载语音,而不是使用本地系统语音,并且仅针对此特定页面(即 codepen.io 的演示在同一浏览器中运行良好)。但我不知道为什么。
如果它只加载一次声音而不是每次调用它(我只是假设这就是正在发生的事情),这将不是什么大问题。
[/编辑 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>