我想使用STFT进行多音高分析。
我意识到检测信号中存在的部分仅仅是开始。
我还是有问题。

比方说,我已经以'CD'频率44100Hz采样了信号。
1024采样窗口下,我得到22500Hz/512=43Hz的频率仓分辨率。
这仅足以识别高钢琴音符,例如:
C5 = 523.251HzC#5 = 554.365

我使用了认为1024是一个很大的窗口。
但也许不是,通常使用更大的窗口来检测局部声部吗?

除了增加窗口大小外,是否可以通过其他方法来提高频率分辨率,这会恶化时间分辨率?
我想到了两种方法:

方法1:


使用带通滤波器将信号划分为频带(例如0-11.25Hz11.25-22.5Hz)。
对更高的频段进行下采样,以使原来的高频现在变为低频
(第二个频段也是如此)-不确定是否可以。
Concat生成的带有经过调整标签的bin集。

方法2:


使用一系列具有增加限制的低通滤波器。
在增加的频率范围上执行FFT。
对于每个频率,请使用最佳分辨率(从包含该频率的第一个FFT的二进制数开始)。
这将使低频具有更好的分辨率,但我认为这是可以的,因为音符较高
频率差异更大。

我将不胜感激在此问题上的任何评论。

我也在这里阅读:
窗口大小,采样率如何影响FFT基音估计?
关于改善峰提取结果的方法。我想会尝试使用它。

评论

如果您知道只有一个正弦分量,则可以将抛物线拟合到峰的相邻区间,然后进行插值以找到“真”峰。不确定将其与@pichenettes描述的相位方法相比如何。

#1 楼

如果您真的坚持使用FFT(而不是参数方法,而不会受到时间/频率折衷的影响),则可以通过使用相位信息为每个FFT仓恢复瞬时频率来伪造更好的分辨率。然后可以通过在函数中寻找平稳部分来检测部分,该函数给出瞬时频率作为FFT bin索引的函数。如本文所述,此技术的常见实现方式将“花费”您一个额外的STFT(通过对信号STFT和信号导数的STFT进行操作来恢复瞬时频率)。

例如,在此Matlab音频信号正弦建模实现中,请参见ifgram函数。

请注意,这无助于解决掉落在相邻FFT仓中的两个部分。与将频谱峰值的FFT bin索引转换为频率相比,它将提供更准确的频率估计。

评论


$ \ begingroup $
参数方法是什么意思?另外,您是否在几个月前就提到了一种类似FFT的算法,但该算法具有倍频程刻度,而不是统一的频率刻度?
$ \ endgroup $
–吉姆·克莱(Jim Clay)
2012年10月3日18:33



$ \ begingroup $
参数方法是统计信号分析方法,其假定信号是由一组参数描述的特定过程生成的,并根据观测值计算这些参数的最小二乘估计。例如,如果您假设信号是N个指数阻尼正弦波+噪声的总和,则可以使用ESPRIT或MUSIC之类的算法来推断N个复振幅和脉动。
$ \ endgroup $
–小食
2012年10月3日19:38

$ \ begingroup $
您可能是指常量Q变换。需要注意的是,它在计算方面没有FFT高效。而反转这种变换是一个不平凡的优化问题。
$ \ endgroup $
–小食
2012年10月3日19:40

$ \ begingroup $
@JimClay:也许应该在这里迁移?
$ \ endgroup $
– Endolith
2012年10月3日在20:17

$ \ begingroup $
说参数方法不受时间/频率折衷的困扰是令人误解的。参数化方法的核心是对系统建模,并使用该模型提取有意义的数据。但是性能仅与模型一样好。假设选择了“最佳”模型(极数或信号空间特征向量数),则这些方法的性能对数据记录长度仍然非常敏感。
$ \ endgroup $
–布莱恩(Bryan)
2012年10月4日,0:10

#2 楼

术语“分辨率”具有多种含义。通常,您无法通过使用相同的数据窗口长度进行插值来提高分离(或“分辨”)间隔很小的光谱峰的能力。但是,您可以通过各种插值方法来估计比FFT区间间隔更好的分辨率(有时比分辨率要好得多)的,比噪声本底高得多的孤立的平稳频谱峰值的频率。

常见的FFT结果插值方法对于更高分辨率的估计,包括抛物线插值,Sinc插值,将数据零填充到更长的FFT和使用(略微)偏移重叠窗口的相位声码器方法。

FFT本质上是一堆带通在给定的FIR滤波器内核长度下,每个滤波器都有非常陡峭的过渡,但是阻带纹波却很多。因此,这些滤波器对非周期性窗口内噪声没有很大的噪声抑制能力。如果您怀疑这种类型的干扰是个问题,那么开窗FFT或自定义滤波器组可能会更好。

#3 楼

经过吉姆·克莱(Jim Clay)问题和小插图回答的进一步研究后,我发现我的Method2是由Kashima和Mont-Reynaud描述的重塑的有界Q变换(我不确定我可以链接到本文,文件看上去很破译) 。

他们的方法在算法上效率更高,因为它们从最大的频率范围开始,然后迭代将其下采样2倍,直到达到最低的八度。

Q变换的优点例如,Brown也在其中进行了探索。
它可能不如单FFT高效,但是具有的优点是,在不需要此功能的高频带上不计算粗FFT。

感谢所有答案,评论和链接。

评论


$ \ begingroup $
您所描述的内容听起来很像小波变换,这一点似乎得到了证实。我意识到这是一篇过时的文章,但是未来的读者也可能希望阅读小波。但是,正如我在回答中指出的那样,您无法更改时频不确定性原理,但是对数据的了解可以使您作弊。
$ \ endgroup $
–orodbhen
17年8月15日在19:38

#4 楼

如果您保留输入的“历史记录”,并使用它与DFT重叠,那么它将提供更多信息来提取光谱内容。当然,这取决于信号的时变性质。它的形式类似于概率分布函数。

这将使您在时间上间隔更近的DFT。但是,这仍然会增加每个DFT的时间不确定性,这受自然法则的约束:时间和光谱行为的确切值无法同时确定。

如果频率内容在窗口内变化不大,那应该没问题。