我正在使用Google Chrome v34.0.1847.131上实现的语音合成API。自版本33开始,Chrome中已经实现了该API。
大部分时候文本到语音都可以正常工作,但是当将回调函数分配给
大部分时候文本到语音都可以正常工作,但是当将回调函数分配给
onend
时会出现问题。例如,以下代码:var message = window.SpeechSynthesisUtterance("Hello world!");
message.onend = function(event) {
console.log('Finished in ' + event.elapsedTime + ' seconds.');
};
window.speechSynthesis.speak(message);
有时会调用onend
,有时不会调用。时间似乎完全错了。当它被调用时,打印的elapsedTime
总是一些类似于1399237888
的纪元时间。
speak
函数...如果你只需要这样做:setTimeout(function(){speechSynthesis.speak(u);},100);
,它就可以工作了...或者将speak
函数绑定到点击事件上,它也能正常工作。 - Muhammad UmersetTimeout(function(){speechSynthesis.speak(u);},1);
同样有效,并且与直接调用它没有区别。似乎API只喜欢存在于回调函数中。希望能对我们观察到的行为有更多了解,但可能只有谷歌员工才知道确切原因。如果您愿意,您可以根据提供的信息撰写一个答案,我会给予应有的认可 :) - huu