2013-10-11 57 views
1

我有android的Speech To Text API來對話機說話並將其轉換爲文本。默認情況下,如果停止與麥克風講話,則API假定用戶已完成講話並從輸入講話中返回文本。在Android的語音識別器中配置話語的長度和暫停

對於我的應用程序,用戶可能在她的連續句子之間有很長的停頓。我如何才能將Android的語音配置爲文本API,以便只在發言者在句子之間短暫停頓時立即提出並且不這樣做時才考慮發言結束?謝謝!

這是我當前實現,其簡單地轉換語音儘快文本作爲用戶採取句子之間一個小小的停頓:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    switch (requestCode) { 
    case RESULT_SPEECH: { 
     if (resultCode == RESULT_OK && null != data) { 

      ArrayList<String> text = data 
        .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 

      txtText.setText(text.get(0)); 
     } 
     break; 
    } 

    } 
} 
+0

[語音識別在幾秒鐘後停止監聽]的可能的重複(http://stackoverflow.com/questions/13670378/voice-recognition-stops-listening-after-a-few-seconds) –

+0

請不要關閉這個問題。這顯然不同於http://stackoverflow.com/questions/13670378/voice-recognition-stops-listening-after-a-few-seconds並寫得更好。 – Kaarel

回答

1

的API有3個額外爲

但請注意,API還說「取決於識別器的實現,這些值可能沒有任何作用」,所以你只需要測試你正在使用的實現,如果它們有任何作用。 (我沒有自己做過這個測試,所以如果你在這個答案中添加評論來報告你的測試結果會很好。)

1

在Android 4.1之前(或Google搜索/ Now應用程序的用戶),這將會爲你工作:

int someValue = 5; 
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, Long.valueOf(someValue * 1000L)); 

不幸的是更高版本不再對此有何反應參數,一個莫大的恥辱,因爲它使冗長的筆記或電子郵件撰寫不可能....

我把這個問題給他們的注意力。