我正試圖通過文本到語音和Android的語音識別活動實現與用戶對話的Android應用程序。Android語音識別活動的啓動延遲
以下代碼啓動活性,如記錄在tutorial:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
的問題是酶活性0.5到1秒之間的某個時候需要開始記錄用戶的語音。這看起來不是很多,但這通常意味着用戶在語音識別活動開始錄製之前已經開始講話,這意味着應用程序將錯過用戶說的部分內容。
是否有避免這種延遲的好方法,以便在文本到語音完成發言後立即開始語音識別?
可能性我認爲:
- 預緊在Android上的活動,並暫停其上的開始。我不認爲有任何方法可以做到這一點,除非我有能力更改活動內的代碼,但我並不認爲它不屬於Android源代碼。
- 在文本到語音完成之前開始活動的呼叫的時間。這並不理想,因爲它依賴於未定義的行爲:語音識別活動需要加載多長時間,這可能因系統而異。此外,它需要知道文本到語音將花費多長時間來說出一個短語,而不是text-to-speech API的一部分。
- 開始語音識別活動,然後暫停正在運行的線程。絕對不推薦。
- 從我的活動中的語音識別活動中未在API中公開的調用方法。我不知道如何做到這一點,我不確定是否有可能。
- 實現我自己的語音識別活動版本。這就是我現在正在做的事情,但這無論如何也不是微不足道的,我寧願不必用Java編寫我自己的FLAC編碼器,並使用Google的服務器在未經許可的情況下進行語音識別。
如果您有任何其他想法,可以如何正確地完成或解決任何上述問題將是可怕的。
是啊,這絕對是一個可行的解決方案,但它並不是非常適合短表的答案,如「是」,「否」或「取消」,其中用戶最在意的速度。 – sskates