【发布时间】:2011-05-04 04:47:14
【问题描述】:
我是 FFT 和信号处理的新手,所以希望这个问题有意义和/或不愚蠢。
我想对现场音频信号进行频谱分析。我的目标是在响应性和频率分辨率之间找到一个很好的平衡点,这样我就可以近乎实时地猜测传入音频的音高。
根据我收集到的有关傅立叶变换背后的数学知识,样本大小和频率分辨率之间存在固有的平衡。样本越大,分辨率越好。由于我试图最小化样本大小(以达到近乎实时的要求),这意味着我的分辨率会受到影响(输出缓冲区中的每个插槽都对应于很宽的频率范围,这是不可取的)。
但是,对于我的预期应用,我并不关心大部分频谱。我只需要窄频率范围的频谱信息,例如 100hz - 1600hz。有什么方法可以修改 FFT 实现,以便我可以提高频域输出的分辨率,同时保持输入缓冲区大小不变(并且很小)?换句话说,我可以用输出总带宽换取输出分辨率吗?如果是这样,这是如何完成的?
虽然我对数学的理解充其量只是很弱,但用零填充输入缓冲区似乎很有趣,不是吗?
提前感谢您提供的任何帮助。
【问题讨论】:
-
用零填充输入缓冲区与突然关闭的信号相同 - 突然转换将在输出中产生自己的频率。
-
确实如此,但是用零填充不会对整体相对频率分布产生净影响,对吧?而且增加的缓冲区大小也会给我更好的输出分辨率,对吧?不过,这确实感觉像是“不劳而获”:/
-
在输入样本之间插入零比填充输入缓冲区更有用(即在每个真实样本之间插入 N 个零样本)。这提供了更高分辨率的输出光谱,尽管实际上没有获得任何新信息 - 实际上它只是插值。
标签: audio signal-processing fft frequency-analysis