android - iPhone麦克风的硬件限制

标签 android ios audio fft microphone

我正在使用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/

相关文章:

java - 我如何检查 switch 中的以下条件而不是 if?

android - FloatingActionButton backgroundHint with alpha

ios - UILocalNotification:播放保存在文档目录中的自定义音频文件

java - Android:如何循环播放音效?

c# - C#NAudio asio和wasapi

android.permission.INTERNET 尚未使用,还可以通过浏览器发送 CGI 调用

java - 由于构造函数错误无法启动 ListView

ios - PhoneGap iOS App 配置菜单

ios - TableView - heightForRowAtIndexPath 未被调用

audio - sox-如何以16kbps的比特率创建mp3文件