Archit00/bbench-dep-djtransgan-pipeline
收藏资源简介:
我们收集了两个数据集来训练我们提出的方法:从Livetracklist收集的DJ混音集和从MTG-Jamendo-Dataset收集的单个EDM曲目。具体来说,我们内部从Livetracklist收集了长的DJ混音集,并且只考虑带有混音标签的混音集以确保质量。此外,我们从MTG-Jamendo-Dataset中选择了单个EDM曲目,即在整个集合中带有EDM标签的曲目。关于使用这两个数据集训练模型的详细信息在第3.1节中描述;如果您感兴趣,请查看。不幸的是,由于许可问题,我们无法提供训练数据集以重现结果。但是,我们发布了训练代码和预训练模型供您尝试。
# DJtransGAN:基于可微音频效果与生成对抗网络(Generative Adversarial Networks, GAN)的自动DJ过渡(数据生成流水线) > 本仓库包含论文《基于可微音频效果与生成对抗网络的自动DJ过渡》的代码实现,该论文收录于2022年IEEE国际声学、语音与信号处理会议(ICASSP 2022),作者为Bo-Yu Chen、Wei-Han Hsu、Wei-Hsiang Liao、Marco A. Martínez-Ramírez、Yuki Mitsufuji、Yi-Hsuan Yang,论文链接:https://arxiv.org/abs/2110.06525 ## 概述 本仓库包含DJtransGAN的数据生成流水线代码,该流水线是DJtransGAN的核心组成部分。完成数据集生成后,请参考[DJtransGAN](https://github.com/ChenPaulYu/DJtransGAN)仓库进行模型训练或部署。完整的流水线包含三个用于生成可混音对的模块,以及一个独立的混音片段生成脚本: 1. 特征提取:节拍与强拍追踪(beat & downbeat tracking)、调性估计(key estimation)与结构边界检测(structure boundary detection) 2. 可混音性评估(mixability estimation):结合音乐规则与神经网络筛选可混音的音频片段对 3. 对齐处理:针对每分钟节拍数(Beats Per Minute, BPM)、调性与提示区域(cue region)进行对齐,确保片段可完美混音 此外,若需查看更多音频示例,请访问我们的演示页面:https://paulyuchen.com/djtransgan-icassp2022/ ## 数据集 我们收集了两个数据集用于训练所提出的方法:来自[Livetracklist](https://www.livetracklist.com/)的DJ混音集,以及来自[MTG-Jamendo-Dataset](https://github.com/MTG/mtg-jamendo-dataset)的独立电子舞曲(Electronic Dance Music, EDM)音频片段。 具体而言,我们从Livetracklist中自主收集长时长DJ混音集,并仅保留带有混音标签的数据集以保障混音集质量;同时从MTG-Jamendo-Dataset中筛选带有EDM标签的音频片段作为独立曲目。关于使用这两个数据集训练模型的详细细节,请参见论文3.1节。 遗憾的是,由于版权许可问题,我们无法公开用于复现实验结果的训练数据集。不过我们已开源训练代码与预训练模型供您试用。若有其他问题,请联系作者或提交拉取请求。 ## 环境配置 ### 安装依赖 pip install -r requirements.txt ### 配置外部依赖 我们使用[music puzzle game](https://github.com/remyhuang/music-puzzle-games)完成可混音性评估模块,因此请首先克隆该仓库并将其重命名为`music_puzzle_games`: git clone https://github.com/remyhuang/music-puzzle-games.git music_puzzle_games ### 配置文件 接下来,请在`pipeline/config/settings.py`中配置全局参数,其中最重要的是设置`TRACK_DIR`与`MIX_DIR`的路径: 1. `TRACK_DIR`:存放EDM音频片段集的目录,请将所有EDM曲目放置于`{TRACK_DIR}/audio`路径下。 2. `MIX_DIR`:存放DJ混音集及其提示点的目录,请将所有混音音频放置于`{MIX_DIR}/audio`路径下,并提供元数据文件`{MIX_DIR}/meta.json`,其中需包含各混音片段的提示点(仅需标注切换点,即cue out点)。本仓库提供了示例文件供您参考格式。 ## 使用方法 我们在`examples/`与`script/`目录中提供了多个用于数据生成与流水线单模块使用的示例脚本,若需使用或修改代码,请先查阅这些示例。 ### 可混音对生成 若要生成可混音对,需按顺序运行两个脚本。首先运行`script/create_segment.py`,该脚本将对EDM音频片段集进行分段并提取相关特征: python create_segment.py [--feature=(bool, 示例值: 1)] [--stem=(bool, 示例值: 1)] [--segment=(bool, 示例值:1)] [--n_core=(int, 示例值: 5)] [--n_gpu=(int, 示例值: 0)] - `--stem`:指定是否预先缓存音源分离结果以辅助乐器检测,加快后续训练速度。 - `--feature`:指定是否预先缓存特征提取结果,加快后续训练速度。 - `--n_core`:指定使用的多处理器核心数。 - `--n_gpu`:指定使用的GPU编号。 随后运行`script/create_pair.py`以筛选适配的可混音音频片段对: python create_pair.py [--match=(str, 可选值: None, all, nn, rule)] [--n_sample=(int, 示例值: 10)] [--n_core=(int, 示例值: 4)] - `--match`:指定可混音性评估的方法: - None:随机选取一个片段作为匹配结果 - rule:仅基于音乐规则筛选片段,并随机选取一个作为匹配结果 - nn:基于神经网络(取自[music puzzle game](https://github.com/remyhuang/music-puzzle-games)的SEN模型)选取匹配片段 - all:先基于音乐规则筛选片段,再通过神经网络选取匹配片段 - `--n_core`:指定使用的多处理器核心数。 - `--n_sample`:指定可混音性评估的最大采样数,以加快训练速度。 ### 混音片段生成 若要训练DJtransGAN,还需要专业DJ混音作为参考供GAN学习。此时可运行`script/create_mix.py`生成此类数据,请确保已向`MIX_DIR`提供必要的素材: python create_mix.py [--n_core=(int, 示例值: 4)] - `--n_core`:指定使用的多处理器核心数。 ## 引用 若您在工作中使用了本仓库的代码,请引用我们的论文: @inproceedings{chen2022djtransgan, title={"Automatic DJ Transitions with Differentiable Audio Effects and Generative Adversarial Networks"}, author={Chen, B. Y., Hsu, W. H., Liao, W. H., Ramírez, M. A. M., Mitsufuji, Y., & Yang, Y. H.}, booktitle={ICASSP}, year={2022}} ## 致谢 本仓库的工作完成于索尼集团(Sony Group Corporation)的实习期间,感谢索尼的导师Wei-Hsiang Liao、Marco A. Martínez-Ramírez与Yuki Mitsufuji的悉心指导,同时感谢同事Wei-Han Hsu与中央研究院的指导老师Yi-Hsuan Yang。本研究成果为索尼集团与中央研究院的合作成果。在此谨向所有提供支持的同仁致以诚挚谢意。此外,请访问索尼的优秀AI研究仓库:https://github.com/sony/ai-research-code,以及他们在ISMIR 2022上发表的最新工作《FxNorm-automix》与《distortionremoval》。 ## 许可证 Copyright © 2022 Bo-Yu Chen 本项目基于MIT许可证(以下简称“许可证”)分发。除非符合许可证要求,否则您不得使用本软件包。您可通过以下链接获取许可证副本: https://opensource.org/licenses/MIT 除非适用法律要求或书面同意,根据许可证分发的软件均按“按原样”基础提供,不附带任何明示或暗示的担保或条件。有关许可证下的具体权限与限制,请参阅许可证文本。




