谷歌的网络语音服务器请求是否限制了我,是否有修复程序?



我一直在编写一个扩展程序,允许用户发出语音命令来控制他们的浏览器,事情进展顺利,直到我遇到灾难性的问题。它是这样的:

语音识别对象处于连续模式,每当触发onerror: 'no-speech'onend事件时,它都会重新启动。这样,扩展就会不断等待接受输入,并在发出命令时做出反应,即使在静默 5 分钟后也是如此。

经过几天的开发,今天我达到了在实际使用中测试它的地步,我发现过了一段时间(并且我没有任何变化),我的onend事件开始不断触发。例如,查看控制台,我会看到在三秒钟内发出了 18,000 个请求,所有请求都立即被拒绝,从而触发onend并重新启动请求。

我知道最好在

发送请求之前等待声音,或者在不需要远程服务器的情况下具有本地语音识别功能,但目前的 API 不允许这样做。

我的怀疑正确吗?我的请求是否受到限制?

我的怀疑正确吗?我的请求是否受到限制?

是的

我知道最好在

发送请求之前等待声音,或者在不需要远程服务器的情况下具有本地语音识别功能,但目前的 API 不允许这样做。

要隐藏请求的IP来源,您可以使用像Tor这样的匿名器网络,尽管它不会很快。

假设Google将花费资源来处理系统上录制的所有音频是幼稚的。在应用程序开发中,最好依靠至少提供一些保证的API。它可以是商业API或开源实现,如CMUSphinx。

使用 CMUSphinx,您还可以正确实现命令关键字检测,并通过指定命令的语法来提高准确性。

您还可以使用语音活动检测 (VAD) 算法来检测用户何时在说话。这可以通过设置音量阈值或频率阈值来完成(例如,人类语音通常小于 400hz)。这样,除非符合这些条件,否则您就不会向Google发送无用的请求。我不建议使用 Tor,因为这会显着增加延迟。CMUSphinx可能是最好的本地系统选项,但如果仍然想使用基于Web的服务,我建议使用语音活动检测算法或寻找其他基于Web的软件。

最新更新