gpt4 book ai didi

javascript - cancel() 方法的 JS SpeechSynthesis 问题

转载 作者:搜寻专家 更新时间:2023-11-01 04:22:59 27 4
gpt4 key购买 nike

我想在 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);

预期:使用 var test 开始演讲,但由于 cancel() 而立即取消。然后使用 var test2 再次开始语音,这应该可以正常工作。

当然,这并没有发生。但是发生了什么事。 :D在 cancel() 之后调用 speak() 似乎什么也没做。

API 说明如下:

This method removes all utterances from the queue. If an utterance is being spoken, speaking ceases immediately. This method does not change the paused state of the global SpeechSynthesis instance.

感谢答案:)

最佳答案

我刚刚遇到了同样的问题,在取消 之后发出speak 将导致没有发言权。

我在 clear() 调用后添加了一个小超时(250 毫秒),它似乎有效:

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);
}
}

关于javascript - cancel() 方法的 JS SpeechSynthesis 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39391502/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com