SpeechSynthesis无法用葡萄牙语发言(pt-BR)

时间:2016-04-07 19:13:14

标签: text-to-speech speech-synthesis webspeech-api google-speech-api

我正在编写一个javascript代码,我想在用户点击“开始”按钮时欢迎用户使用#34;。它用英语工作,但问题是我希望用巴西葡萄牙语(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>

当我点击按钮时,脚本可以正常工作,但参数中收到的文字是用英语(美国)的语音说出的。

有没有人知道如何修复它?

谢谢!

2 个答案:

答案 0 :(得分:1)

感谢您回复Bruno。我在下一天发布问题时解决了这个问题但是无法在这里发布解决方案。我用这个解决了这个问题:

<!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异步,这使得一切正常!

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

最诚挚的问候,

Ulisses

答案 1 :(得分:0)

注意:

web speech api - speech synthesis .lang property not working

和此:

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

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