0

我有一个使用 HTML5 语音合成 API 的 Web 应用程序,它可以工作 - 但只能使用本机语音。这是我的代码:

var msg = new SpeechSynthesisUtterance();
var voices;

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

$("#btnRead").click(function() {
        speak();
});

function speak(){
    msg = new SpeechSynthesisUtterance();
    msg.rate = 0.8;
    msg.text = $("#contentView").html();
    msg.voice = voices[10];
    msg.lang = 'en-GB';
    window.speechSynthesis.speak(msg);
}

voices[10] 是唯一有效的声音,当我将其记录到控制台时,我可以看到它是本机声音 - 这似乎表明其他声音没有正确加载,但它们仍然出现在 voices 数组中当它登录到控制台时,您可以在此处看到:

控制台截图

有人有想法么?我确定我可能遗漏了一些相对简单的东西,但我已经为此苦苦挣扎了一段时间!我正在使用 Google Chrome 版本 42.0.2311.90,据我所知,它应该支持语音合成 API。

4

1 回答 1

1

刚开始玩speechSynthesis,所以没有花太多时间在上面。我偶然发现了你的问题,我相信答案是你选择的声音不支持你给它的语言,你会得到一个后备。

如果您阅读文档并检查您如何选择声音(至少在我的电脑上) https://developers.google.com/web/updates/2014/01/Web-apps-that-talk-Introduction-to -the-Speech-Synthesis-API?hl=en

var msg = new SpeechSynthesisUtterance('Awesome!');
msg.voice = speechSynthesis.getVoices().filter(function(voice) { 
      return voice.name == 'Google UK English Male'; 
})[0];

// now say it like you mean it:
speechSynthesis.speak(msg);

希望这可以帮助您或其他搜索它的人。

于 2015-11-10T22:18:08.810 回答