以分贝的方式获得声音

时间:2014-12-06 10:11:49

标签: ios objective-c avfoundation

我希望我的iPhone麦克风录制的声音以分贝为单位。我正在使用

[recorder peakPowerForChannel:]

但它在-160到0范围内给出,我需要将140 dB作为 一个门槛。任何人都可以帮助我吗?

以下是我正在尝试的示例代码:

NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] init];

[recordSettings setObject:[NSNumber numberWithInt:kAudioFormatAppleLossless] forKey:   AVFormatIDKey];
[recordSettings setObject:[NSNumber numberWithFloat:22050.0] forKey: AVSampleRateKey];
//  [recordSettings setObject:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey];
[recordSettings setObject:[NSNumber numberWithInt:12800] forKey:AVEncoderBitRateKey];
[recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSettings setObject:[NSNumber numberWithInt: AVAudioQualityLow] forKey: AVEncoderAudioQualityKey];
NSError* error = nil;
recorder = [[AVAudioRecorder alloc] initWithURL:recordedFile  settings:recordSettings  error:&error];


[recorder prepareToRecord];
recorder.meteringEnabled = YES;
[recorder record];
NSTimer *blowTimer=[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(timerTask) userInfo:nil repeats:YES];

[[NSRunLoop currentRunLoop] addTimer: blowTimer
                             forMode: NSDefaultRunLoopMode];

-(void)timerTask
{
    [recorder updateMeters];
    float averagePower = [recorder averagePowerForChannel:0];

}

0 个答案:

没有答案