Предварительная загрузка Web Speech 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 ответ

Вы должны сделать некоторые настройки перед выполнением речи. Я хотел бы, чтобы больше примеров включало это. В частности, вы должны вызвать getVoices() и добавить обработчик событий, чтобы заполнить голоса раньше времени при загрузке страницы. Я написал класс, который делает это для вас. Смотрите пример Codepen.

var speech = new Speech();

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

Пример Codepen: http://codepen.io/anon/pen/qNwOAO

Другие вопросы по тегам