使用Android内置语音识别时保存音频文件,可能是假人吗?

时间:2017-01-08 15:10:18

标签: android audio speech-recognition

我已经查看了this问题的答案,但作为我对Android编程的新手,它对我的​​帮助并不大。如果有人能以愚蠢的方式帮助我,我将非常感激。

因此,我想让用户使用键盘或使用内置语音识别(显示在键盘中)来输入数据。但是,如果用户使用语音识别,我如何同时保存音频文件

(我想将音频文件保存在数据库中,但我想我应该单独研究这个问题。现在它已经足够以某种方式访问​​音频文件了。)

所以在我的MainActivity()中,我有一个fab按钮来向数据库添加一个条目:

fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(MainActivity.this, AddEditActivity.class);
                i.putExtra("EXTRA_ENTRY_ID", "null");
                startActivity(i);
            }

这会将您发送到AddEditActivity(),其中包含一个填写表单,可以在其中进行语音识别(除非用户选择仅使用键盘进行编写)。

那么可以使用链接问题中的代码(见下文)吗?如果是这样,我该把它放在哪里,如何在我的项目中应用它?

public void startSpeechRecognition() {
   // Fire an intent to start the speech recognition activity.
   Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
   // secret parameters that when added provide audio url in the result
   intent.putExtra("android.speech.extra.GET_AUDIO_FORMAT", "audio/AMR");
   intent.putExtra("android.speech.extra.GET_AUDIO", true);

   startActivityForResult(intent, "<some code you choose>");
}

// handle result of speech recognition
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // the resulting text is in the getExtras:
    Bundle bundle = data.getExtras();
    ArrayList<String> matches = bundle.getStringArrayList(RecognizerIntent.EXTRA_RESULTS)
    // the recording url is in getData:
    Uri audioUri = data.getData();
    ContentResolver contentResolver = getContentResolver();
    InputStream filestream = contentResolver.openInputStream(audioUri);
    // TODO: read audio file from inputstream
}

使用自定义Android键盘here时,还有语音识别代码,但我不知道如何调整它以保存音频数据。

0 个答案:

没有答案