- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的音频分析功能在 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);
(省略错误处理)
由于您对控制输入增益感兴趣,您可能还想通过将 Audio Session 模式设置为 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 上关闭。
关于ios - 如何在 iPhone 上控制硬件麦克风输入增益/电平?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10871231/
我试过了 alBufferf (myChannelId, AL_MAX_GAIN (and AL_GAIN), volumeValue); 并收到错误0xA002。 最佳答案 0xA002是Linux
我正在使用 Matlab 从 2 点灰度相机 (Flea2) 捕捉图像,我想更改相机的一些参数,例如自动曝光、增益和快门速度。到目前为止,我已经使用了这些命令: %Creating the two v
我正在尝试调整网络摄像头的亮度。我需要 3 张不同亮度设置的不同照片。我不想让它成为手动的,所以如果想在程序中包含设置。 下面是我正在使用的代码。使用方法 GetFrame() 可以从网络摄像头获取下
我想问一个我试图自己回答但无法想出任何解决方案的问题。 我想知道任何具有这些属性的算法(或者是否有可能至少证明一个算法是否存在) +-----------+ status_
我有一个OSX应用程序,该应用程序使用音频单元记录音频数据。可以将音频单元的输入设置为任何可用的输入源,包括内置输入。问题是,我从内置输入获得的音频经常被剪切,而在诸如Audacity(甚至Quick
我是一名优秀的程序员,十分优秀!