Синтез речи не будет приостанавливаться в Google Chrome при первой загрузке после запуска браузера

Полностью закройте браузер, снова откройте браузер и запустите преобразование текста в речь с помощью speechSynthesis.speak(string);

речевой синтез.пауза(); не будет работать, пока вы не обновите страницу.

То же самое можно увидеть по адресу https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/speechsynchronous/

Это происходит как на Mac, так и на Windows, Chrome 70.

Кто-нибудь знает обходной путь?


person ojas pote    schedule 01.11.2018    source источник
comment
Привет - кажется, здесь нет вопроса? Если это отчет об ошибке для Chrome, вам нужно будет сообщить об этом в Google, а не публиковать его в Stack Overflow.   -  person Ant P    schedule 02.11.2018
comment
Не уверен, что это ошибка Chrome или проблема с речью.   -  person ojas pote    schedule 02.11.2018


Ответы (1)


Кто-нибудь знает обходной путь?

Если вы сначала произносите пустой текст, он останавливается при первой загрузке.

let btnSpeak = document.getElementById("btnSpeak");
let spoken = false;
speechSynthesis.cancel();
function speak() {
    btnSpeak.disabled = true;
    let msg = new SpeechSynthesisUtterance();
    if (!spoken) {
        let mt = new SpeechSynthesisUtterance();
        mt.text = " ";
        window.speechSynthesis.speak(mt);
        spoken = true;
    }
    msg.text = "Use a long sentence to give time to hit pause";
    msg.voice = voices[0];
    msg.lang = voices[0].lang;
    msg.onend = function(event) {
        btnSpeak.disabled = false;
    };
    window.speechSynthesis.speak(msg);
}
person Frazer    schedule 06.11.2018
comment
это потому, что speechSynthesis.getVoices() возвращает null при первом вызове - person Muhammad Umer; 08.10.2020
comment
решение: stackoverflow.com/questions /49506716/... speechSynthesis.onvoiceschanged = speak; - person Muhammad Umer; 08.10.2020