我的音频分析功能响应在iPad上(2)比iPhone 4更好。 这似乎在iPad上较柔和的声音敏感,而iPhone需要更响亮的输入作出适当的反应。 这是否是因为麦克风的位置,不同的组件,不同的软件配置或其他一些因素,我希望能在我的应用程序来控制它。
很显然,我可能只是乘我所有的音频采样以编程方式将增益应用。 当然,有一个软件成本太高,所以:
是否有可能控制麦克风的从软件中获得的iOS类似,它是如何在MacOS上? 我无法找到任何这文档,但我希望我只是缺少它在某种程度上。
我的音频分析功能响应在iPad上(2)比iPhone 4更好。 这似乎在iPad上较柔和的声音敏感,而iPhone需要更响亮的输入作出适当的反应。 这是否是因为麦克风的位置,不同的组件,不同的软件配置或其他一些因素,我希望能在我的应用程序来控制它。
很显然,我可能只是乘我所有的音频采样以编程方式将增益应用。 当然,有一个软件成本太高,所以:
是否有可能控制麦克风的从软件中获得的iOS类似,它是如何在MacOS上? 我无法找到任何这文档,但我希望我只是缺少它在某种程度上。
在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。
我认为这可以帮助你: http://www.stefanpopp.de/2011/capture-iphone-microphone/