gpt4 book ai didi

javascript - window.speechSynthesis.speak(msg) 在单击按钮之前不起作用

转载 作者:行者123 更新时间:2023-12-02 22:17:11 26 4
gpt4 key购买 nike

下面的简要页面不起作用。具体来说,“window.speechSynthesis.speak(msg)”在按下按钮之前不起作用。如果按钮已被按下,则“Hello”消息将起作用。如果没有,则对“window.speechSynthesis.speak(msg)”的任何调用都不会产生任何声音输出。

怀疑它与speechSynthesis的初始化有关 - 下面尝试了一些方法以确保它在调用“Hello”时被初始化。没有一个有效。虽然看起来应该有。似乎只有在按下按钮时调用它才能正确初始化。

无论是通过按钮调用还是超时调用,SpeechSynthesisUtterance 本身的设置都是相同的。该设置在通过按钮调用时起作用。但在按钮调用之前无处可去。

这里出了什么问题?

<!DOCTYPE html>
<html>

<head>
<title>Voice Test 3</title>
</head>

<body>

<div id="header">User Interface Terminal</div>
<input type="text" id="control_box"></input><br>
<button id="startButton" onclick="voicemessage('Button');">start</button><br>
<script>

function voicemessage(ttstext) {
var msg = new SpeechSynthesisUtterance(ttstext);
msg.volume = 1;
msg.rate = 0.7;
msg.pitch = 1.3;
window.speechSynthesis.speak(msg);
document.getElementById('control_box').value = ttstext;
}


window.speechSynthesis.onvoiceschanged = function() {
document.getElementById('control_box').value = "tts voices recognized";
window.setTimeout(function() {
voicemessage("Hello");
}, 5000);
};

window.addEventListener('load', function () {
var voices = window.speechSynthesis.getVoices();
})

</script>

</body>

</html>

最佳答案

这可能是由于浏览器本身造成的...某些浏览器(Firefox 和 Chrome)的最新更新具有阻止访问音频的策略,除非某些用户交互触发它(例如单击按钮)...

关于javascript - window.speechSynthesis.speak(msg) 在单击按钮之前不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349720/

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