Holen Sie sich URI von gespeicherten Audio in OnResults (Bundle-Ergebnis) in Speech RecognitionListener android

Ich bin fast jedem Link gefolgt, um Audio zu speichern und in Text umzuwandeln, aber ich habe keine Möglichkeit gefunden, wie ich eine Audio-URL in einem benutzerdefinierten Erkennungs-Listener erhalten kann.

Audio von der Absicht der Spracherkennung aufnehmen / speichern

Wie verwendet man Androids Rede, um Text mit einer Audio-Beispieldatei zu versehen

und viele andere auch .... Audio-URL, die ich hier mit Hilfe von RecognizerIntent bekommen habe

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (requestCode) {
            case REQ_CODE_SPEECH_INPUT: {
                if (resultCode == getActivity().RESULT_OK && null != data) {

                    ArrayList<String> result = data
                            .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                    txtSpeechInput.setText(result.get(0));
                    Uri audioUri = data.getData();
                    ContentResolver contentResolver = getActivity().getContentResolver();
                    try {
                        InputStream filestream = contentResolver.openInputStream(audioUri);
                        copyInputStreamToFile(filestream, new File(Environment.getExternalStorageDirectory()+ "/recording.amr"));
                        Log.e("audio", "uri= "+ audioUri);
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    }
                }

                break;
            }

        }
    }

Ich möchte es hier herunterladen, da ich den Google-Dialog nicht verwenden möchte. Ich möchte ihn ohne Dialog anpassen.

 @Override
    public void onResults(Bundle results) {
        String str = new String();
        Log.d("testing1", "onResults " + results);
        data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);

        str=data.get(0)+"";
        result_txt.setText(str);
        speech.stopListening();

        if(speech!=null){
            speech.destroy();
        }
    }

Aber ich kann keine URL aus diesen Bundle-Ergebnissen abrufen. Ich habe zwei Fragen:

Bitte lassen Sie mich wissen, Hoe kann ich Audio gespeichert URI in Bundles erreichenWenn ich die Sprachausgabe an den Text anpasse Es lauscht lange Genauso wie RecognitionIntent, wenn in 2-3 Sekunden keine Audiodaten aufgezeichnet werden, heißt es, dass kein Ton gefunden wurde. Dasselbe möchte ich mit der benutzerdefinierten Sprachausgabe tun, da es lange Zeit lauscht . Ich bin diesen Links für die zweite Frage gefolgt:

Android - Spracherkennung begrenzt die Hörzeit

Voice Recognition hört nach ein paar Sekunden auf zu hören

und viele andere auch. Es ist nicht die doppelte Frage, die die Leute bereits gestellt haben, sondern die Lösung, die ihnen gegeben wurde, ist die Verwendung von

startActivityForResult

und dann die Audio-URL in oben genannten Code-Schnipsel bekommen, aber ich möchte es in @ bekomm

onResults (Bundle-Ergebnisse)

Bitte fragen Sie mich, ob Zweifel bestehen. Ich möchte es in Fragment verwenden. Danke im Voraus!!

Antworten auf die Frage(0)

Ihre Antwort auf die Frage