У меня есть проблема, когда в Firefox речь отключается, если страница автоматически обновляется, но в Google Chrome она заканчивает произносить речь, даже если страница автоматически обновляется.
Описанное поведение для Firefox является разумной ожидаемой реализацией.
Просмотр исходного кода в Firefox и Chromium, реализация speechSynthesis.speak()
основана на сокетном соединении с локальной речьюсервер.Этот сервер в * nix обычно speech-dispatcher
или speechd
(speech-dispatcher
).См. Как программно отправлять команду сокета unix на системный сервер, автоматически запускаемый браузером, или конвертировать JavaScript в C ++ souce-код для Chromium? для описания попытки реализовать синтаксический анализ SSML в Chromium.
В конечном итоге было решено написать собственный код для выполнения этого требования с использованием JavaScript в соответствии со спецификацией W3C SpeechSynthesisSSMLParser после того, как он задавал более одного вопроса на сайтах SE, регистрировал проблемы и ошибки и размещал их в списках рассылки W3Cбез каких-либо доказательств того, что синтаксический анализ SSML когда-либо будет включен как часть API веб-речи.
Как только это соединение инициировано, создается очередь для вызовов на .speak()
.Даже когда соединение закрыто, Task Manager
может по-прежнему отображать активный процесс, зарегистрированный службой.
Процесс в Chromium / Chrome не лишен ошибок, наиболее близких к тому, что описано в вопросе.is
.volume
проблемы со свойствами
Наиболее вопиющей проблемой является реализация Chromium / Chrome webkitSpeechReconition
, которая записывает аудио пользователя и передает эти аудиоданные в удаленную службу, где транскрипт возвращается в браузер - без явного уведомления пользователя о том, чтопроисходит, отмечен WONT FIX
Соответствующие проблемы W3C Speech API на GitHub
Таким образом, не будет описывать поведение в Firefox как «проблему», а поведение в Chrome как потенциальную «проблему».
Погружение в реализацию W3C Web Speech API в браузерах не является тривиальной задачей.По нескольким причинам.Включая очевидную направленность или доступный вариант коммерческих услуг TTS / SST и проприетарных реализаций синтеза и распознавания речи с закрытым исходным кодом в «смартфонах»;вместо исправления различных проблем с фактическим развертыванием W3C Web Speech API в современных браузерах.
Сопровождающие speechd
(речь-диспетчер) очень полезны в отношении серверной части (локальной *)1134 * гнездо).
Не может говорить за сопровождающих Firefox.Предполагается, что маловероятно, что, если будет подана ошибка, относящаяся к запросу функции продолжения выполнения вывода звука .speak()
с перезагруженного window
, это согласуется с недавними политиками автоматического воспроизведения, реализованными браузерами.Хотя вы все равно можете отправить сообщение об ошибке в Firefox, чтобы спросить, ожидается ли продолжение вывода звука (из любого API или интерфейса) во время перезагрузки текущей window
;и если есть какие-либо предпочтения или политики, которые можно установить для переопределения описанного поведения, как предложено в ответе @zip.И получите ответ от самих разработчиков.
Существуют отдельные лица и группы, которые составляют код FOSS, которые активны в домене и готовы помочь в разработке SST / TTS, многие из которых активны в GitHub, что является еще одним вариантом задать вопросы о том, как реализовать то, чтовы пытаетесь достичь именно этого в браузере Firefox.
Помимо запроса к компоненту запроса на функцию, вы можете прочитать исходный код и попытаться создать один или несколько обходных путей.В качестве альтернативы можно использовать meSpeak.js
, хотя это не обязательно означает, что Firefox намеренно блокирует аудиовыход во время перезагрузки window
.