Android распознавание речи
Я пытаюсь создать приложение, которое просто обнаруживает конкретные фразы, которые пользователь может произнести на устройстве, и действие будет что-то делать в зависимости от того, что сказал пользователь. Мне было трудно найти учебники по этой конкретной вещи, поэтому, пожалуйста, помогите мне. До сих пор я создал кнопку, которая запускает Recognizer Intent, и у меня есть onActivityResult, который, я надеюсь, может определить, что говорит пользователь, а затем вызвать определенные функции в зависимости от фразы, произнесенной пользователем.
public void OnClick_Speed_Detector(View v)
{
Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i.putExtra(RecognizerIntent.EXTRA_PROMPT, "speak up");
startActivityForResult(i, 1);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == 1 && resultCode == RESULT_OK)
{
//if user says the phrase "poptarts"
//call function poptart
//if user says the phrase "banana"
//call function banana
Toast.makeText(getApplicationContext(), "sound detected", Toast.LENGTH_LONG).show();
}
}
2 ответа
Посмотрите на это, ваш код должен работать так:
public void OnClick_Speed_Detector(View v) {
Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i.putExtra(RecognizerIntent.EXTRA_PROMPT, "speak up");
startActivityForResult(i, 1);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1 && resultCode == RESULT_OK) {
//if user says the phrase "poptarts"
//call function poptart
//if user says the phrase "banana"
//call function banana
ArrayList < String > result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
ArrayList < String > result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if (((result).equals(t1))) {
Intent intent = new Intent(this, * * ClassToOpen * * .class);
startActivity(intent);
} else if (((result).equals(t2))) {
Intent intent = new Intent(this, * * ClassToOpen * * .class);
startActivity(intent);
}
Toast.makeText(getApplicationContext(), "sound detected", Toast.LENGTH_LONG).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
Поместите желаемую строку как t1 и t2.
Надеюсь, что это поможет, проголосуйте или примите, если это так.
Это не то, как вы должны его использовать. Это не похоже на другие виды деятельности. Вы даже не создали SpeechRecognizer. Пожалуйста, обратитесь к документации SpeechRecognizer и посмотрите метод createSpeechRecognizer(). Вы также увидите различные результаты для этой деятельности. Например, onError() onResults() onEndOfSpeech() и т. Д. Сначала вы должны увидеть пример. Мне жаль, что я не смог дать вам ответ, который решит вашу проблему, но ваша проблема в том, что вы на неправильном пути.