【发布时间】:2009-08-15 09:02:13
【问题描述】:
我们正在创建一个应用程序来记录周围的声音,并在声音超过指定分贝时采取必要的措施。
为了实现应用目标,我们使用 AudioQueueObject.h 中的以下方法
- (void) getAudioLevels: (Float32 *) levels peakLevels: (Float32 *) peakLevels {
UInt32 propertySize = audioFormat.mChannelsPerFrame * sizeof (AudioQueueLevelMeterState);
AudioQueueGetProperty(
self.queueObject,
(AudioQueuePropertyID)kAudioQueueProperty_CurrentLevelMeterDB,
self.audioLevels,
&propertySize);
levels[0] = self.audioLevels[0].mAveragePower;
peakLevels[0] = self.audioLevels[0].mPeakPower;
}
我们有以下一组查询
- 录制的声音显示从 -60 开始的分贝值。当声音变大时,这个值会继续增加。此对象记录的最大值为 0.0000。请解释我们如何解释这些值。
根据文档,我们得到的值是数字分贝,需要转换为模拟分贝,请建议是否有任何方法。
提前致谢
【问题讨论】:
-
您可能想指出您正在使用哪个平台/API
-
我正在使用 cocoa 框架和 AudioToolbox.framework 你能建议我一些解决方案吗 Paul 我会非常感谢你。
-
您使用的是什么硬件?要将 dBFS 转换为 dB SPL,您需要知道参考电平。
标签: cocoa audio core-audio decibel