Android:录音和保存音频

Posted

技术标签:

【中文标题】Android:录音和保存音频【英文标题】:Android: Voice Recording and saving audio 【发布时间】:2012-06-09 22:40:27 【问题描述】:

我正在开发一个应用程序,它将记录用户的声音并将文件保存在 SD 卡上,然后允许用户再次收听音频。

我能够允许用户使用 RecognizerIntent 录制他的声音,但我不知道如何保存音频文件并允许用户听到音频。如果有人可以帮助我,我将不胜感激。我在下面显示了我的代码:

    // Setting up the onClickListener for Audio Button
    attachVoice = (Button) findViewById(R.id.AttachVoice_questionandanswer);
    attachVoice.setOnClickListener(new OnClickListener() 
        public void onClick(View v) 
        Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        voiceIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        voiceIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Please Speak");
        startActivityForResult(voiceIntent, VOICE_REQUEST);
        
    );

protected void onActivityResult(int requestCode, int resultCode, Intent data) 


  if(requestCode == VOICE_REQUEST && resultCode == RESULT_OK)





【问题讨论】:

你想录语音还是使用识别api? 我要录音。使用 RecognizerIntent 是不可能的吗? 不可能的识别器意图是文本到语音识别 这完全是另一个功能 不要重复提问!你昨天在***.com/questions/10900697/…问的问题基本相同 【参考方案1】:

android Developer Documentation. 中有一个如何使用 MediaRecorder 进行音频捕获的示例

我建议将文件保存在 SD 卡上,然后让您的图库代码检查 SD 卡以查看要显示的文件。您可以使用Environment.getExternalStorageDirectory() 方法获取 SD 卡的目录。最好将文件保存在 SD 卡根目录的子目录中。

确保为您的应用程序提供所需的Permissions。至少它需要RECORD_AUDIO 和WRITE_EXTERNAL_STORAGE。

您还必须查看这些教程:

http://www.androiddevblog.net/android/android-audio-recording-part-1

http://www.androiddevblog.net/android/android-audio-recording-part-2

【讨论】:

是否可以使用 RecognizerIntent 做到这一点?我想使用它,因为它有更好的 UI 并且看起来更好 没有识别器意图用于语音识别!你说话,手机将你的语音识别为一个字符序列,然后为你获取与你所说的内容相对应的数据。 MediaRecorder 似乎在这里不起作用,因为它在使用时会在语音识别中产生错误。【参考方案2】:

如果您真的想通过语音识别 API 录制音频,那么您可以使用 RecognitionService.Callback,它有一个方法

void bufferReceived(byte[] buffer)

这使您可以在录制和识别语音时访问录制的音频缓冲区。 (虽然没有提供有关采样率的信息。)然后您可以将获得的缓冲区保存到文件中以供以后播放。我认为键盘应用程序使用此调用来显示录制语音的波形。您必须自己实现 UI。

RecognizerIntent.ACTION_RECOGNIZE_SPEECH 只是返回一组没有任何音频的单词/短语。

【讨论】:

bufferReceived 方法上的docs 确实指定了字节顺序,但说采样率取决于实现。 另外这个方法并不是每个设备都调用的,你不能依赖它。在那些调用它的设备上,数据的采样率通常是 8KHz。

以上是关于Android:录音和保存音频的主要内容,如果未能解决你的问题,请参考以下文章

通过Android录音进行简单音频分析

Android 音视频开发:使用AudioRecord采集音频PCM并保存

Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能

Android 音频录音与播放

Android 开发 如何实现高质量的录音

Android : 带定时器的录音机