如何从java中的麦克风获得dB(或任何类型的音量)级别?

时间:2011-04-27 18:41:51

标签: java microphone pcm audio 16-bit

如果我问的话已经问到了,我真的很抱歉,但我到处都是,没有任何事情发生。

我正在尝试使用java声音api动态读取房间当前音量。我注意到我从我的麦克风混音器得到的控制没有帮助,从我看到的,人们建议从TargetDataLine读取一小块声音,并使用均方根算法检查音量。

实际问题 :) 问题是,每当我在样本上运行rms(我正在使用PCM_SIGNED,44100Hz 16bit)时,我得到的值在20-30时没有背景噪音,在我说话/喊叫/说话时最多60。 (我尝试从缓冲区大小100-44100读取该行 缓冲器尺寸越小,均方根值越低 - 但是全部安静在10左右,噪声大约在30左右。)

事情是,当我播放我刚刚录制的内容时,您可以完美地听到所有内容,并且没有背景噪音。

TL;博士 任何人(请)告诉我从字节数组读取(PCM SIGNED 44100Hz 16位)的音量告诉我?

提前感谢你的回答!

1 个答案:

答案 0 :(得分:2)

有关RMS,请参阅this reply