注意使用光谱差异进行开始检测

时间:2011-06-24 08:25:22

标签: audio signal-processing fft spectrum onset-detection

我对发病检测相当新。我读了一些关于它的论文,并且知道当只使用时域时,可能存在大量的误报/否定,并且通常建议同时使用时域和频域或频域。

关于这一点,我有点困惑,因为我在如何使用频谱能量或FFT箱的结果来确定音符开始时遇到了麻烦。因为,不是由幅度上的尖峰表示的音符?

有人可以开导我吗?谢谢!

3 个答案:

答案 0 :(得分:4)

这是考虑音符开始的最简单方法:

将音乐信号视为平坦恒定信号。当发生和发作时,您将其视为信号的大幅快速变化(正峰值或负峰值)

这在频域中意味着什么:

恒定信号的FT就是,CONSTANT!和平坦的

当发病事件发生时,物质含量迅速增加。

虽然你可能会想“你真的在谈论发病高峰吗?”一点也不。我们实际上并不对发病的高峰感兴趣,而是对信号的上升沿感兴趣。当信号急剧增加时,高频内容增加。

一种方法是使用spectrial差异函数:

1)获取时域信号并将其切割成重叠条带(通常为50%重叠)

2)应用汉明/汉窗(这是为了减少物质污迹)(记住将信号切换到窗口就像是将它乘以脉冲,在频域中就像用sinc函数卷积信号一样)< / p>

3)在两个成功的窗口上应用FFT算法

4)对于每个DFT箱,计算Xn和Xn-1箱之间的差值,如果是负值则设为零 对结果进行平方并将所有二元组合在一起

5)重复直到信号结束。

6)使用中值阈值查找信号中的峰值,并且有你的开始时间!

来源:

http://bingweb.binghamton.edu/~ahess2/Onset_Detection_Nov302011.pdf

http://www.elec.qmul.ac.uk/people/juan/Documents/Bello-TSAP-2005.pdf

答案 1 :(得分:1)

您可以将特定频率的幅度差异视为可疑的声音开始。例如,如果长笛从播放G5切换到播放C,则频谱幅度将在784 Hz附近急剧下降。

如果您不知道要检查的频率,FFT矢量的幅度将为您提供某个时间窗口上每个频率的幅度(分辨率取决于时间窗口的长度)。选择你的频率或一堆频率,并在两个不同的时间窗口上区分两个FFT。这可能会给你一些东西,可以作为两个时间窗之间某个地方的声音开始或变化的可能性估计的一部分。滑动窗户或及时逼近其位置可能有助于缩小可疑音符开始的时间或声音的其他重大变化。

答案 2 :(得分:1)

“因为,不是由幅度尖峰代表的音符?” 答:并非总是如此。在打击乐器(包括钢琴)上这是真的,但对于小提琴,长笛等,音符经常在频率变化时“滑动”到彼此而没有急剧的幅度增加。  如果你坚持使用单一乐器,就像钢琴开始探测一样可行。广义起病检测是一个更加困难的问题。有大约十几个原始特征用于起始检测。编码后,您仍然需要决定如何最好地使用它们。