第一條:我已經知道在使用此API進行連續語音識別流時,存在65秒的限制。我的目標不是延長這65秒。 我的應用程序: 它使用谷歌的流語音識別,我基於我的代碼在這個例子:https://github.com/GoogleCloudPlatform/android-docs-samples/tree/master/speech 該應用程序工作得很好,我得到ASR結果,並顯示在屏幕上,因爲用戶說話,Siri風格。Android上的Google語音雲錯誤:OUT_OF_RANGE:超過了65秒的最大允許流持續時間
問題: 我的問題來敲打ASR按鈕上我的應用程序數,停止和重新啓動ASR SpeechService後是有點靠不住。最終,我得到這個錯誤:
io.grpc.StatusRuntimeException: OUT_OF_RANGE: Exceeded maximum allowed stream duration of 65 seconds.
...好像SpeechService在多次停止,重新啓動循環後沒有正常關閉。
我的代碼: 我停止我這樣的代碼,我懷疑的地方在我StopStreamingASR方法的實現問題。我在一個單獨的線程中運行它,因爲我相信它可以提高性能(希望我沒有錯):
static void StopStreamingASR(){
loge("stopGoogleASR_API");
//stopMicGlow();
//Run on separate thread to keep UI thread light.
Thread thread = new Thread() {
@Override
public void run() {
if(mSpeechService!=null) {
mSpeechService.finishRecognizing();
stopVoiceRecorder();
// Stop Cloud Speech API
if(mServiceConnection!=null) {
try {
app.loge("CAUTION, attempting to stop service");
try {
mSpeechService.removeListener(mSpeechServiceListener);
//original mActivity.unbindService(mServiceConnection);
app.ctx.unbindService(mServiceConnection);
mSpeechService = null;
}
catch(Exception e){
app.loge("Service Shutdown exception: "+e);
}
}
catch(Exception e){
app.loge("CAUTION, attempting to stop service FAILED: "+e.toString());
}
}
}
}
};
thread.start();
}
private static void stopVoiceRecorder() {
loge("stopVoiceRecorder");
if (mVoiceRecorder != null) {
mVoiceRecorder.stop();
mVoiceRecorder = null;
}
}
我是否正確停止服務,以避免65秒的限制錯誤?任何建議?
我我遇到了同樣的問題。你最終找到了什麼? – Frank
@Frank還沒有!我正在解決一些更簡單的錯誤,同時我想出了這個65秒的問題的一些想法。讓我知道如果你發現了什麼,我也會! – Josh