【发布时间】:2014-06-22 10:25:57
【问题描述】:
我在 Google Chrome v34.0.1847.131 上使用 Speech Synthesis API。该 API 从 v33 开始在 Chrome 中实现。
文本转语音在大多数情况下都有效,除非将回调分配给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 这样的纪元时间。
【问题讨论】:
-
仅仅因为规范是在 w3 中编写的......并不意味着它们在所有浏览器中都可以正常工作或工作,特别是如果它们是新的和实验性的,如语音合成......并不是说这种能力是某种形式技术突破,但它是第一次被带到浏览器。
-
感谢您的检查。看到其他人遇到这个问题是令人鼓舞的。我想这可能只是一个半生不熟的实现,所以这个问题可能没有答案。
-
检查一下...出于某种奇怪的原因,如果您注销话语对象
message,那么它可以正常工作。 :D jsfiddle.net/QYw6b -
事实上我认为问题是在声明消息对象后立即调用 speak 函数是问题..如果你这样做` setTimeout(function(){speechSynthesis.speak(u);}, 100);` 它可以工作......或者攻击说话功能来点击事件它也可以正常工作。
-
我仍然在适用于 Windows 的 chrome v46 上看到这个。我不记得它发生在 Chrome for android 上。
标签: javascript google-chrome text-to-speech speech-synthesis google-text-to-speech