【发布时间】:2015-07-04 11:21:55
【问题描述】:
我正在使用MediaRecorder 尝试创建一个返回声压级的声级计(我相信大多数人在提到以分贝为单位的日常音量时的意思)。
目前,我正在使用此实现来获取以分贝为单位的值:
return 20.0 * Math.log10(Math.abs(mMediaRecorder.getMaxAmplitude()) / 32768)
我不确定这是否正确。坐在一个除了风扇之外没有噪音的房间里,它返回的值介于 -30 和 -20 之间。如果我在麦克风附近讲话,它会跳到接近 -0.5 左右的值。
阅读本网站上的许多答案后,在没有校准设备的情况下测量 SPL 似乎很困难且很大程度上不可靠。但是,我不需要高度准确的结果,只需要适用于日常好奇心和非极端情况的结果。
有诸如Sensor Box for Android 之类的应用程序,它们似乎返回了不错的结果,无需校准即可启动。在同一个房间使用它,它返回的结果在 40-60dB 之间,当我说话时,它会跳到 80-90dB 的范围内。
如何复制这些结果?谢谢!
【问题讨论】:
-
你说你不需要准确的结果,但有多准确?一个无意义的数字会以什么方式告诉你的好奇心?您的演示应用程序的结果似乎也很差。例如,在此处查看低 dBSPL 值:en.wikipedia.org/wiki/Sound_pressure#Examples_of_sound_pressure 您的示例应用程序需要注意的是,它们仅声明有关“强度变化”的信息,为此,校准并不重要,我猜他们只报告“dB”而不是“dBSPL”。
-
我想我不需要高度准确的结果的意思是我希望该应用程序的性能类似于人们以 10-15 美元在商店购买的任何简单的声级计。没有什么高端和高精度,但也不是随机的。
-
顺便说一句,在传感器框中返回“体面”的结果-快速查找说 80-90 对语音来说太高了。 80-90 是长期听力损伤范围,相当于交通繁忙的道路。请记住,偏离 1 dB 是对数,所以这并不意味着稍微多一点,而是意味着噪声增加一个数量级。 en.wikipedia.org/wiki/Sound_pressure#Examples_of_sound_pressure
-
仅使用手机的标准麦克风尽可能准确。我只是说不如音频专业人士可能使用的昂贵的声级计准确。
-
我认为你们都对 Sensor Box 应用程序的不准确性是正确的,因为当我在电话附近以正常的声音说话时,它始终返回约 80-90 dB 的测量值。