我已经执行了wav文件的FFT,绘制了此图,并使用peak utils来获取峰并一个接一个地打印出来。
如何从这里获取歌曲BPM(每分钟的节拍数)?
我需要执行IFFT吗?我假设我需要回到时间上下文。还是有另一种方法可以返回时间上下文?
我不需要任何代码,我只是想朝着正确的方向前进。
最佳答案
测量峰到峰的距离(以秒为单位),然后用60除以该数字。例如0.5秒峰到峰= 60 / 0.5 = 120 bpm。这在某种程度上适用于常规舞蹈音乐,但在其他类型上效果不佳
对不起,我完全误解了你的问题。上面是如何像在大胆中看到的那样以波形形式进行操作。
在频域中使用FFT。在较低的频率范围内寻找峰值。如果音乐在60到180 bpm的范围内,则对应于1到3 Hz的频率。所以在这个频率范围内寻找峰值
要将峰值频率转换为bpm,请乘以60。因此2 Hz * 60 = 120 bpm
关于python - 一旦执行了FFT和峰值检测后如何获取BPM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36180049/