22

startListeningオブジェクトのメソッドを呼び出すとSpeechRecognizer、音声認識機能が音声のリッスンを開始します。特定のキーワードの発話を待機するサービスを作成したいのですが、ユーザーがこのキーワードを発声し、音声認識機能がこのキーワードを検出すると、サービスはユーザーの音声コマンドを受信できるようになります。

この目的のために、新しいSpeechRecognizerインスタンス化の後で、そのメソッドを呼び出す必要がありますstartListening。音声認識機能を無期限に聞き続けることはできますか?

4

2 に答える 2

15

Android Speech recognizer、インテント追加データを介してカスタマイズできます。Androidのドキュメントを参照してください。

public static final String EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS

入力が完了したと見なすために、スピーチの聞き取りを停止してからかかる時間。[...]

public static final String EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS 以降:APIレベル8

発話の最小の長さ。この時間の前に録音を停止することはありません。[...]

public static final String EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

スピーチの聞き取りを停止してから、入力が完了した可能性があると見なすのにかかる時間。[...]

EXTRA_LANGUAGE_MODELをwebsearchに設定して、 関連する単語のみをキャプチャします。

于 2012-04-16T23:26:03.857 に答える
1

onErrorこのようなRecognitionListenerインターフェースを実装できます。それはあなたの活動を継続的に聞いています。

@Override
public void onError(int error) {
    String errorMessage = getErrorText(error);
    Log.i(Constants.TAG, "FAILED " + errorMessage);
    speech.destroy();
    speech = null;
    StartListening();
}

private void StartListening() {
    speech = SpeechRecognizer.createSpeechRecognizer(this);
    speech.setRecognitionListener(this);
    recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en");
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName());
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);

    //if setting.SpeechEnable
    speech.startListening(recognizerIntent);
}
于 2018-06-06T17:49:44.080 に答える