计算A加权(或B或C)SPL分贝iOS

Ros*_*oss 2 audio

如何从iOS上的麦克风计算A加权和C加权dB声级?

这是我尝试过的,但我得到的读数远远低于我的iPhone旁边的声级计:

  1. 使用我稍微修改过的Novocain库将音频会话模式设置为Measurement.
  2. 使用Maximilian音频库通过FFT运行输入音频帧并将幅度转换为dB.
  3. 使用Maximilian音频库的Octave Analyzer将FFT输出放置在10hz到20480hz的八度音箱中.
  4. 对于每个八度音阶箱,我应用相关dB权重的-70.fdb增益(例如,将db增益应用于存储在10hz箱中的db值以获得A加权dB增益).
  5. 通过将每个dB bin减小到一个幅度来增加每个bin的db值,将增益减少到一个幅度,进行相加,然后再次转换回dB值.

这是在正确的轨道上,我有疑虑吗?有人可以概述一种方法吗?建议一个库和/或其他例子(我看过).

要注意 - 我想要近似dB(A)和dB(C)值,这不需要是科学的.不确定如何补偿麦克风的频率响应,如果补偿麦克风的响应,上述技术是否正确?

the*_*ill 5

我不认为您可以测量设备的物理声压级别.在步骤2中,您将"将幅度转换为dB".但是,从设备记录的幅度具​​有任意单位.录制16位音频时,音频表示为-32768到+32767范围内的数字.如果您正在处理浮点数据,则将其归一化为32768,以使其具有(大约)-1到+1的范围.

该设备的麦克风必须能够应对各种各样的声级.通常,设备将具有某种形式的自动增益控制,其适应当前的平均声级.这意味着如果您测量的峰值为1.0,那么您无法知道它对应的实际SPL.您可以将录音转换为一系列dB,但这会使用不同的dB定义:作为功率比.这与诸如dB(A)的SPL测量没有相关性.

如果您能够关闭AGC并根据声音计校准您的设备,可以产生近似的dB(A)测量值

编辑:JASA发表了一篇论文,详细比较了现有的SPL测量应用程序与不同代iPhone的统计数据:智能手机声音测量应用的评估