SpeechSynthesis.speak(в Web Speech API) всегда останавливается через несколько секунд в Google Chrome
При использовании функции speak
в Web Speech API в Chrome разговор резко останавливается через несколько секунд, в середине текста, который ему дан, в, казалось бы, случайном месте (без достижения конца).
Это происходит только в Chrome (хорошо работает в Firefox), протестированном на двух разных компьютерах/системах.
Посмотрите на этот jsfiddle, чтобы увидеть/прослушать:
https://jsfiddle.net/fv9ochpq/
Вы можете видеть, что флаг SpeechSynthesis
объекта .speaking
остается (true) после того, как он перестает говорить.
Я не видел никаких задокументированных ограничений на текст, передаваемый высказыванию.
Это ошибка Google Chrome?
Кстати, я знал об этом с 2014 года - когда я пытался добавить речевую функцию к расширению браузера, которое я сделал (тогда это был API TTS, доступный для расширений Chrome - там тоже самое происходило), но в итоге этого не произошло. не делайте этого из-за этой очевидной ошибки.
Теперь я хочу преодолеть это - если это ошибка, я буду признателен всем, кто направит меня в лучшее место, чтобы сообщить об этом.
РЕДАКТИРОВАТЬ: кажется, останавливается примерно через 15 секунд. Добавление интервала каждые 14 секунд работы .resume()
, похоже, "исправляет" это. Смотрите: https://jsfiddle.net/fv9ochpq/1/
Ноэто взлом.
АВГУСТ 2019 ОБНОВЛЕНИЕ С декабря 2018 года - Chrome не позволяет запускать речь без взаимодействия с пользователем, это обновленный jsfiddle с добавленной кнопкой, и фактический вызов speak
перемещен в его onclick
:
https://jsfiddle.net/vcmxkwd3/
Ошибка все еще происходит! :
Ответы
Ответ 1
Вы спросили, где сообщить об этой проблеме. Для программистов, я думаю, этот форум - лучшее место. Фактически значительная дискуссия произошла в Синхронизация речи Chrome с более длинными текстами. Но я полагаю, что большая часть этого ошибочно фокусируется на количестве слов, разрешенных по SpeechSynthesis, а не на продолжительность. На самом деле, ваше решение кажется мне наиболее практичным.
У Google есть функция отчетности об ошибках, и проблема была объявлена как speechSynthesis не работает для длинного текста без предупреждения и блокирует API. В настоящее время он имеет в общей сложности 3 отчета, которые дают ему 3 звезды. Мы можем привлечь внимание к проблеме, добавив в этот отчет Chromium Bug (я добавил один).
Текущее состояние этой ошибки - "Необратимый"; также представляют интерес несколько других сообщений, связанных с Chrome SpeechSynthesis.