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 音视频开发:使用AudioRecord采集音频PCM并保存