Android の SpeechRecognizer クラスを使用して、Android で継続的な音声認識を実装しています。私の問題は、認識の開始 (インテントを起動してから onReadyForSpeech コールバックを取得するまでの時間) に長い時間がかかることがあることです。場合によっては1分以上!
誰もこの問題を知っていますか?
認識の開始:
Intent recognizerIntent = new Intent(
RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
SpeechRecognitionUtil.recognizeSpeechDirectly(context,
recognizerIntent, this, getSpeechRecognizer());
private SpeechRecognizer getSpeechRecognizer() {
if (recognizer == null) {
recognizer = SpeechRecognizer.createSpeechRecognizer(context);
}
return recognizer;
}
public static void recognizeSpeechDirectly(Context context,
Intent recognizerIntent, RecognitionListener listener,
SpeechRecognizer recognizer) {
// need to have a calling package for it to work
if (!recognizerIntent.hasExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE)) {
recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
"com.dummy");
}
recognizer.setRecognitionListener(listener);
recognizer.startListening(recognizerIntent);
}
認識を開始してから約 1 分後に、次のコールバックが呼び出されることがあります。
@Override
public void onReadyForSpeech(Bundle params) {}
ログ
06-24 20:18:28.266: I/WordActivator(26139): recognizeSpeechDirectly
06-24 20:18:51.091: D/WordActivator(26139): ready for speech Bundle[mParcelledData.dataSize=4]