【发布时间】:2020-01-16 21:49:01
【问题描述】:
我在 Google Chrome 上尝试了以下操作。它会打印出0 语音,然后在我的计算机上再次打印出0 语音,但是如果我重新加载页面以重新开始,并将最后一行更改为setTimeout(foo, 1000),那么第一行将打印出0,第二行将打印出87。
甚至可以将号码更改为66或33,但我不确定这是否取决于计算机速度和网络速度(用于获取语音数据。(可能是内部网络)流量,因为我在调试器的网络选项卡中没有看到任何流量))。
是否有更可靠的方法来获取类似于 DOMReady 事件的ready 事件或调用回调的某种方式,从而更可靠? (而不是使用setTimeout 来延迟未知的持续时间并希望获得最好的结果)。
function foo() {
msg = new SpeechSynthesisUtterance(),
voices = window.speechSynthesis.getVoices();
console.log("How many voices", voices.length);
msg.text = "Hello World";
speechSynthesis.speak(msg);
}
foo();
setTimeout(foo, 0); // just try again in the next event cycle
【问题讨论】:
标签: javascript ecmascript-6 text-to-speech speech-synthesis