节拍数据集收集记录

 

节拍数据集

1.SDPH 数据集

SDPH (Spotify Dance Pop Hits) 是一个自建数据集,选自 Spotify 的 Dance Pop Hits 歌单,主要包含英文流行舞曲113曲,年份覆盖 2010 至 2022 年。统一截取前3分钟音频,按照 songbpm 网站 (https://songbpm.com/) 给出的速度,由人工标注所有节拍时刻。由于版权问题,该数据集不会公开,仅用于研究。

2.GZTAN 数据集

GZTAN音乐数据集是一个用于音乐分类和音乐信息检索的重要数据集,被广泛应用于音乐分类、音乐信息检索、音乐推荐等领域的研究和实践中。

它包含了1000首歌曲,每首歌曲的长度为30秒,共包含10个音乐类别,每个类别包含100首歌曲。这些类别包括:布鲁斯(blues)、古典(classical)、乡村(country)、迪斯科(disco)、嘻哈(hiphop)、爵士(jazz)、金属(metal)、流行(pop)、雷鬼(reggae)和摇滚(rock)。

这些文件是在 2000-2001 年从各种来源收集的,包括个人 CD、收音机、麦克风录音,以代表各种录音条件。该数据集的音频文件格式为WAV,采样率为22050Hz,每个样本的长度为661,500个采样点。此外,该数据集还提供了每个样本的元数据,包括歌曲名称、艺术家、年份和流派等信息。

原始数据下载地址(不可用):

http://marsyas.­info/­download/­data_sets
http://opihi.cs.uvic.ca/sound/genres.tar.gz

Kaggle镜像(可用):

https://www.kaggle.com/datasets/andradaolteanu/gtzan-dataset-music-genre-classification

Marchand 和 Peeters 对 GZTAN 进行了标注,提供了节拍和节奏信息(速度,小节,节拍,tatum,swing ratio,…) ,可以在这里下载此标注集,其中的音频下载脚本已经失效:

http://anasynth.ircam.fr/home/media/GTZAN-rhythm/

使用此数据标注需要引用[1].

3.Ballroom 数据集

该数据集包括它不包括音频文件。音频文件(698个文件,大小为1.5 gb) 原始数据集下载:

http://mtg.upf.edu/ismir2004/contest/tempoContest/node5.html (最新于2013年12月访问,目前不可用)。

请使用

http://mtg.upf.edu/ismir2004/contest/tempoContest/data1.tar.gz

Md5sum校验: 2872a3e52070bc342a4510a95e2fa0b8

由 Gouyon 等人引入的舞厅数据集的节拍和小节标注[2],目前托管在 GitHub 上:

https://github.com/CPJKU/BallroomAnnotations

注:在这个标注里面,不包含任何音乐内容的前奏没有标注,评估时应该跳过。

4.SMC 数据集

原始下载链接:http://smc.inescporto.pt/data/SMC_MIREX.zip

镜像主页: https://joserzapata.github.io/project/smc-beat-tracker-dataset/

镜像下载链接: https://bit.ly/33SlutJ

节拍跟踪系统

1.IBT 节拍跟踪系统

IBT 是由C++ 编写的音乐音频信号的实时节拍跟踪系统[8],是免费框架MARSYAS的一部分。

IBT 集成在 MARSYAS 框架 (http://marsyas.info/) ,这也是论文提到的官方实现。 源代码托管在 github, 需要编译才可以使用: https://github.com/marsyas/marsyas
由于其文档网站已经年久失修,我们使用托管在sourceforge的预编译可执行程序:
https://sourceforge.net/projects/marsyas/files/

采用其中一个 Windows 平台的 release 版本(2014-01-28) marsyas-win32-0.5.0-alpha ,于是可以利用 python 的 subprocess 模块调用命令行来执行 /bin/ibt.exe 得到结果。

IBT 的应用实例 —— 机器人 RoboNova: https://www.youtube.com/watch?v=DWKRZJdn1JU
实现细节见[3],[4]。

2.LibROSA Librosa是一个用于音频、音乐分析、处理的python工具包,一些常见的时频处理、特征提取、绘制声音图形等功能。其内置了节拍跟踪算法基于动态规划[12]。

3.Madmom

Madmom: https://github.com/CPJKU/madmom 是一个Python音乐信号处理库,用于分析音频信号并提取有关音乐的信息。它提供了许多功能,包括节奏分析、音高估计、音频分割、节拍检测、音频特征提取等。Madmom库的应用非常广泛,包括音乐信息检索、音乐自动分类、音乐自动标注、音乐自动转录等。

Madmom默认算法使用循环神经网络(RNN)和一个由隐马尔可夫模型(HMM)近似的动态贝叶斯网络(DBN)来进行节拍跟踪。DBN是一种用于建模时间序列数据的概率图模型,而HMM是一种常用的DBN近似方法。

其 bin/ 目录还提供了一些api文档中没有的算法实现:

  • CRFBeatDetector[5]
  • 动态贝叶斯网络 DBNBeatTracker[6] 注:状态空间和传递模型采用[7]
  • 多模型融合 MMBeatTracker[6]
  • 时域卷积网络 TCNBeatTracker[9]
  • BeatTracker[10]
  • BeatDetector[10]

4.pdaf 之前编写的基于卡尔曼滤波和概率数据关联滤波的的节拍跟踪方案。

精度评估实验

使用 Python 编写的评估脚本,可以调用各种算法的二进制脚本或python脚本得到结果。评估算法主要采用的是 madmom 库的 evaluation.beats.BeatEvaluation 类做精度计算,可以求解多个通用精度指标。实验结果主要看召回率,准确度, F1 精度和 P 指标,这几个指标的定义可以见[11]。

Model Dataset Recall Precision F-measure P-score time casual
ibt GTZAN 0.760 0.751 0.740 0.746 11:22
librosa GTZAN 0.780 0.726 0.730 0.694 10:20 ×
madmom GTZAN 0.893 0.875 0.871 0.860 1:16:40 ×
pdaf GTZAN 0.532 0.528 0.516 0.601 10:42
Model Dataset Recall Precision F-measure P-score time casual
ibt Ballroom 0.754 0.707 0.713 0.701 06:20
librosa Ballroom 0.782 0.665 0.699 0.659 05:17 ×
madmom Ballroom 0.901 0.933 0.906 0.865 50:28 ×
pdaf Ballroom 0.457 0.432 0.432 0.526 07:48
Model Dataset Recall Precision F-measure P-score time casual
ibt SDPH 0.755 0.752 0.753 0.770 07:28
librosa SDPH 0.716 0.711 0.712 0.718 07:02 ×
madmom SDPH 0.958 0.961 0.958 0.956 58:56 ×
pdaf SDPH 0.466 0.473 0.466 0.580 06:48

参考文献

[1] U. Marchand, G. Peeters. “Swing Ratio Estimation” in Proc. of the 18th Int. Conference on Digital Audio Effects (DAFx-15), December 2015.

[2] Gouyon F. A. et al. An experimental comparison of audio tempo induction algorithms.

[3] Santiago, Catarina B., et al. Autonomous robot dancing synchronized to musical rhythmic stimuli.

[4] Oliveira, João Lobato, et al. Beat tracking for interactive dancing robots.

[5] Filip Korzeniowski, Sebastian Böck and Gerhard Widmer. Probabilistic extraction of beat positions from a beat activation function.

[6] Sebastian Böck, Florian Krebs and Gerhard Widmer. A Multi-Model Approach to Beat Tracking Considering Heterogeneous Music Styles.

[7] Florian Krebs, Sebastian Böck and Gerhard Widmer. An Efficient State Space Model for Joint Tempo and Meter Tracking.

[8] Oliveira, Joao Lobato, et al. IBT: A Real-time Tempo and Beat Tracking System. ISMIR. 2010.

[9] Sebastian Böck, Matthew Davies and Peter Knees. Multi-Task learning of tempo and beat: learning one to improve the other.

[10] Sebastian Böck and Markus Schedl. Enhanced Beat Tracking with Context-Aware Neural Networks

[11] Matthew E, et al, Evaluation Methods for Musical Audio Beat Tracking Algorithms.

[12] Ellis, Daniel PW. “Beat tracking by dynamic programming.” Journal of New Music Research 36.1 (2007): 51-60.