当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
调用移至其onclick
:
https ://jsfiddle.net/vcmxkwd3/
错误仍在发生!: