Answers:
如果鼓声相对较强,一种可行的方法是获取波形的STFT幅度,然后仅在时间维度上对其自动进行相关。自相关函数的峰值将是拍子或拍子的约数。
这等效于将信号分成很多不同的频带,找到每个频带的幅度包络,对每个包络进行自相关,然后求和。通过互相关运算将噪声和音乐的其他部分平均化。
这是因为鼓拍会在许多频率(垂直线)上产生短暂的声音,而音乐的其他部分则仅在少数几个频率(水平线)上具有较长的声音,并且噪音是长期的,但在所有频率上都是随机的。如果您查看STFT,则可以看到节拍重复:
我为一个学校项目想出了这一点,以便为整个音乐文件找到一个BPM值,但是随着BPM的变化,它也可以适应音频流。您需要处理的块至少要比所需的BPM周期长两倍。