2017-10-07 259 views
1

我正在开发一个应用程序,它要求我在Web浏览器中使用文本到语音。我正在使用HTML5 Speech Synthesis。在谷歌浏览器上,代码运行良好,所有可用语音都使用| getVoices()|列出,但在Firefox中根本没有语音列出。我正在Firefox 56.0(Ubuntu)上测试我的代码。SpeechSynthesis.getVoices()未在Firefox中列出语音

在网上搜索时,我遇到了一个StackOverflow answer,它提示getVoices()函数应在| onVoiceChanged |事件

window.speechSynthesis.onvoiceschanged = function() { 
    window.speechSynthesis.getVoices(); 
    ... 
}; 

我按照上面提到的方式调用调用,它在Chrome中按照需要运行,但不在Firefox上运行。

另一个StackOverflow的答案建议我让| media.webspeech.synth.enabled |在Firefox的about:config中,但在我的Firefox中,首选| media.webspeech.synth.enabled |已被设置为true。

我查了MDN文档https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis/getVoices这页对我来说在Firefox不运行的例子,但在Chrome运行正常。我发现CanIUse.com列出了SpeechSynthesis在Firefox 55以上版本中支持的功能,但它不适用于我。

demo由Mozilla开发者网络来演示语音合成失败对我的Firefox浏览器,但在谷歌浏览器运行正常。我在网上广泛搜索了一个解决方案,但找不到一个解决方案。有人可以在这里指出我正确的方向。

+0

演示工作对我来说外汇ESR 53.3.0和电流56,在Win 10 – myf

+0

你调用'.getVoices()''onvoiceschanged'事件处理程序之外? – guest271314

回答

0

遇到同样的问题,这是我想通了。

  • 不为我在Firefox的Ubuntu 16.04
  • VirtualBox上Windows上运行的工作。声音来自Windows。 “微软大卫”是其中的一个选择。
  • Chrome可在Ubuntu上运行,但只能在线上运行。它没有显示控制台中的任何流量,但声音只在线上时才起作用!