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];
ありがとう!