gpt4 book ai didi

javascript - speechSynthesis是否允许在没有用户交互的情况下运行的问题

转载 作者:行者123 更新时间:2023-11-30 13:49:20 25 4
gpt4 key购买 nike

似乎 speechSynthesis 有时不允许在没有用户交互的情况下在某些设备上运行。我的 PC 浏览器过去常常对此发出警告,但现在它可以工作了(我不知道我是否在此期间不小心更改了一些权限),而我的 Android 平板电脑似乎允许它来自 localhosthttp 上,但在我的生产网站上不允许它在 https 上。电话总是不允许的。

我想知道是否有某种方法可以确定正在运行的设备上是否允许它,以便我可以显示通知或隐藏我的应用程序中提供文本到语音的选项?

最佳答案

它依赖于浏览器。 Chrome,至少,过去默认允许在没有用户交互的情况下进行语音,但是这改变了a bit ago .一种检查方法是将 话语放入队列,然后查看 SpeechSynthesis.speakingSpeechSynthesis.pending 是否为 :

// Allowed:
btn.onclick = () => {
speechSynthesis.speak(new SpeechSynthesisUtterance(''));
const worked = speechSynthesis.speaking || speechSynthesis.pending;
console.log(worked);
};
<button id="btn">click</button>

// Not allowed, silent failure:
speechSynthesis.speak(new SpeechSynthesisUtterance(''));
const worked = speechSynthesis.speaking || speechSynthesis.pending;
console.log(worked);

不幸的是,speechSynthesis.speak 不会抛出(甚至是异步的)当语音由于首先没有用户交互而被阻止时,因此检查 speaking 属性看起来是只有其他方式。

关于javascript - speechSynthesis是否允许在没有用户交互的情况下运行的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58584170/

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