当在 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/
我正在学习Rails,并阅读了关于乐观锁的内容。我已将类型为integer的lock_version列添加到我的articles表中。但现在每当我第一次尝试更新记录时,我都会收到StaleObjectError异常。这是我的迁移:classAddLockVersionToArticle当我尝试通过Rails控制台更新文章时:article=Article.first=>#我这样做:article.title="newtitle"article.save我明白了:(0.3ms)begintransaction(0.3ms)UPDATE"articles"SET"title"='dwdwd
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
我正在使用rubydaemongem。想知道如何向停止操作添加一些额外的步骤?希望我能检测到停止被调用,并向其添加一些额外的代码。任何人都知道我如何才能做到这一点? 最佳答案 查看守护程序gem代码,它似乎没有用于此目的的明显扩展点。但是,我想知道(在守护进程中)您是否可以捕获守护进程在发生“停止”时发送的KILL/TERM信号...?trap("TERM")do#executeyourextracodehereend或者你可以安装一个at_exit钩子(Hook):-at_exitdo#executeyourextracodehe
我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan
我刚刚在本地设置了我的第一个Jekyll项目。我已经让服务器运行,但我忘了使用自动标志。所以现在我想停止服务器并使用标志重新启动。但是,在我启动服务器后的命令行中,我没有得到新的提示,所以我无法输入任何新命令。我不太习惯命令行,所以我真的很感激知道我应该做什么!我正在使用MacOSX和terminal.app,如果有区别的话! 最佳答案 psaux|grepjekyll|awk'{print$2}'|xargskill-9 关于ruby-如何停止jekyll本地服务器,我们在StackO
最好用一个例子来解释:文件1.rb:deffooputs123end文件2.rb:classArequire'file1'endA.new.foo将给出错误“':调用了私有(private)方法'foo'”。我可以通过执行A.new.send("foo")来解决这个问题,但是有没有办法公开导入的方法?编辑:澄清一下,我没有混淆include和require。另外,我不能使用正常包含的原因(正如许多人正确指出的那样)是因为这是元编程设置的一部分。我需要允许用户在运行时添加功能;例如,他可以说“run-this-app--includefile1.rb”,应用程序的行为将根据他在file1
这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:RubyblockandunparenthesizedargumentsWhatisthedifferenceorvalueoftheseblockcodingstylesinRuby?我一直认为以下只是同一件事的两种表达方式:[1,2,3].collect{|i|i*2}[1,2,3].collectdo|i|i*2end但是我在我的一个ERB模板中发现了一些奇怪的行为,这两种语法似乎在做两件不同的事情。这段代码效果很好:m))}}%>但是当我将其重写为:m))endend%>...我最终得到了我的@men
我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文
我有一个用Rails3编写的站点。我的帖子模型有一个名为“内容”的文本列。在帖子面板中,html表单使用tinymce将“content”列设置为textarea字段。在首页,因为使用了tinymce,post.html.erb的代码需要用这样的原始方法来实现。.好的,现在如果我关闭浏览器javascript,这个文本区域可以在没有tinymce的情况下输入,也许用户会输入任何xss,比如alert('xss');.我的前台会显示那个警告框。我尝试sanitize(@post.content)在posts_controller中,但sanitize方法将相互过滤tinymce样式。例如
抱歉,如果重复(我没找到)这只是为了确认Ruby的运算符==始终执行相等比较。IE。a==b将a的值与b的值进行比较,而不是像Java那样比较它们是否指向内存中的同一个对象(对于后者,在Ruby中,您应该使用a.object_id==b.object_id).因此,在Ruby中将字符串值与==进行比较是安全的(而在Java中这样做并不安全)谢谢编辑:问题在于任何Ruby对象的默认==行为,因为它会误导Java-C-C++程序员假设a==b比较引用本身,而不是引用内容。无论如何,你可以检查这段代码,使用字符串one="hello"two="he"two编辑2。所以,在Ruby中,比较a=