在调用speak之前预加载Web Speech API

时间:2015-04-08 18:51:16

标签: javascript speech speech-synthesis synthesize webspeech-api

所以我注意到,在您使用speechSynthesis.speak进行第一次讲话后,它会在提供结果时大幅加快。所以我的目标是通过预先初始化综合来加速它,所以当我们调用speakIt()时我们不必等待它。它根本没有加速;关于它为什么不加速以及我如何修复它的任何建议?

完整脚本:

var speech = new SpeechSynthesisUtterance("test");
var voices = window.speechSynthesis.getVoices();
speech.default = false;
speech.voice = voices.filter(function(voice) { return voice.name == 'Google  UK English Male'; })[0];
speech.lang = 'en-GB';

function speakIt(word){
        speech.text = word;
        window.speechSynthesis.speak(speech);
}

chrome.tts.speak似乎有点快,但肯定不存在,但这不是重点 - 这应该仍然有用。在有人找到答案之前,我会迁移到Chrome的用法。

1 个答案:

答案 0 :(得分:0)

在演讲前你需要做一些设置。我希望有更多的例子。具体来说,你应该调用getVoices()添加一个事件处理程序,以便在页面加载时提前填充语音。我写了一个为你做这个的课。请参阅Codepen示例。

var speech = new Speech();

if (speech.supported()) {
  speech.speak('hello, speech is working fine');
}

Codepen示例: http://codepen.io/anon/pen/qNwOAO