2016-08-13 95 views
0

我正在研究一個android應用程序,它提供了連續的語音識別。針對EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS的黑客攻擊?

一切工作正常,除了在最後一個詞發音約6秒後的沉默延遲。

我已經看到這是Android中的一個已知錯誤,但是有沒有其他方法/黑客/解決方法?

Intent intent = new Intent (RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 

intent.putExtra (RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, Locale.getDefault()); 
intent.putExtra (RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); 
intent.putExtra (RecognizerIntent.EXTRA_CONFIDENCE_SCORES, true); 
intent.putExtra (RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 0); 
intent.putExtra (RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 0); 
intent.putExtra (RecognizerIntent.EXTRA_CALLING_PACKAGE, getApplication().getPackageName()); 

speechRecognizer.startListening (intent); 

所以基本上根本沒有考慮到RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS

有什麼辦法解決這個問題嗎?或替代API? (我已經使用PocketSphinx,但不能使它在字典外的句子和單詞上工作)。

+0

[谷歌語音識別超時(http://stackoverflow.com/questions/38150312/google-speech-recognition-timeout) – brandall

回答

1

我建議嘗試這樣的:

mNoSpeechCountDown = new CountDownTimer(COUNT, COUNT) { 

     @Override 
     public void onTick(long l) { 

     } 

     @Override 
     public void onFinish() { 
      Log.v(TAG, "CountDown Finished"); 
      processResults(mResult + ' ' + mPartialResult); 
      mListener.restartListener(); 

     } 
    }; 
    mNoSpeechCountDown.start(); 

} 

並重新啓動每個onPartial倒計時,當然這需要你實現自己的RecognitionListener。

ContinuousRecognizer implements RecognitionListener 

    08-13 15:50:22.680 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:22.680 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the 
08-13 15:50:22.689 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:22.689 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the 
08-13 15:50:22.765 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:22.765 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the 
08-13 15:50:22.833 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:22.833 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the 
08-13 15:50:22.970 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:22.970 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime 
08-13 15:50:23.155 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:23.155 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime 
08-13 15:50:23.327 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:23.327 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime 
08-13 15:50:23.412 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:23.412 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime series 
08-13 15:50:23.734 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:23.734 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime series should I 
08-13 15:50:23.953 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:23.953 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime series should I 
08-13 15:50:24.523 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:24.523 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime series should I want me Direct 
08-13 15:50:24.754 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:24.754 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime series should I 
08-13 15:50:25.350 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:25.351 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime series should I will 
08-13 15:50:25.505 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:25.505 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime series should I 
08-13 15:50:25.835 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:25.837 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime series should I 
08-13 15:50:26.046 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:26.047 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime series should I want you to 
08-13 15:50:26.365 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: OnPartial 
08-13 15:50:26.365 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: by the way for the lifetime series should I want you to direct 
08-13 15:50:30.865 30790-30790/com.praktikum.bp.myambient V/ContinuousRecognizer: CountDown Finished 
+0

由於可能的重複。然而,不能保證'onPartial'返回的東西..實際上它從來沒有爲我做過。 – Copernic

+0

recognitionizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,1); recognitionizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS,true);它總是爲我這樣的Android版本運行嗎? – ketrox

+0

從文檔:'服務器可能會忽略部分或全部情況下部分 *結果的請求.' – Copernic