disco-eth/FMA-rank
收藏FMA-rank 数据集概述
数据集描述
FMA-rank 是一个基于 CLAP 的统计排名数据集,用于对 FMA(Free Music Archive)音乐数据集中的样本进行排名。FMA 包含超过 8000 小时的 Creative Commons 许可音乐,涵盖 107k 首曲目、16k 位艺术家和 15k 张专辑。FMA-rank 通过计算每个样本在 CLAP 潜在空间中属于估计高斯分布的对数似然值来进行排名,对数似然值越高表示样本质量越好。
数据集大小
数据集大小介于 100K 到 1M 之间。
数据集使用
用户可以通过以下步骤加载和过滤 FMA 样本:
- 从官方 GitHub 下载 FMA 数据集并解压。
- 设置 FMA 文件夹路径。
- 运行提供的代码片段,根据给定的百分比加载和过滤 FMA 样本,返回一个 HF 音频数据集。
代码示例
python from datasets import load_dataset, Dataset, Audio import os
设置 FMA 文件夹路径
fma_root_dir = "/path/to/fma/folder"
设置数据集使用的百分比
start_percentage = 80 end_percentage = 100
加载 FMA-rank.csv 并排序
csv_loaded = load_dataset("disco-eth/FMA-rank") fma_item_list = csv_loaded["train"] fma_sorted_list = sorted(fma_item_list, key=lambda d: d[CLAP-log-likelihood])
def parse_fma_audio_folder(fma_root_dir): valid_fma_ids = [] subfolders = os.listdir(fma_root_dir) for subfolder in subfolders: subfolder_path = os.path.join(fma_root_dir, subfolder) if os.path.isdir(subfolder_path): music_files = os.listdir(subfolder_path) for music_file in music_files: if ".mp3" not in music_file: continue else: fma_id = music_file.split(.)[0] valid_fma_ids.append(fma_id) return valid_fma_ids
选择存在的文件
valid_fma_ids = parse_fma_audio_folder(fma_root_dir) df_dict = {"id":[], "score": [], "audio": []} for fma_item in fma_sorted_list: this_id = f"{fma_item[id]:06d}" if this_id in valid_fma_ids: df_dict["id"].append(this_id) df_dict["score"].append(fma_item["CLAP-log-likelihood"]) df_dict["audio"].append(os.path.join(fma_root_dir, this_id[:3] , this_id+".mp3"))
根据百分比过滤数据集
i_start = int(start_percentage * len(df_dict["id"]) / 100) i_end = int(end_percentage * len(df_dict["id"]) / 100) df_dict_filtered = { "id": df_dict["id"][i_start:i_end], "score": df_dict["score"][i_start:i_end], "audio": df_dict["audio"][i_start:i_end], }
获取最终数据集
audio_dataset = Dataset.from_dict(df_dict_filtered).cast_column("audio", Audio())
数据集特征
最终数据集包含以下特征:
id: 样本 IDscore: CLAP 对数似然值audio: 音频文件路径



