在调用说话之前预加载 Web Speech API

Wic*_*312 5 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);
}
Run Code Online (Sandbox Code Playgroud)

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

red*_*zee 0

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

var speech = new Speech();

if (speech.supported()) {
  speech.speak('hello, speech is working fine');
}
Run Code Online (Sandbox Code Playgroud)

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