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

在java中,如何从麦克风获取dB(或任何类型的音量)级别?,java,microphone,pcm,audio,16-bit,Java,Microphone,Pcm,Audio,16 Bit,如果我问了一些已经问过的问题,我真的很抱歉,但是我到处都找了,什么也没找到 我正在尝试使用java sound api动态读取房间中当前的音量。我注意到我从麦克风混音器中得到的控制对这没有帮助,根据我所看到的,人们建议从TargetDataLine读取一小段声音,并使用均方根算法检查音量 实际问题是:) 问题是,每当我在样本上运行rms时(我使用的是PCM_签名,44100Hz 16位),当没有背景噪声时,我得到的值在20-30之间,当我说话/大叫/说话时,得到的值高达60。 (我尝试从大小为1

如果我问了一些已经问过的问题,我真的很抱歉,但是我到处都找了,什么也没找到

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

实际问题是:) 问题是,每当我在样本上运行rms时(我使用的是PCM_签名,44100Hz 16位),当没有背景噪声时,我得到的值在20-30之间,当我说话/大叫/说话时,得到的值高达60。 (我尝试从大小为100-44100的缓冲区读取该行 缓冲区大小越小,均方根值越低,但总的来说,噪音在10左右,噪音在30左右。)

问题是,当我播放我刚刚录制的音乐时,你们可以完美地听到一切,并且没有背景噪音

tl;博士 有人(请)能告诉我一种从字节数组读取(PCM签名的44100Hz 16位)来识别音量的方法吗

提前感谢您的回答

有关RMS,请参阅