我知道这个问题已被提出但我似乎无法找到任何有答案的人,所以我只是在推动我的运气
当我使用Google Speech to Text API时,我正在尝试恢复音频文件。到目前为止,我已经成功,但我只能通过语音对话框来完成。我正在尝试在没有对话框的情况下做同样的事情。
基本上,我正在尝试在“onResults”中获取“Bundle Results”的URI,以便我可以获取音频文件。
我正在尝试这样做(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 && 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();
有可能吗?或者至少,是否可以使对话框不可见?非常感谢。