音乐开始检测方法

信息处理 fft 声音的
2022-02-19 05:37:28

我正在研究实时节拍检测算法。我相信,第一步是检测发作(音量突然增加)。然后,简而言之,我可以将这些关联起来以找到速度并使用最强的起始点来猜测节拍位置。

假设我们正在以 20 毫秒的块读取音频。我的第一个猜测是从前一个块中减去一个块的体积。块的“体积”将是绝对值或平方信号的总和,或者可能只是峰值(不确定哪种方法最好)。然后我可以阈值这些值以找到最大的音量变化。

令我惊讶的是,根据此类论文(第 3 页),我们似乎经常通过划分频率范围来进行发病检测。对于每个音频块,他们获取 7 个频率范围中的每一个的功率,并将其与该频率(以及两个相邻频率范围)的前一个块的功率进行比较,并取连续的差异。

然后我们有 7 个不同范围的起始强度,即功率变化。并将它们在频率上相加,以获得该时间的整体发作强度。

为什么这样做而不是仅使用信号(不需要 FFT)?在我看来,这只是解构和重建相同的信息。我唯一能想到的是不同频率的功率的中间信息可能是有用的(隔离底鼓等)

1个回答

你的问题真的很广泛。

简而言之,如果您考虑到“连续差异”,称为频谱通量,按频率范围理解,您可以开始推广到不同类型的音乐,其中可能存在底鼓,但其他乐器足以得出结论仍在发作。人们还可以更好地测量起始的“强度”(响度),这对于处理起始的算法以在更高的节奏级别(节拍、短语、其他分组)得出结论很有用

有很多文献和代码可供尝试: