Android OnBeginingOffspeech()是本地触发的还是由服务器触发的?

Android OnBeginingOffspeech()是本地触发的还是由服务器触发的?,android,speech-recognition,Android,Speech Recognition,文件说明: [当]用户开始说话时调用 但它没有说明这是麦克风识别(即本地)事件还是服务器识别事件(即需要谷歌语音服务器确认语音开始) 我试图在中找到线索,但在某个时候,我在服务、回调、接口之间迷失了方向。。。这不是一个简单的who调用who序列 您是否知道是在本地执行(例如,本地电路检测RMS更改),还是必须传输到Google服务器并获取其“是/否” 我知道语音识别本身会传送到谷歌的服务器上,但它也会这样做吗?检测语音的开始和结束必须在本地执行,因为系统基本上必须“监听”以确定这些事件何时发生。

文件说明:

[当]用户开始说话时调用

但它没有说明这是麦克风识别(即本地)事件还是服务器识别事件(即需要谷歌语音服务器确认语音开始)

我试图在中找到线索,但在某个时候,我在服务、回调、接口之间迷失了方向。。。这不是一个简单的who调用who序列

您是否知道是在本地执行(例如,本地电路检测RMS更改),还是必须传输到Google服务器并获取其“是/否”


我知道语音识别本身会传送到谷歌的服务器上,但它也会这样做吗?

检测语音的开始和结束必须在本地执行,因为系统基本上必须“监听”以确定这些事件何时发生。使用远程服务无法有效地执行此操作。在语音识别中寻找语音的开头和结尾被称为端点指向,并使用复杂的信号处理来确定这一点。对于Google speech,客户端设备确定语音开始和开始录制的时间,然后确定语音结束的时间以停止录制。在某些系统上,结束指针还负责消除录音两端的过度静音。也可以通过用户所做的选择触发讲话开始,例如单击web浏览器上的麦克风图标。然后将录制的音频发送到谷歌服务器进行分析,并返回结果。有关谷歌非官方API及其处理音频的更多详细信息,请查看。

有趣的问题。出于好奇,我做了一个小测试。在一个示例应用程序中,我在
onReadyForSpeech()中禁用了WiFi:

观察发生了什么。果不其然,
onbeginingofspeech()
会在话筒接收到最轻微的噪音时立即调用。它甚至不必是语言

因此@KevinJunghans的结论是正确的:
onbeginingofspeech()
不是由谷歌服务器决定或发起的

WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
wifiManager.setWifiEnabled(false);