【发布时间】:2016-02-04 06:20:10
【问题描述】:
我正在使用 C++ 在 Linux 上开发一个实时声谱分析仪应用程序,并且我正在使用 FFT 来计算幅度。该应用程序通过连接到 PC 的简单廉价麦克风获取声音。
我尝试使用在线声音发生器测试该应用程序,只需在扬声器上播放生成的声音,我注意到它始终显示播放声音频率的一半。例如。如果我产生 440Hz 的声音,它会将其检测为 ~220Hz。
起初我以为我只是做了一些错误的计算,但后来我尝试使用其他可以测量频率的应用程序(例如 gtkuitune)进行测试。我注意到了同样的事情!即使是那些应用程序也总是只显示扬声器产生的实际声音的一半左右。
有人解释为什么会这样吗?
【问题讨论】:
-
FFT 的采样频率是多少?
-
快速浏览问题,“频率”和“一半”这两个词让我想到了抽样方面的Nyquist frequency,但我不确定这是不是问题所在。可能值得分享您在麦克风采样方面的实现,然后执行 FFT
-
@paisanco 我的声音采样率为 44100,我的 FFT 采样率为 1470(44100 / 1470 = 30,即我在一秒钟内执行 FFT 30 次)。一般来说,我对音频处理和 DSP 真的很陌生,所以我不知道这是否太多/太少等等。
-
@GeorgeProfenza 是的,但奇怪的是它不仅仅是我的应用程序,如果你阅读我上面的帖子,你会发现它也发生在其他应用程序中。..
标签: signal-processing fft audio-processing