问题描述
我是新来的FFT和信号处理,所以希望这个问题是有道理的和/或不傻。
I am new to FFTs and signal processing, so hopefully this question makes sense and/or isn't stupid.
我想在现场音频信号进行频谱分析。我的目标是要找到响应速度和频率分辨率,这样我可以在接近实时输入音频的音调来猜测之间的良好平衡。
I would like to perform spectrum analysis on a live audio signal. My goal is to find a good tradeoff between responsiveness and frequency resolution, such that I can take a guess at the pitch of the incoming audio in near-realtime.
从我收集的关于背后的傅立叶变换数学,有样本大小和频率分辨率之间的内在平衡。该样本越大,更好的分辨率。因为我想,以尽量减少样本量(达到近实时的要求),这意味着我的决心受到(输出缓冲每个插槽对应一个宽的频率范围,这是不可取的)。
From what I've gathered about the math behind the Fourier transform, there is an inherent balance between sample size and frequency resolution. The bigger the sample, the better resolution. Since I am trying to minimize sample size (to attain the near-realtime requirement), this means my resolution suffers (each slot in the output buffer corresponds to a wide frequency range, which is undesirable).
不过,我预期的应用,我不最关心的频谱。我只需要一个窄的频率范围内的频谱信息,说在100Hz - 1600hz为例。有什么办法可以修改的FFT实现,这样我可以改进频域输出的分辨率,同时保持输入缓冲区大小常数(小)?换句话说,我可以交易的输出分辨率输出的总带宽?如果是这样,这是怎么做的?
However, for my intended application, I don't care about most of the spectrum. I only need spectrum info for a narrow frequency range, say 100hz - 1600hz for example. Is there any way to modify an FFT implementation such that I can improve the resolution of the frequency domain output while keeping the input buffer size constant (and small)? In other words, can I trade output total bandwidth for output resolution? If so, how is this done?
虽然我有最好的数学弱的把握,似乎填充用零输入缓冲区可能是有趣的,不是吗?
Although I have a weak grasp of the math at best, it seems that padding the input buffer with zeros might be interesting, no?
预先感谢您可以提供任何帮助。
Thanks in advance for any help you can offer.
推荐答案
您不能从无处获取更多的信息,但是你可以通过重叠连续的FFT减少的延迟的。对于实时功率谱估计是很常见的50%重叠连续输入窗口。
You can't get additional information from nowhere, but you can reduce latency by overlapping successive FFTs. For real-time power spectrum estimates it's common to overlap successive input windows by 50%.
插入零 的之间的样本是另一个有用的技巧 - 它可以让你在出纸槽更加明显分辨率,但在现实中,所有你做的是插值,即有获得无附加信息(当然, )。你可能虽然发现这种技术是有用的,除了上述的重叠建议
Inserting zeroes between samples is another useful trick - it gives you more apparent resolution in the output bins, but in reality all you are doing is interpolating, i.e. there is no additional information gained (of course). You might find this technique useful though, in addition to the overlap suggestion above.
这篇关于通过限制频率范围提高FFT输出的频率分辨率?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!