我正在尝试为 iPhone 制作一个简单的音量计。我希望音量以 dB 为单位显示。使用时本教程 http://www.iwillapps.com/wordpress/?p=32,我只能得到高达 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的值,希望能够增加录音的比特值。
dataFormat.mBitsPerChannel = 32;
当该变量设置为 32 时,“mAveragePower”函数仅返回 0。
那么,如何测量更多的分贝呢?我的所有代码实际上与我上面发布的教程中的代码相同。
提前致谢,
托马斯
16位音频只有一个动态范围 of 96 dB
,但我怀疑你可能会感到困惑dB
,这是一个relative测量,以及dB SPL
,这是一个absolute的测量声压级。要测量 dB SPL,您需要使用某种参考来校准麦克风和音频硬件。一旦您校准了输入,那么您的 96 很可能dB
动态范围转化为绝对范围,例如 44dB SPL
to 140 dB SPL
.
另请参阅我对之前类似问题的回答:如何计算音频 dB 级别? https://stackoverflow.com/questions/2445756/how-can-i-calculate-audio-db-level
注:dB SPL 的定义是相对于 20 µPa (rms) 的声压级。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)