python做音頻節奏識別(beat detector)有沒有現成的庫 (js也行)?

1,如題,想用python做音頻節拍識別, 看了很多演算法,但想快速使用,實現演算法比較麻煩,想問問python中有沒有現成的庫可以做 beat detector?

2,我之前在用python 自帶的 wave 模塊處理音頻文件,但是覺得它裡面的方法不夠用,不知道是不是我沒有注意到裡面的某個方法(或某幾個), 如果是,請指出,不勝感激。

注意: 不是單純處理wav文件讀寫頻譜,是想做歌曲或者鋼琴曲等的節奏識別,識別出它的節奏序列


有三個很完善的庫推薦給你

1. MTG/essentia 可以提取的rhythm descriptor里包括beat detection, BPM, onset detection, rhythm transform, beat loudness

2. librosa/librosa 里的beat_track和onset_detect也許對你有用

3. Sonic Annotator 提供很多vamp plugin有這個功能,但需要額外下載。你也可以自己寫plugin,都是基於python的。用這個的好處是可以批量處理音頻文件,結果可以用Sonic Visualiser顯示。


我之前有用 python 做音樂的 bpm 識別,python 的 beat detection 演算法我是沒有找到現成的,但我找到了 GitHub - aubio/aubio: a library for audio labeling: pitch, onset, tempo tracking, and more 這是一個 c 實現的音頻演算法庫,並提供 python 介面,可以用 pip 安裝。

我沒有用 python 介面,而是通過軟體倉庫(mac 和 ubuntu 都有提供)安裝了它的二進位程序,用 python 調用子進程,得到 beats 的時間節點,然後再在 python 里處理。

就像這樣:

但其實我當時這種做法挺傻的……後來因為要用於 ios 我就乾脆用 c 來寫了。

如果你想在 js 里用 beat detection 演算法,也是可以的,我最近就在用 js 做音頻處理,順便也把 aubio 移植到了 js GitHub - qiuxiang/aubiojs: aubio for javascript, the real-time audio processing library,你可以看下這個 demo Aubio Tempo。

一開始我也用 python 做一些音頻分析,wave 只是簡單地封裝了 wav 的讀寫而已,不知道你還期望用 wave 來做什麼。


推薦閱讀:

用Pyador進行『異常檢測』: 開發無監督機器學習工具庫(一)
PyQt5系列教程(10):老闆,這個打一下
Google Brain開源新的Python 庫:Tangent
Windows下MySQL 5.7.17壓縮版安裝過程的坑
優秀開源項目kombu源碼分析之registry和entrypoint

TAG:Python | 音頻處理 |