Eri*_*rik 5 javascript google-chrome speech-synthesis
我想在Chrome中使用window.SpeechSynthesis的cancel方法来切断话语并开始一个新的话(这样您就不必听到仍在排队的所有话语了)
var test = new SpeechSynthesisUtterance("Test");
window.speechSynthesis.speak(test);
window.speechSynthesis.cancel();
var test2 = new SpeechSynthesisUtterance("Test2");
window.speechSynthesis.speak(test2);
Run Code Online (Sandbox Code Playgroud)
预期:以var test开始语音,但由于cancel()立即取消语音。然后使用var test2重新开始语音,这应该可以正常工作。
当然,那没有发生。但是什么都没发生。:D似乎在cancel()之后调用了say()却什么也不做。
API说明如下:
此方法从队列中删除所有语音。如果说出话语,则说话立即停止。此方法不会更改全局SpeechSynthesis实例的暂停状态。
谢谢答案:)
我刚刚遇到了同样的问题,取消后发出发言将导致没有发言。
我在clear()调用后添加了一个小超时(250ms),它似乎有效:
var sayTimeout = null;
function say(text) {
if (speechSynthesis.speaking) {
// SpeechSyn is currently speaking, cancel the current utterance(s)
speechSynthesis.cancel();
// Make sure we don't create more than one timeout...
if (sayTimeout !== null)
clearTimeout(sayTimeout);
sayTimeout = setTimeout(function () { say(text); }, 250);
}
else {
// Good to go
var message = new SpeechSynthesisUtterance(text);
message.lang = "en-US";
speechSynthesis.speak(message);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1751 次 |
| 最近记录: |