SpeechSynthesis 不能用葡萄牙语说话 (pt-BR)

SpeechSynthesis not working to speak in portuguese (pt-BR)

我正在编写 javascript 代码,希望在用户单击 "start button" 时欢迎他们。它可以用英语工作,但关键是我希望它用巴西葡萄牙语 (pt-BR) 表达。我尝试了很多解决方案,但似乎都行不通。谁能帮帮我?

密码是:

<!DOCTYPE html>
<html lang="pt-BR">
<head>
<script>

startTalking = function(line){
    var text  = new SpeechSynthesisUtterance();
    text.lang = "pt-BR";
    text.text = line;
    speechSynthesis.speak(text);
  }

</script>
</head>
<body>

<button id="startButton" onclick = "startTalking("Bem vindo!")"></button>

</body>
</html>

当我单击该按钮时,脚本会运行,但参数中收到的文本是由英语(美国)语音说出的。

有人知道如何修复它吗?

谢谢!!

看这个:

还有这个:

https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis/onvoiceschanged

出于某种原因,现在您需要填充语音列表,然后才能选择您想要的language/version。

感谢布鲁诺的回复。我在第二天解决了这种情况,我 post 提出了问题,但无法 post 解决方案。我用这个解决了这种情况:

<!DOCTYPE html>
<html lang="pt-BR">
<head>
<script>

var text;
var voices;

window.speechSynthesis.onvoiceschanged = function() {
  text = new SpeechSynthesisUtterance();
  voices = window.speechSynthesis.getVoices();
  text.voiceURI = 'Google português do Brasil'; //discovered after dumping getVoices()
  text.lang = "pt-BR";
  text.localService = true;
  text.voice = voices[15]; //index to the voiceURI. This index number is not static.
}

startSpeaking = function(line){
  text.text = line;
  speechSynthesis.speak(text);
}

</script>
</head>
<body>

<button id="startButton" onclick = "startTalking("Bem vindo!")"></button>

</body>
</html>

一旦 onvoiceschanged 是异步的,现在一切正常!

我已经解决了,非常感谢您的回复。非常感谢。

此致,

尤利西斯