Подтвердить что ты не робот

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/

Ошибка все еще происходит! :

4b9b3361

Ответ 1

Вы спросили, где сообщить об этой проблеме. Для программистов, я думаю, этот форум - лучшее место. Фактически значительная дискуссия произошла в Синхронизация речи Chrome с более длинными текстами. Но я полагаю, что большая часть этого ошибочно фокусируется на количестве слов, разрешенных по SpeechSynthesis, а не на продолжительность. На самом деле, ваше решение кажется мне наиболее практичным.

У Google есть функция отчетности об ошибках, и проблема была объявлена ​​как speechSynthesis не работает для длинного текста без предупреждения и блокирует API. В настоящее время он имеет в общей сложности 3 отчета, которые дают ему 3 звезды. Мы можем привлечь внимание к проблеме, добавив в этот отчет Chromium Bug (я добавил один).

Текущее состояние этой ошибки - "Необратимый"; также представляют интерес несколько других сообщений, связанных с Chrome SpeechSynthesis.