语音合成API在Chrome中无法正常工作

xn1cxnb4  于 2023-05-11  发布在  Go
关注(0)|答案(1)|浏览(210)

我看到一个问题,下面的jsfiddle中的语音合成在MacOS上的Chrome中不起作用(没有语音)(Chrome 113.0.5672.63,MacOS 13.2.1)。
这是一个奇怪的问题,因为语音合成确实在我正在开发的一个Web应用程序中的同一个Chrome示例中工作,而且jsfiddle也在同一台机器上的Safari和Firefox中工作。
我首先好奇的是jsfiddle代码是否适用于Chrome示例中的其他人。知道这一点将帮助我决定我想投入多少精力来追踪这个问题。
https://jsfiddle.net/pilyugin/dgygqLw2/

var wordsToSpeak = [
  'Hello! This text should be longer than sixty or may be more symbols. Please see console log.',
  'Now end event is fired!',
  'You can use global variables to store utterance object.'
];
// this object for storing utterances globally
window.utterances = []; 

function speak(text) {
  var utterance = new SpeechSynthesisUtterance(text);
  utterance.lang = 'en-US';
  utterance.onend = function() {
    // this code is not called
    console.log(text);
  };

  // if you will comment this line, end event will not work!
  utterances.push(utterance);
  
  speechSynthesis.speak(utterance);
}

for (var i = 0; i < wordsToSpeak.length; i++) {
  speak(wordsToSpeak[i])
}
rseugnpd

rseugnpd1#

你通常不能在Chrome中有一个页面自动播放音频,不,JSFiddle在我的Windows Chrome上也不能开箱即用。
添加一个按钮并在

document.getElementById("x").addEventListener("click", () => {
  for (var i = 0; i < wordsToSpeak.length; i++) {
    speak(wordsToSpeak[i])
  }
});

使其在单击按钮后工作。

相关问题