Bpm音频检测库

15

我正在寻找一个能简化音频节奏/ bpm检测的库。

类似于这个http://adionsoft.net/bpm/,但可以在 *NIX 机器上使用。

任何语言都可以,但更偏向于 php、perl 和 python。

4个回答

11
Mixxx使用SoundTouch库中的BPMDetect类进行BPM检测。还有另一个名为BPMDj的开源库,更加准确但使用起来较为困难。
个人而言,我不会依赖任何一个库。再说了,我只是一个业余DJ,所以我更倾向于相信自己的耳朵。
编辑:
有一个更好的OSS库叫做aubio。它也可以做节拍检测和起始点检测。
另一次编辑:
Mixxx现在已经转移到了VAMP插件集上,这个集合更好,支持aubio和许多其他节拍检测库。它还支持键检测和其他音频分析功能。

安装 SoundTouch.Net 包 - RouR
Vamp SDK有一个示例FixedTempoEstimator我进行了编辑:* blocksize和stepsize应始终相同(我使用512),* min/max bpm 20/320(这提供了99%准确的结果),然后只需乘以2或除以2,在calculate()函数的底部有一个围绕128bpm的权重代码,请注释掉它,在process()函数中循环从1开始使其为0,*maxdflen应为120或更多,即歌曲的2分钟。对于第一拍位置- maxpi * stepsize /采样率,与付费的Superpowered SDK相比(其是免费的BSD代码),它具有99%的准确性。我在我的Android DJ应用程序中使用此功能。 - Diljeet
@Diljeet 你好,如何在QT上实现vamp插件,比如使用.dll文件通过QLibrary加载其中的一个函数。除此之外还有其他方式吗?谢谢 - S At
@SAt 很抱歉回复晚了。Vamp插件的编码非常简单,大多数参数都是通过setParameter函数设置的,如果您喜欢,可以重新编写整个类。我不知道如何在QT上编译dll,但是任何您正在开发的dll制作软件肯定都可以完成,大多数vamp插件都是单声道的,因此您必须先转换为单声道。 - Diljeet
1
@Diljeet 谢谢,但几个月前我通过 Vamp 源代码处理了它。 - S At
显示剩余3条评论

5

这不是一个库,而是单个的类:bpmdetect.{cpp,h},来自于Mixxx


(注:该类用于it技术中的音频处理)

如果我没记错的话,那段代码使用了SoundTouch。如果没有使用,那么它就是存留在代码库中的一些非常古老的垃圾代码。如果确实使用了,我不建议使用它。 - Phillip Whelan
要集成SoundTouch - http://www.surina.net/soundtouch/,只需从这里获取框架 - https://github.com/fivebats/FBAudio/tree/master/FBAudioLib/SoundTouch.framework - loretoparisi

4

VAMP插件的问题在于它无法在iOS平台上编译。只有一个build/Makefile.osx。 - loretoparisi

1
此外,如果您已经在使用GStreamer库,则可以使用soundtouch插件作为一部分的bpmdetect元素,该插件是gstreamer-plugins-bad的一部分。Python GStreamer绑定应该非常好用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接