中文翻译:为中文语音合成API -- 火狐浏览器

3
语音合成 API 在 Firefox 上无法朗读中文。它不支持吗?我在文档中找不到列表。我尝试了几个不同的语言 标签Fiddle
var msg = new SpeechSynthesisUtterance();
msg.text = '你好';
msg.lang = 'zh';
window.speechSynthesis.speak(msg);

如果正常工作,您应该听到“你好”。在Chrome上声音很好,在Safari上声音可以。在Ubuntu上的Firefox 53.0.2上,我听到“字母 字母”。


我测试了你的代码片段,在Mac 10.12上的Firefox 53中运行良好。 - shaochuancs
在Ubuntu上,speechSynthesis.getVoices().map((el) => el.lang).sort()中没有中文;但在Ubuntu上的Chrome上可以正常发音。 - Polv
1个回答

4

在Windows上,Firefox只有3个语音,全部是英文。

我写了一个jsbin来展示浏览器的语音:
https://jsbin.com/ginanegoqu/edit?js,output

if ('speechSynthesis' in window) {
    // Start an html table for languages details
    var text = '<table border=1><tr><th>Default<th>Language<th>Local<th>Name<th>URI</tr>';
    // Get voices; add to table markup
    function loadVoices() {
        var voices = speechSynthesis.getVoices();
        voices.forEach(function(voice, i) {
          // Add all details to table
          text += '<tr><td>' + voice.default + '<td>'
              + voice.lang + '<td>' + voice.localService
              + '<td>' + voice.name + '<td>' + voice.voiceURI;
        });
    }
    loadVoices();
    langList.innerHTML = text;
    // Chrome loads voices asynchronously.
    window.speechSynthesis.onvoiceschanged = function(e) {
        loadVoices();
        langList.innerHTML = text;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接