我在应用程序中使用了Android的录音机来计算周围的噪音。
我使用getMaxAmplitude()
函数获得了最大振幅,并使用此公式将其转换为db:
db = 20 * Math.log10( getMaxAmplitude() / ref )
其中ref=32767
(只是参考值)
但是当我在不同的设备中测试应用程序时,“db”是不一样的。这意味着getMaxAmplitude()因设备而异。
如果在sony tipo中显示-40db表示在三星S4中它的-20db。
为什么会出现这种变化?
答案 0 :(得分:0)
不同的设备将具有不同的麦克风,具有不同的灵敏度,以及不同的音频硬件/前置放大器。此外,他们可以应用不同的输入增益,均衡器,以及自动增益控制(AGC)和降噪算法,这可以解释您所看到的巨大差异。
在某些设备上,您可以运行AlsaMixer(以root用户身份)来控制麦克风输入增益。