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