我正在研究实时节拍检测算法。我相信,第一步是检测发作(音量突然增加)。然后,简而言之,我可以将这些关联起来以找到速度并使用最强的起始点来猜测节拍位置。
假设我们正在以 20 毫秒的块读取音频。我的第一个猜测是从前一个块中减去一个块的体积。块的“体积”将是绝对值或平方信号的总和,或者可能只是峰值(不确定哪种方法最好)。然后我可以阈值这些值以找到最大的音量变化。
令我惊讶的是,根据此类论文(第 3 页),我们似乎经常通过划分频率范围来进行发病检测。对于每个音频块,他们获取 7 个频率范围中的每一个的功率,并将其与该频率(以及两个相邻频率范围)的前一个块的功率进行比较,并取连续的差异。
然后我们有 7 个不同范围的起始强度,即功率变化。并将它们在频率上相加,以获得该时间的整体发作强度。
为什么这样做而不是仅使用信号(不需要 FFT)?在我看来,这只是解构和重建相同的信息。我唯一能想到的是不同频率的功率的中间信息可能是有用的(隔离底鼓等)