用于测量声压级的声级计

时间:2015-04-25 22:32:32

标签: android audio

我正在使用MediaRecorder尝试创建一个声音表,它可以返回声压级(我相信大多数人在以分贝为单位提到日常音量时的意思)。

目前,我正在使用此实现来获取分贝值:

return 20.0 * Math.log10(Math.abs(mMediaRecorder.getMaxAmplitude()) / 32768)

我不确定这是否正确。坐在没有风扇的噪音的房间里,它的返回值在-30到-20之间。如果我在麦克风附近说话,它会跳到接近-0.5左右的值。

在这个网站上阅读很多答案,在没有校准设备的情况下测量SPL似乎很难并且在很大程度上是不可靠的。但是,我不需要高度准确的结果,只有结果适用于日常的好奇心和非极端情况。

Sensor Box for Android这样的应用程序似乎返回了不错的结果,无需启动校准。在同一个房间使用它,它返回40-60dB之间的结果,当我说它跳到80-90dB范围。

如何复制这些结果?谢谢!

1 个答案:

答案 0 :(得分:1)

你的第一个问题是分贝不是一个精确的测量 - 它的信噪比。您需要基础测量并需要测量信号幅度与基线噪声的比率。振幅本身毫无意义。

你的第二个问题 - 你从哪里得到32768?公式应为20.0 * Math.log10(Math.abs(signal/baseline))