1

我正在编写一个javascript代码,我想在用户单击“开始按钮”时欢迎他们。它可以用英语工作,但关键是我希望它用巴西葡萄牙语 (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>

当我单击按钮时,脚本有效,但参数中收到的文本是由英语(美国)语音朗读的。

有没有人知道如何解决它?

谢谢!!

4

2 回答 2

2

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

<!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 是异步的,现在一切正常!

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

最好的祝福,

尤利西斯

于 2016-04-12T19:14:39.233 回答
0

看这个:

网络语音 api - 语音合成 .lang 属性不起作用

还有这个:

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

出于某种原因,现在您需要填充声音列表,然后您才能选择所需的语言/版本。

于 2016-04-11T15:49:48.593 回答