19

speak在 Web Speech API 中使用该功能时,在 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调用移至其onclickhttps ://jsfiddle.net/vcmxkwd3/

错误仍在发生!

4

1 回答 1

2

你问到哪里报告这个问题。对于程序员来说,我认为这个论坛是最好的地方。事实上,在Chrome Speech Synthesis 上已经对较长的文本进行了相当多的讨论。但我相信其中大部分错误地关注SpeechSynthesis允许的单词数量,而不是你在这里所做的持续时间。事实上,在我看来,您的解决方案是最实用的。

Google 有一个错误报告工具,该问题已报告为SpeechSynthesis 因长文本失败而没有警告并阻止 API。它目前共有 3 份报告,这给了它 3 颗“星”。我们可以通过向这个 Chromium Bug 添加报告来引起人们对这个问题的关注(我已经添加了一个)。

此错误的当前状态是“未分类”;同样令人感兴趣的是与 Chrome SpeechSynthesis 相关的其他几个报告问题

于 2018-01-18T14:13:47.977 回答