【问题标题】:How to get a volume measurement of iPhone recording in dB, with a limit of at least 120dB如何以 dB 为单位获得 iPhone 录音的音量测量值,限制至少为 120dB
【发布时间】:2011-02-02 15:27:02
【问题描述】:

我正在尝试为 iPhone 制作一个简单的音量计。我希望以 dB 为单位显示音量。使用this turorial 时,我只能获得高达 78 dB 的测量值。我读到那是因为 16 位音频记录的 dBFS 频谱只有 96 dB。

我尝试在init函数中修改这段代码:

dataFormat.mSampleRate = 44100.0f;
dataFormat.mFormatID = kAudioFormatLinearPCM;
dataFormat.mFramesPerPacket = 1;
dataFormat.mChannelsPerFrame = 1;
dataFormat.mBytesPerFrame = 2;
dataFormat.mBytesPerPacket = 2;
dataFormat.mBitsPerChannel = 16;
dataFormat.mReserved = 0;

我改变了mBitsPerChannel的值,希望增加录音的bit值。

dataFormat.mBitsPerChannel = 32;

将该变量设置为 32,“mAveragePower”函数仅返回 0。

那么,如何测量更多分贝?我所有的代码实际上与我上面发布的教程中的相同。

提前致谢, 托马斯

【问题讨论】:

    标签: iphone objective-c audio volume decibel


    【解决方案1】:

    16 位音频的 动态范围只有 96 dB,但我怀疑您可能对 dB 感到困惑,这是一个相对测量,和dB SPL,这是绝对声压级的测量值。要测量 dB SPL,您需要使用某种参考来校准麦克风和音频硬件。校准输入后,很可能您的 96 dB 动态范围转换为绝对范围,例如 44 dB SPL 到 140 dB SPL

    另请参阅我对之前关于 SO 的类似问题的回答:How can I calculate audio dB level?

    注意:dB SPL 的定义是相对于 20 µPa (rms) 的声压级。

    【讨论】:

    • 好的,感谢您的(快速)答复。如果我校准 iPhone 麦克风的测量值,其他 iPhone 上的测量值是否也正确?我不在乎它是否降低了几分贝,我只想指出麦克风拾取的声音的音量。
    • 我希望您会在相同型号(例如 3G)的 iPhone 之间获得一些 dB 差异,但不同型号之间可能会有更多差异。还要注意,虽然频率响应可能不平坦,所以您的测量结果将是近似的。还有一点需要注意,在测量 dB SPL(例如加权)时,您通常会使用加权滤波器。哦,还有一件事:某些或所有 iPhone 型号中可能有 AGC 电路,这可能会混淆您的测量,除非您可以禁用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 2017-08-17
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2011-12-18
    相关资源
    最近更新 更多