#java #android
#java #Android
Вопрос:
Я знаю, что этот вопрос уже задавался, но, похоже, я не могу найти никого с ответами, поэтому я просто испытываю удачу
Я пытаюсь вернуть аудиофайл, когда использую API преобразования речи в текст Google. До сих пор мне это удавалось, но я смог сделать это только с помощью диалогового окна речи. Я пытаюсь сделать то же самое сейчас без диалогового окна.
По сути, я пытаюсь получить URI «Результатов пакета» в «onResults», чтобы я мог получить аудиофайл.
Я пытаюсь это сделать (REQ_CODE_SPEECH_INPUT равен 100):
private void promptSpeechInput() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
getString(R.string.speech_prompt));
// for getting audio file returned
intent.putExtra("android.speech.extra.GET_AUDIO_FORMAT", "audio/AMR");
intent.putExtra("android.speech.extra.GET_AUDIO", true);
startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQ_CODE_SPEECH_INPUT: {
if (resultCode == RESULT_OK amp;amp; null != data) {
Bundle bundle = data.getExtras();
ArrayList<String> result_text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
ArrayList<String> results_audio = bundle.getStringArrayList(RecognizerIntent.EXTRA_RESULTS);
txtSpeechInput.setText(result_text.get(0));
Uri audioUri = data.getData();
ContentResolver contentResolver = getContentResolver();
}
}
}
}
Здесь:
speech = SpeechRecognizer.createSpeechRecognizer(this);
speech.setRecognitionListener(this);
recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE,
"en-us");
recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
this.getPackageName());
// for getting audio file returned
recognizerIntent.putExtra("android.speech.extra.GET_AUDIO_FORMAT", "audio/AMR");
recognizerIntent.putExtra("android.speech.extra.GET_AUDIO", true);
@Override
public void onResults(Bundle results) {
//Bundle bundle = data.getExtras();
ArrayList<String> result_text = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
//ArrayList<String> results_audio = results.getStringArrayList(RecognizerIntent.EXTRA_RESULTS);
returnedText.setText(result_text.get(0));
Uri audioUri = recognizerIntent.getExtras();
ContentResolver contentResolver = getContentResolver();
Возможно ли это? Или, по крайней мере, возможно ли сделать диалоговое окно невидимым? Большое спасибо.
Комментарии:
1. вы нашли решение?