如何以dB为单位进行iPhone录音的音量测量,限制至少为120dB

Cyb*_*ber 5 iphone audio volume objective-c decibel

我正在尝试为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;
Run Code Online (Sandbox Code Playgroud)

我更改了mBitsPerChannel的值,希望增加录制的位值.

dataFormat.mBitsPerChannel = 32;
Run Code Online (Sandbox Code Playgroud)

将该变量设置为32时,"mAveragePower"函数仅返回0.

那么,我怎样才能衡量更多的分贝?我的所有代码几乎都与上面发布的教程相同.

托马斯先谢谢你

Pau*_*l R 5

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

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

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