Android: преобразование речи в текст — URI из пакета «onResults»

#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. вы нашли решение?