从Android麦克风获得分贝

Bra*_*don 4 android microphone decibel

我一直在寻找相当长的一段时间,而且我还没有找到一种方法来实现从android上的麦克风获得SPL/db值.我发现的几个线程和文章都讨论过它将它视为显而易见的事情,任何人都应该能够做到这一点,并且更关注如何使他们的转换算法正确.有谁知道如何做到这一点?

Bra*_*don 13

在处理其他相关应用程序和进行研究时,我遇到了一些对于正在研究此类问题的人有用的信息.你看,Android手机上的麦克风将返回0到+ - 32,400之间的值.在大多数情况下,2000以上的任何东西都非常响亮,例如音乐会,俱乐部或机械噪音."相对沉默"约为30.然而,这些数值的含义是相对的,并且在不同手机之间会有所不同.由于其中的麦克风,几个彼此相邻的设备将返回不同的值.值可能略有不同,或者很多.刚刚在我的办公室测试了几款不同的Android手机,我发现有些设备在相同情况下的返回值是其他设备的10倍.这就是为什么没有人刚刚说过"是的,你可以得到分贝值,这里有一些示例代码:"因为实际上没有真正可靠(简单)的方法来做到这一点.如果您将其上传到一台设备上,则可以获得30 dB,但另一台设备将返回300 dB.显然,如果没有大规模的耳朵保护,没有人会处于300 dB的环境中.必须将这些值作为相对值; 它们如何相互关联.如果您想获得可以使用的值,"校准",无论是动态的还是其他的,都是必须的.必须有一个既定的基线,不能来自你,必须与你的价值进行比较.例如,如前所述,相对沉默应该在30左右.如果手机在相对沉默的环境中返回456,那么只需将你的(30)除以他们(456),你就有了一个因子来调整手机返回的值与您期望看到的值相匹配,这些值可用于某种程度的可靠性.

这正是我在过去几个月里发现的,我希望它对某人有所帮助.


Chr*_*ton 5

您必须先禁用任何自动电平控制.我假设您要么知道,要么知道如何在没有ALC的情况下从麦克风中记录样本.

从那时起,它基本上都是关于校准和对数的大小.基本上,您将通过频率相关校准进行乘法或卷积,然后在全部或部分频率范围内获取10*对数幅度.

然后你必须进行一些校准测量,例如频率扫描受控制的已知spl的实验室源,并记录所产生的幅度与频率(如果你慢慢扫描与振幅与时间基本相同),或者你是用宽带伪脉冲(例如电火花,起动手枪等等)击中它,你也在频率上用良好的实验室设备在辐射对称位置进行测量,或作为最后的手段使用一些已知的物理属性.估计SPL的来源,并希望它在所关注的频率上足够平坦.

然后,您有两种选择来应用更正.

一种选择是反转传递函数,计算时域脉冲响应,然后通过将其与输入信号进行卷积来将其用作数字滤波器以应用频率平坦度校正.然后,您可以获取每单位时间结果的对数幅度,以确定宽带分裂.

或者您可以对输入数据进行FFT以生成频谱,并将其乘以频率响应的倒数,并将任何(总和)bin的对数幅度感兴趣.

不幸的是,没有什么理由假设设备之间的粗略一致性,即使是同一型号也是如此.