从 iOS 和 Objective C 中录制的音频中获取分贝数据

Get Decibels data from recorded audio in iOS and Objective C

我正在尝试从录制的音频样本中获取分贝值,以便制作波形图并处理其峰值。 目前我正在使用 AVAudioRecorder 录制音频文件并通过使用 [recorder averagePowerForChannel:0] 访问其数据库值,由计时器调用,但我面临限制。因为我需要尽可能精确,所以我将计时器设置为以 0.001 秒重复,但是在每个滴答处调用 [recorder averagePowerForChannel:0] 会多次输出相同的值。似乎记录器无法更新低于 0.2 秒的值。 我怎样才能克服这个限制?

这是录音机设置:

NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
                                  [NSNumber numberWithFloat: 44000.0],                 AVSampleRateKey,
                                  [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
                                  [NSNumber numberWithInt: 1],                         AVNumberOfChannelsKey,
                                  [NSNumber numberWithInt: AVAudioQualityMax],         AVEncoderAudioQualityKey,
                                  nil];

然后我设置录音机

recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
    [recorder setMeteringEnabled:YES];
    [recorder prepareToRecord];
    [recorder record];
    timer = [NSTimer scheduledTimerWithTimeInterval:0.001f target:self selector: @selector(cllBack:) userInfo: nil repeats: YES];

然后在 cllBack 中调用

[recorder updateMeters];
[recorder averagePowerForChannel:0];

在此先感谢您的帮助!

通过在总线上安装分路器并分析数据,使用 AVAudioEngine 解决了问题。