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!!