如何控制硬件麦克风输入增益/ iPhone上的水平?(How to control hardware

2019-06-25 03:39发布

我的音频分析功能响应在iPad上(2)比iPhone 4更好。 这似乎在iPad上较柔和的声音敏感,而iPhone需要更响亮的输入作出适当的反应。 这是否是因为麦克风的位置,不同的组件,不同的软件配置或其他一些因素,我希望能在我的应用程序来控制它。

很显然,我可能只是乘我所有的音频采样以编程方式将增益应用。 当然,有一个软件成本太高,所以:

是否有可能控制麦克风的从软件中获得的iOS类似,它是如何在MacOS上? 我无法找到任何这文档,但我希望我只是缺少它在某种程度上。

Answer 1:

在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中,你可以得到/设置使用AudioSession功能的音频输入增益特性

    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的,但不是禁用的iPhone4S AGC。



Answer 2:

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



文章来源: How to control hardware mic input gain/level on iPhone?