Android获得麦克风现场的振幅将返回0大多数情况

时间:2014-03-15 13:30:47

标签: android android-mediarecorder android-audiorecord

我的应用程序允许用户说话,我试图在用户说话时实时构建振幅图。我这样做是通过使用AsyncTask来每隔x毫秒对MediaRecorder或AudioRecorder(我试过它们)进行采样。即使我每隔毫秒,10毫秒或100毫秒采样,大多数返回值都是0,尽管我在测试中一直说话。值数组如下所示:[0,0,1500,0,0,0,0,0,3000,0,0,0,0,0,0,0,0,0,0,4,500,0 ,0,0,0,0,0,0,0,0,3,0,0,0,0,0,150,0,0,0,0,0 ......]你得到了我的点。我错过了什么吗?谢谢。

编辑:似乎如果我每100毫秒采样一次,我会得到更像这样的东西:[5000,6000,7000,0,4500,5000,0,7000,7000,7500,8000 ,0,7000]它比10毫秒采样更少的零,但那里仍然有零。

1 个答案:

答案 0 :(得分:1)

经过调查,我发现这与采样率有直接联系(可能很明显,但我会以某种方式跳过它)。

因此,设置此项将每100毫秒输出一个实数:

this.mediaRecorder.setAudioSamplingRate(8000);

这每40毫秒:

this.mediaRecorder.setAudioSamplingRate(16000);

并且每10毫秒:

this.mediaRecorder.setAudioSamplingRate(44100);

请记住,您可以将44100用作AAC音频编码器的采样率,将16000用作AMR_WB的采样率。 AMR_NB仅支持8000作为采样率。