如何在iPhone上控制硬件麦克风输入增益/电平



我的音频分析功能在iPad(2)上的响应比iPhone(4)更好。它似乎对iPad上更柔和的声音很敏感,而iPhone需要更大的输入才能正确响应。无论是因为麦克风放置、不同的组件、不同的软件配置还是其他因素,我都希望能够在我的应用程序中控制它。

显然,我可以将所有音频样本相乘以编程方式应用增益。当然,这也会产生软件成本,因此:

是否可以像在MacOS中一样从iOS中控制麦克风的软件增益?我找不到任何关于此的文档,但我希望我只是以某种方式错过了它。

在 ios6+ 上,您可以使用 AVAudioSession 属性

        CGFloat gain = sender.value;
        NSError* error;
        self.audioSession = [AVAudioSession sharedInstance];
        if (self.audioSession.isInputGainSettable) {
            BOOL success = [self.audioSession setInputGain:gain 
                                                     error:&error];
               if (!success){} //error handling
        } else {
            NSLog(@"ios6 - cannot set input gain");
        }               

在ios5上,您可以使用音频会话函数获取/设置音频输入增益属性

    UInt32 ui32propSize = sizeof(UInt32);
    UInt32 f32propSize = sizeof(Float32);
    UInt32 inputGainAvailable = 0;
    Float32 inputGain = sender.value;

    OSStatus err = 
        AudioSessionGetProperty(kAudioSessionProperty_InputGainAvailable
                            , &ui32propSize
                            , &inputGainAvailable);
    if (inputGainAvailable) {
    OSStatus err = 
        AudioSessionSetProperty(kAudioSessionProperty_InputGainScalar
                             , sizeof(inputGain)
                             , &inputGain);
    } else {
        NSLog(@"ios5 - cannot set input gain");
    }
    OSStatus err = 
        AudioSessionGetProperty(kAudioSessionProperty_InputGainScalar
                              , &f32propSize
                              , &inputGain);
    NSLog(@"inputGain: %0.2f",inputGain);

(错误处理省略)

由于您对控制输入增益感兴趣,您可能还希望通过将音频会话模式设置为 AVAudioSessionModeMeasurement 来禁用自动增益控制 (ios5+6)

[self.audioSession setMode:AVAudioSessionModeMeasurement
                     error:nil];
NSLog(@"mode:%@",self.audioSession.mode);

这些设置是特定于硬件的,因此不能假定可用性。例如,我可以更改 iPhone3GS/ios6 和 iPhone4S/ios5.1 上的增益,但不能更改 ipadMini/ios6.1 上的增益。我可以在iPhone3G和iPad mini上禁用AGC,但不能禁用iPhone4S。

我认为这可以帮助您: http://www.stefanpopp.de/2011/capture-iphone-microphone/

最新更新