RecognizerIntent とデフォルトの Android Wear UI を使用してキーワード音声認識を実装したいと考えています。
問題は、アンドロイド ウェア ウォッチがリッスンしているデフォルトの言語を変更できないことです。認識エラーのために英単語のみを認識したいのですが、電話のデフォルト言語を変更したくありません。私はこのようなことをしています:
private void displaySpeechRecognizer() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
startActivityForResult(intent, SPEECH_REQUEST_CODE);
}
@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);
mTextView.setText(spokenText);
if (spokenText.contains("KeyWord")) {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
long[] vibrationPattern = {0, 500, 50, 300};
//-1 - don't repeat
final int indexInPatternToRepeat = -1;
vibrator.vibrate(vibrationPattern, indexInPatternToRepeat);
}
// Do something with spokenText
}
super.onActivityResult(requestCode, resultCode, data);
}
このソリューションは機能しますが、英語の結果も得られません。音声認識はandroid wear watchで行います。