答案 0 :(得分:1)
@cwilso基本上是正确的。
但是这里有一个替代方案可以得到你想要的东西(相当)一些工作,分析和思考。
低通滤波信号以获得您感兴趣的低频。对信号进行抽取。将此信号保存在AudioBuffer中。使用OfflineAudioContext
和AudioBufferSource
创建AnalyserNode
。运行离线上下文并从分析仪中获取频率数据。
例如,让我们说上下文以48 kHz运行。我们希望改善3 kHz以下的频率。因此,创建截止频率为3 kHz的低通滤波器。 (使用单个IIRFilter或几个双二阶滤波器的级联。)获取经过滤的音频并将其发送到AudioWorklet或ScriptProcessor。该节点仅通过保留每个第16个样本将信号抽取8倍(48 /(2 * 3))。收集足够的数据并将其保存在AudioBuffer中,采样率为6 kHz。该抽取导致在6kHz的采样率下带宽为3kHz的信号。因此,信号的有趣部分占据了整个带宽。
现在我们有了这个缓冲区,创建一个采样率为3 kHz的离线上下文。在此上下文中,使用该缓冲区创建一个AudioBufferSourceNode,并将其传递给AnalyserNode。从分析仪获取频率数据。如果您使用了1024点,则每个频率仓现在为3 kHz / 1024或大约3 Hz宽。你已经改进了低频。
答案 1 :(得分:0)
不,不是没有为分析仪使用更大的FFT。数学在FFT中的工作方式,这些分档是线性分布的;如果你想要更多细节,你需要在整个频谱上获得更多细节(当然,以相应的CPU成本)。