【问题标题】:SpeechSynthesis not working to speak in portuguese (pt-BR)SpeechSynthesis 无法用葡萄牙语说话 (pt-BR)
【发布时间】:2016-04-07 19:13:14
【问题描述】:

我正在编写一个 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>

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

有人知道如何解决吗?

谢谢!!

【问题讨论】:

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


    【解决方案1】:

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

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

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

    最好的问候,

    尤利西斯

    【讨论】:

    • 我遇到了类似的问题,因为我的应用必须在页面加载后立即说话,而且声音并不总是按时加载。
    • @DouglasDeRizzoMeneghetti 试试我发布的解决方案,它对我很有效。无论如何,为了确保您的文档已完全加载并准备好处理您的代码,您可以使用 jQuery 语句:$(document).ready(function()); 其中function 是您要在页面完全加载后调用的函数的名称。希望这会有所帮助!
    • 谢谢。我不熟悉 jQuery(判断我),但我用 addEventListener('load') 做了类似的事情,效果很好。
    • @DouglasDeRizzoMeneghetti,没有人能因此评判你,知识永远是我们征服的东西,没有人可以为你学习 ;)!很高兴你能让它工作! :)
    【解决方案2】:

    观看:

    web speech api - speech synthesis .lang property not working

    还有这个:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 2019-05-26
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      相关资源
      最近更新 更多