iPhone 麦克风的硬件限制
Posted
技术标签:
【中文标题】iPhone 麦克风的硬件限制【英文标题】:Hardware limitations with iPhone Microphone 【发布时间】:2015-08-05 15:55:46 【问题描述】:我正在使用EZAudio FFT 来分析 iPhone “听到”的音频。我正在聆听嵌入到音乐中的高音(17 kHz+)。当iPhone听到没有音乐的声音时,它完美地记录了数据并且听到了音调。然而,当音乐播放时,声音不再被听到——或者只有八分之一的声音被听到。同样,我使用 EZAudio 来分析声音。我有一部 android 手机,上面有一个类似的应用程序(显示传入音频波的 Hz 图表),但 Android 手机可以听到这些声音。
为什么 Android 手机会听到这些尖锐的声音,而 iPhone 却听不到?是因为 EZAudio 的缺陷还是因为麦克风质量更高?
【问题讨论】:
大多数消费级麦克风在大约 15 kHz 以上的频率响应非常差。 它可以很好地听到音高,只是在嘈杂的音乐中不太好。然而安卓可以。你觉得我能做些什么来解决这个问题吗? 您需要首先确定问题 - 例如。这可能是模拟输入上的 AGC 和音乐的存在导致感兴趣的音调水平下降。尝试捕获一些缓冲区并使用例如做一些离线分析。 MATLAB 或 Octave。 【参考方案1】:答案很可能是自动增益控制 (AGC)。这在麦克风上默认启用,对于电话或录音很有用。
在 17kHz 时,您可能已经处于麦克风不是特别敏感的频率,但是,在其他频率没有音频的情况下,AGC 将增加麦克风的增益。一旦出现其他频率,增益就会再次降低,并且 17kHz 信号会出现在噪声中。
查看 EZAudioFFT 源代码,它似乎没有将 AVAUdiosession 设置为使用测量模式(禁用 AGC 和麦克风上的 HPF)。
您可以通过以下方式实现:
NSError *pError = nil;
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeMeasurement];
【讨论】:
以上是关于iPhone 麦克风的硬件限制的主要内容,如果未能解决你的问题,请参考以下文章