android audio speech-recognition recognizer-intent

Obtener URI del audio guardado en OnResults(resultado del paquete) en Speech RecognitionListener android



speech-recognition recognizer-intent (1)

Seguí casi todos los enlaces para guardar el audio y convertirlo en texto, pero no encontré ninguna manera de cómo puedo obtener la Url de audio en el Escuchador de reconocimiento personalizado.

  1. grabar / guardar audio desde el intento de reconocimiento de voz

  2. Cómo usar la voz de Androids en texto con archivo de muestra de audio

y muchos otros también ... URL de audio que obtuve aquí con la ayuda de RecognizerIntent

@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; } } }

Quiero obtenerlo aquí porque no quiero usar el diálogo de Google. Quiero personalizarlo sin diálogo

@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(); } }

Pero no puedo obtener la URL de este paquete de resultados. Tengo dos consultas:

y muchos otros también. No es la pregunta duplicada que las personas ya han hecho esta pregunta, pero la solución que se les da es usar

startActivityForResult

y luego obtener la url de audio en el fragmento de código mencionado anteriormente, pero quiero obtenerlo en

onResults (Resultados del paquete)

Por favor, pregúnteme si tiene alguna duda. Quiero usarlo en fragmento. ¡¡Gracias por adelantado!!.


Actualmente estoy haciendo la parte STT. Hice una pregunta y puedes verificar la configuración de mi código, creo que puedes encontrar útil este código.

/** * Receiving speech input * */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQUEST_SPEECH_TO_TEXT: { if (resultCode == RESULT_OK && null != data) { ... // the resulting text is in the getExtras: Bundle bundle = data.getExtras(); ArrayList<String> matches = bundle.getStringArrayList(RecognizerIntent.EXTRA_RESULTS); // Get text only if(...) { contentText = matches.get(0); tvContent.setText(contentText); } // Save audio to file else { Uri audioUri = data.getData(); ContentResolver contentResolver = getContentResolver(); try { final File recordFile = new File(fileName); InputStream inputStream = contentResolver.openInputStream(audioUri); OutputStream outputStream = new FileOutputStream(recordFile); // Transfer bytes from in to out byte[] buf = new byte[1024]; int len; while ((len = inputStream.read(buf)) > 0) { outputStream.write(buf, 0, len); } inputStream.close(); outputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } break; } } }

entonces, "nombre de archivo" es lo que necesitas y lo que obtienes. Espero que esto pueda ayudar.