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