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

问题描述 投票:0回答:2

当使用 Web Speech API 中的

speak
功能时,在 Chrome 中,说话会在几秒钟后突然停止,在给出的文本中间,在一个看似随机的位置(没有到达结尾)。 这只发生在 Chrome 中(在 Firefox 上运行良好),在两台不同的计算机/系统上进行了测试。

看看这个 jsfiddle 来看看/听一下: https://jsfiddle.net/fv9ochpq/

您可以看到

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

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

编辑:它似乎在大约 15 秒后停止。每 14 秒添加一个间隔运行

.resume()
似乎可以“解决”这个问题。请参阅:https://jsfiddle.net/fv9ochpq/1/
但这是一个黑客行为。

2019 年 8 月更新 自 2018 年 12 月以来 - Chrome 不允许在没有用户交互的情况下触发语音,这是更新的 jsfiddle,添加了按钮,实际的

speak
调用移至其
onclick
https://jsfiddle.net/vcmxkwd3/

错误仍在发生! :

javascript google-chrome text-to-speech speech-synthesis webspeech-api
2个回答
3
投票

您询问到哪里报告此问题。 对于程序员来说,我认为这个论坛是最好的地方。 事实上,在Chrome Speech Synthesis with long text 上已经发生了大量的讨论。 但我相信其中大部分错误地关注了 SpeechSynthesis 的“允许的单词数”,而不是“持续时间”。 事实上,在我看来,你的解决方案是最实用的。 Google 有一个错误报告工具,该问题已报告为 speechSynthesis 在没有警告的情况下长文本失败并阻止 API。 目前共有 3 份报告,给予其 3 颗“星”。 我们也许可以通过向这个 Chromium Bug 添加报告来引起人们对这个问题的关注(我已经添加了一个)。

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

尝试设置一个localService为true的SpeechSynthesisVoice。这对我有用。我猜限制来自于远程服务。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.