2016-03-23 72 views
1

我已經對wav文件執行了FFT,繪製了此圖的曲線圖,並使用了峯值utils來獲取峯值,並在其他。如何在Python中執行FFT和峯值檢測之後獲取BPM

如何從這裏獲取歌曲BPM(節拍每分鐘)?

我需要執行IFFT嗎?正如我假設我需要回到時間背景。或者還有另一種回到時間背景的方式嗎?

我沒有任何代碼後,我只是想在下一步的正確方向推。

非常感謝 濟

+1

@Vorsprung如果是這樣的答案,你應該,你知道乘BPM ,讓它成爲答案。 =) – Brett

+0

http://dsp.stackexchange.com/questions/1112/detecting-drum-bpm-in-a-noisy-wav-file – Reti43

+0

謝謝你的鏈接,但是我仍然不確定接下來要做什麼,是你的答案應該指向「然後計算信號的時域包絡(」有損峯值「是最簡單的方法),時間常數大致與鼓點長度相匹配。」位?我如何計算信號的時域包絡?我已經檢測並發現了峯值,那麼我是否需要「有損峯值」? –

回答

0

測量峯到峯距離在幾秒鐘內,並通過該數除以60。例如0.5秒峯峯值= 60/0.5 = 120 bpm。這將在一定程度上對定期跳舞音樂起作用,但在其他類型中將會不那麼好

對不起,我完全誤解了你的問題。以上是如何在波形上做到這一點,就像你在大膽中看到的那樣。

使用頻域中的FFT。在較低的頻率範圍內尋找峯值。如果音樂在60到180bpm的範圍內,那麼這對應於1到3Hz的頻率。因此,尋找峯在這個頻率範圍內

要轉換的峯值的頻率提高60 SO 2赫茲* 60 = 120 BPM

+0

謝謝Vorsprung的回覆,以秒爲單位測量峯間距離,是否需要執行IFFT?或者FFT數據中是否還有時間值? –

+0

哦,哈哈是啊,不波。好的,謝謝你,我已經有了高峯,那麼我如何從這些高峯計算BPM? –

+0

好的謝謝你,但是當你有多個峯值時,你會做什麼?你是否取平均值,然後乘以60得到BPM(平均值)? –

相關問題