5

我正在尝试为 iPhone 制作一个简单的音量计。我希望以 dB 为单位显示音量。使用这个 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。

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

在此先感谢,托马斯

4

1 回答 1

5

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

另请参阅我对之前关于 SO 的类似问题的回答:如何计算音频 dB 级别?

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

于 2010-03-30T20:01:26.733 回答