2017-10-07 177 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上運行,但只能在線上運行。它沒有顯示控制檯中的任何流量,但聲音只在線上時才起作用!