web-dev-qa-db-ja.com

「OKGoogle」のようなフレーズで音声による音声認識を開始しますか?

音声コマンドを使用して特定の機能を実行するアプリを作成しています。私はいくつかのコードを ここ から動作させました

private static final int SPEECH_REQUEST_CODE = 0;

// Create an intent that can start the Speech Recognizer activity
private void displaySpeechRecognizer() {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
// Start the activity, the intent will be populated with the speech text
    startActivityForResult(intent, SPEECH_REQUEST_CODE);
}

// This callback is invoked when the Speech Recognizer returns.
// This is where you process the intent and extract the speech text from the intent.
@Override
protected void onActivityResult(int requestCode, int resultCode,
        Intent data) {
    if (requestCode == SPEECH_REQUEST_CODE && resultCode == RESULT_OK) {
        List<String> results = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);
        String spokenText = results.get(0);
        // Do something with spokenText
    }
    super.onActivityResult(requestCode, resultCode, data);
}

ただし、このアプローチはボタンをクリックしてアクティブにする必要があります。音声コマンドを使用して音声認識機能を起動する方法もありますか? 「OKGoogle」とだけ言うことができるGoogleNowのように、音声認識アクティビティが開き、コマンドをリッスンしますか?

ありがとう。

15
ank

継続的な音声認識のためのサービスを作成する必要があります。そして、音声として取得した入力に基づいて、トリガーフレーズを検出し、アクションを実行します。

これはメモリを大量に消費する可能性があり、適切な時間と画面でサービスを開始および停止して最適化する必要があります。

この質問 に対する受け入れられた答えは、同様のことを達成するための手段を提供します。