javascript - SpeechSynthesis.speak(在 Web Speech API 中)在 Google Chrome 中总是在几秒钟后停止

标签 javascript google-chrome text-to-speech speech-synthesis webspeech-api

当在 Web Speech API 中使用 speak 函数时,在 Chrome 中,说话会在几秒钟后突然停止,在给它的文本中间,在一个看似随机的地方(没有到达结束)。 这只发生在 Chrome 中(在 Firefox 上运行良好),并在两台不同的计算机/系统上进行了测试。

查看此 jsfiddle 以查看/收听: https://jsfiddle.net/fv9ochpq/

您可以看到 SpeechSynthesis 对象 .speaking 标志在停止说话后保持打开状态(true)。

我还没有看到对传递给话语的文本有任何记录限制。 这是谷歌浏览器的错误吗? 顺便说一句,我从 2014 年就知道了这一点——当时我试图向我制作的浏览器扩展添加语音功能(当时它是可用于 chrome 扩展的 TTS API——那里也发生了同样的事情),但最终没有因为这个明显的错误而这样做。 现在我想克服这个问题 - 如果这是一个错误,我将感谢任何人指导我到最好的地方报告它。

编辑:它似乎在大约 15 秒后停止。每 14 秒运行一次 .resume() 似乎可以“修复”这个问题。请参阅:https://jsfiddle.net/fv9ochpq/1/
但这是一个 hack。

2019 年 8 月更新 自 2018 年 12 月起 - Chrome 不允许在没有用户交互的情况下触发语音,这是一个更新的 jsfiddle,添加了一个按钮,以及实际的 speak 调用移动到它的 onclick: https://jsfiddle.net/vcmxkwd3/

错误仍在发生!:

最佳答案

你问到哪里报告这个问题。对于程序员来说,我觉得这个论坛是最好的地方。事实上,Chrome Speech Synthesis with longer texts 已经进行了大量讨论。 .但我认为其中大部分错误地关注了 SpeechSynthesis 允许的单词数,而不是duration has you do here。事实上,在我看来,您的解决方案是最实用的。

Google 有错误报告工具,该问题已报告为 speechSynthesis fails for long text without warning and blocks the API .它目前共有 3 份报告,给它 3 个“星”。我们可以通过向这个 Chromium Bug 添加报告(我已经添加了一个)来引起对这个问题的关注。

此错误的当前状态是“未分类”;同样感兴趣的是 several other reported issues related to Chrome SpeechSynthesis .

关于javascript - SpeechSynthesis.speak(在 Web Speech API 中)在 Google Chrome 中总是在几秒钟后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42875726/

相关文章:

javascript - 在 Javascript 中传递变量 - 不执行

javascript - iOS 书签小程序重写 URL 并在 Safari 中访问

javascript - 在 Chrome 扩展程序的弹出文件中加载 YouTube 视频时出错?

artificial-intelligence - 如果你想开发一个语音助手,你会使用哪种语言?

java - 放弃音频焦点并继续之前的音乐/视频流

java - 如何为 C++ 安装 VOCE?

javascript - 有谁知道允许延迟执行方法的 JS Chaining 库?

javascript - Vuetify - 改变卡片加载方式?

REST API 测试 : How to get response using Google Chrome developer tools?

javascript - "Styles"选项卡在 chromium 开发者工具中不显示任何 css 规则