BS-RoFormer实战教程:从歌曲中分离人声、鼓点与贝斯的完整流程 BS-RoFormer实战教程从歌曲中分离人声、鼓点与贝斯的完整流程【免费下载链接】BS-RoFormerImplementation of Band Split Roformer, SOTA Attention network for music source separation out of ByteDance AI Labs项目地址: https://gitcode.com/gh_mirrors/bs/BS-RoFormerBS-RoFormer 是一款基于 Transformer 注意力机制的音乐源分离模型由字节跳动 AI Lab 提出是目前音乐分离领域的 SOTA最先进方案之一。无论你想从歌曲中提取干净的人声用于翻唱还是分离鼓点、贝斯来练习混音BS-RoFormer 都能轻松胜任。本教程将从零开始带你走完环境安装、模型调用、人声分离与多音轨输出的完整流程新手也能快速上手 什么是BS-RoFormer认识这款音乐分离神器BS-RoFormer 全称 Band-Split RoPE Transformer它把音频频谱拆分成多个频带再利用轴向注意力同时在「时间」和「频率」两个维度上建模配合旋转位置编码RoPE大幅提升分离精度。相比传统方案它在音乐源分离任务上的表现大幅领先还支持立体声训练和多音轨输出正是它能在社区里被广泛复现的原因。如上图所示原始音频经过 STFT 变换后进入频带分割模块再由重复 L 次的 RoPE Transformer 块在时间与频带维度交替建模最终通过多带掩码估计输出分离后的音轨。BS-RoFormer核心优势为什么分离效果这么好频带分割Band-Split将频谱划分为约 60 个频带分别处理让模型专注学习不同频段的特征 ️轴向注意力Axial Attention沿时间与频率两个方向交替计算注意力兼顾全局结构与局部细节旋转位置编码RoPE相比传统绝对位置编码带来巨大的效果提升论文实验已验证多音轨输出支持同时分离人声、鼓、贝斯、其他等多个 stems还支持立体声训练三种模型变体基础版 bs_roformer.py、人声友好的 mel_band_roformer.py、生成式 flow_bs_roformer.py环境准备BS-RoFormer一键安装步骤BS-RoFormer 已发布到 PyPI安装非常简单一行命令即可完成pip install BS-RoFormer系统要求Python 3.6 以上、PyTorch 2.0 以上即可依赖库如 einops、librosa、rotary-embedding-torch 等会自动安装。如果你想查看或修改源码也可以克隆完整仓库git clone https://gitcode.com/gh_mirrors/bs/BS-RoFormer仓库结构清晰核心代码都集中在bs_roformer目录下入口在 bs_roformer/init.py。快速上手用BS-RoFormer分离人声与伴奏安装完成后只需几行代码就能创建模型。以默认的 BSRoformer 为例核心参数包括特征维度dim、网络深度depth、时间/频率 Transformer 深度等import torch from bs_roformer import BSRoformer model BSRoformer( dim 512, depth 12, time_transformer_depth 1, freq_transformer_depth 1, ) x torch.randn(2, 352800) # 两段 8 秒音频 target torch.randn(2, 352800) # 对应的干净音轨 loss model(x, target target) # 训练阶段计算损失 loss.backward() out model(x) # 推理阶段输出分离结果训练完成后模型会为每段输入音频生成对应的分离音轨。若需要同时输出人声、鼓、贝斯等多个 stems可以在创建模型时开启num_stems参数详细用法可参考 tests/test_roformer.py 中的示例。进阶玩法三种模型变体怎么选除了标准版 BSRoformer项目还提供了两个特色变体MelBandRoformer人声分离更细腻来自后续论文的 Mel-Band 变体使用梅尔滤波器组划分频带更符合人耳听觉特性在提取人声时往往能保留更多细节。从 mel_band_roformer.py 中导入MelBandRoformer即可使用参数结构基本一致。FlowBSRoformer生成式音乐分离这是一个非常前沿的变体——用流匹配Flow-Matching替代传统的掩码估计让模型学习「纯噪声到目标音频」之间的流动过程分离效果更具生成式美感。它通过sample方法进行推理from bs_roformer import FlowBSRoformer model FlowBSRoformer(dim 512, depth 12) out model.sample(x, steps 10)调参技巧如何获得更纯净的分离效果depth与dim追求极致效果可加大深度与特征维度但会显著增加显存占用入门建议先用小参数验证流程 ⚡time_transformer_depth/freq_transformer_depth控制时间与频率维度的注意力层数二者配合可平衡分离质量与速度stft_hop_length默认 51244.1kHz 下约 10ms官方建议可调为// 2或// 4以获得更好的重建质量num_stems需要一次输出多个音轨时开启配合stereo True可处理立体声音源常见问题解答Q需要多强的硬件才能运行训练需要较大显存的 GPU仅做推理时小参数模型在普通显卡上即可运行入门可先用dim 32, depth 1的小配置体验流程。Q如何获取预训练权重论文已由社区成功复现并开源权重README 中提供了 vocal 模型等权重链接可配合本教程的调用方式直接加载使用。Q分离质量不够好怎么办优先检查输入音频采样率是否与模型匹配默认 44.1kHz再尝试增加depth或启用 Mel-Band 变体人声分离场景通常表现更佳。现在就去下载一首歌试试吧用 BS-RoFormer 分离人声、鼓点与贝斯无论做翻唱、扒谱还是混音练习都能让你的创作效率翻倍 【免费下载链接】BS-RoFormerImplementation of Band Split Roformer, SOTA Attention network for music source separation out of ByteDance AI Labs项目地址: https://gitcode.com/gh_mirrors/bs/BS-RoFormer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考