我正在使用EZAudio FFT在iPhone“听到”声音时分析音频。我正在听嵌入音乐(17 kHz +)中的高音调声音。当iPhone听到没有音乐的声音时,它会完美记录数据并听到良好的音调。但是,当播放音乐时,将不再听到声音-或仅听到八分之一的声音。同样,我正在使用EZAudio来分析声音。我有一个配备类似应用程序的Android手机(显示传入音频波的Hz图表),但是Android手机可以听到这些声音。
为什么Android手机会听到这些高音,而iPhone却听不到?是因为EZAudio的缺陷还是由于麦克风质量更高?
最佳答案
答案很可能是自动增益控制(AGC)。默认情况下,在麦克风上启用此功能,对电话或语音记录很有用。
在17kHz时,您可能已经处于麦克风不是特别敏感的频率,但是,如果没有其他频率的音频,则AGC将增加麦克风的增益。一旦出现其他频率,增益就会再次降低,并且17kHz信号进入噪声中。
查看EZAudioFFT源代码,似乎没有将AVAUdioSession设置为使用测量模式(这将禁用AGC和麦克风上的HPF)。
您可以使用以下方法实现此目的:
NSError *pError = nil;
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeMeasurement];
关于android - iPhone麦克风的硬件限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31837335/