我正在使用 AudioToolBox 库中的标准 Apple AudioQueue 服务来使用我设备的麦克风。我正在实时跟踪峰值音频电平,这运行良好,只是它没有像预期的那样对音量的不均匀变化做出响应。mPeakPower 会在音量突然增加时适当跳高(那里没问题),但它只会逐渐减小:如果我给我的设备一个响亮的拍手然后是静音它会跳得很高,然后立即开始稳定减少,直到达到实际的当前音量(此减少最多可能需要 2 秒)。理想情况下,一个响亮的声音然后是静音应该会导致一个尖峰,该尖峰会立即回落到环境音量。我需要快速响应音量的增加和减少。有什么见解吗?我认为这是由于平滑算法而发生的,但是我该如何解决呢?我应该使用不同的库吗?
这是我在 AudioQueueInputCallback 方法中的代码片段。
AudioQueueLevelMeterState meters[2];
UInt32 dlen = sizeof(meters);
AudioQueueGetProperty(myQueue,kAudioQueueProperty_CurrentLevelMeterDB,meters,&dlen);
NSNumber *ambientVolume = [NSNumber numberWithFloat:meters[0].mPeakPower];
谢谢!