提高Android音频录制质量?

23

有没有办法以高质量记录音频?

还有,如何读取用户正在说什么的信息?在音频录制应用程序中,您可以看到这样的指示器(我不知道它的正确名称)。

3个回答

31

目前,Android上音频质量差的一个重要原因是MediaRecorder类使用的编解码器(AMR-NB编解码器)。但是,您可以通过AudioRecord类获得对未压缩音频的访问,并将其直接记录到文件中。

Rehearsal Assistant应用程序通过这种方式将未压缩的音频保存到WAV文件中-请查看RehearsalAudioRecorder类源代码。

RehearsalAudioRecord类还提供了一个getMaxAmplitude方法,您可以使用该方法检测自上次调用该方法以来的最大音频级别(MediaRecorder也提供此方法)。


你好,Stjepan Rajko,在Rehearsal Assistant应用程序中,我找不到org.urbanstew.VolumeEnvelopeView,请问你知道它在哪里吗? - pengwang
Android中还有其他编解码器可用,它们怎么样呢?http://developer.android.com/reference/android/media/MediaRecorder.AudioEncoder.html#DEFAULT - Gaurav Agarwal

18

用于录制和监控: 您可以使用声音记录器(activity)。这是一段代码片段:

Intent recordIntent = new Intent(
                MediaStore.Audio.Media.RECORD_SOUND_ACTION);
            startActivityForResult(recordIntent, REQUEST_CODE_RECORD);

要完美地记录包括输入监视器的音频工作示例,请下载开源Ringdroid项目:https://github.com/google/ringdroid

查看屏幕截图,您将看到监视器。

要使音频更高质量,您需要更好的麦克风。内置麦克风只能捕捉到很少的声音(效果不佳)。再次查看Ringdroid项目,从中获取相关信息。此时,您可以实现一些归一化和放大处理程序来改善声音。


REQUEST_CODE_RECORD 是什么? - Nikunj Patel
我使用的本地常量,用于确定我从onActivityResult()中的哪个请求获取了哪个结果。 - Donn Felker

0

我给你一个简单的答案。

  1. 对于采样率,关于音质,48000和16000几乎相同。
  2. 对于比特率,关于音质,96Kbps比16Kbps好得多。
  3. 你可以尝试立体声(channelCount = 2),但只需做出小的更改。

因此,对于安卓手机,只需将音频比特率设置得更高,您就会获得更好的音质。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接