我想使用STFT进行多音高分析。我意识到检测信号中存在的部分仅仅是开始。我还是有问题。
假设我已经以“ CD”频率采样了信号44100Hz
。在1024
样本窗口中,我得到的频点分辨率为22500Hz/512=43Hz
。这仅足以识别诸如C5 = 523.251Hz
和的高钢琴音符
C#5 = 554.365
。
我曾经认为这1024
是一个很大的窗口。但是也许不是,通常使用较大的窗口来检测局部图像吗?
除了增加窗口大小之外,是否可以使用其他方法来提高频率分辨率,这会使时间分辨率恶化?我想到了两种方法:
方法1:
- 使用带通滤波器将信号划分为多个频带(例如
0-11.25Hz
和11.25-22.5Hz
)。 - 对较高的频段进行下采样,以使原来的高频现在变为低频(第二个频段也是如此
11.25-22.5Hz -> 0Hz-22.5Hz
)-不确定是否可行。 - Concat生成的带有已调整标签的垃圾箱集。
方法2:
- 使用限制不断增加的一系列低通滤波器。
- 在增加的频率范围上执行FFT。
- 对于每个频率,请使用最佳分辨率(来自包含该频率的第一个FFT的仓)。
- 这将使低频具有更好的分辨率,但是我认为这是可以的,因为对于更高的音符,频率差异会更大。
对于这个问题,我将不胜感激。
我也在这里阅读: 窗口大小,采样率如何影响FFT基音估计? 关于改善峰提取结果的方法。我认为会尝试使用它。