SpeechSynthesis 在 FireFox 中第一次发声后停止工作,但在 Chrome 中工作

SpeechSynthesis stops working after first utterance in FireFox, but works in Chrome

问题很简单,见JSfiddle

SpeechSynthesis 在 Chrome 中工作正常,但在 FireFox 中第一次说话后神秘地停止。 (在 Safari 中也适用于我。)欢迎提出任何想法,因为我没有太多可参考的东西。

代码:

var u = new SpeechSynthesisUtterance();
var synth = window.speechSynthesis;
u.text = "hello";
synth.speak(u);
synth.speak(u);
synth.speak(u);

这其实是一个known bug in Firefox.

The specs drafts are still not very clear about the re-usability of an utterance, but you can see this issue 在 w3c 的 github 上,他们同意应该这样做。

目前,一种解决方法是每次都创建一个新话语...

var synth = window.speechSynthesis;

synth.speak(new SpeechSynthesisUtterance('hello'));
synth.speak(new SpeechSynthesisUtterance('hello'));
synth.speak(new SpeechSynthesisUtterance('hello'));