尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Demucs 音频分离部署指南:5分钟跑通,一首4分钟的歌分离只要2分钟

Demucs 音频分离部署指南:5分钟跑通,一首4分钟的歌分离只要2分钟 Demucs 音频分离部署指南5分钟跑通一首4分钟的歌分离只要2分钟【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs你肯定遇到过这种糟心事好不容易从网上找到一首歌的伴奏下载回来却发现里面还带着隐隐的鼓点和人声底噪。别急着去找那些收费的在线工具——Meta 开源的 DemucsHybrid Spectrogram and Waveform Source Separation 论文的官方代码就能自己搞定这一切而且完全免费、离线可用。它能一键把任意一首歌拆成鼓、贝斯、人声和其他四个音轨分离质量常年霸榜 SDR 9.0 dB。这篇文章会带你从零装好它、跑通第一首歌再通过几个关键参数把处理速度提上来让一首 4 分钟的歌曲在 GPU 上 2 分钟内出成品。上图是 Demucs v4Hybrid Transformer的模型架构一条分支处理波形、一条分支处理频谱中间用 Transformer 做跨域融合这也是它比传统分离模型更干净的原因。读完这篇文章你会获得5 分钟跑通第一首分离选对模型不再纠结显存不够一键化解批量分离自动排队八成报错自己会修5分钟先跑通先看到成果再谈优化我懂你装工具最怕装完不知道有没有用。所以咱们跳过所有铺垫直接上手。如果你只想用、不想研究代码一条命令就够pip3 install --user -U demucs装完验证一下demucs --version能打印出版本号就说明装好了。接着随便找一首歌直接开跑demucs -d cpu 你的歌曲.mp3第一次运行会联网下载模型权重htdemucs 是默认模型约 80MB之后就全是本地运行。命令跑完后在separated/htdemucs/你的歌曲/目录下你会看到四个文件drums.wav—— 纯鼓点bass.wav—— 纯贝斯vocals.wav—— 纯人声other.wav—— 其他配乐到这一步你已经完成了第一次音频分离。CPU 处理速度大概是歌曲时长的 1.5 倍也就是一首 4 分钟的歌约 6 分钟出结果——别嫌慢接下来告诉你怎么提速 3 倍以上。小提示如果你用的 Linux 是 Ubuntu且系统自带 Python 版本过低低于 3.8安装方法见官方文档 docs/linux.md里面给了用 Miniconda 兜底的方案。核心能力拆解按功能模块认识 Demucs跑通之后咱们按功能而不是按步骤来认识它。每个模块我都回答四个问题是什么、何时用、怎么配、配错会怎样。模块一选模型——速度与质量的平衡木模型是 Demucs 的灵魂。同一首歌用不同模型跑速度和干净程度天差地别。官方预置了 8 个模型用-n参数切换demucs --list-models # 查看全部可用模型模型定位分离质量速度说明mdx_q快速模式中等最快量化压缩版文件小适合低配机器mdx平衡模式中高较快MDX 挑战赛 Track A 冠军htdemucs默认模型高中等v4 混合 Transformer 模型默认就它hdemucs_mmi经典 v3高中等老牌 Hybrid Demucs 重训版htdemucs_ft精细模式最高最慢约 4 倍微调版追求极致质量再选它htdemucs_6s六轨实验看音源较慢额外拆出吉他、钢琴钢琴目前效果一般mdx_extra/mdx_extra_q最强阵容最高较慢用大量额外数据训练含测试集怎么配GPU 用户直接用默认htdemucs就很好CPU 用户赶时间选mdx_q做精修后期再上htdemucs_ft。配错的后果htdemucs_ft在 CPU 上跑一首歌可能要十几分钟不是质量差是你不该选它。模型定义和加载逻辑在 demucs/pretrained.py想看每个模型的具体说明可以翻源码。模块二分离模式——四轨全拆还是只抠人声默认情况下 Demucs 把歌拆成四个音轨。但很多时候你只想要人声做卡拉OK或只想要伴奏做翻唱 remix这时候用--two-stems就能只输出两个文件# 只分离人声 伴奏卡拉OK模式 demucs -n htdemucs --two-stemsvocals 你的歌曲.mp3vocals可以换成drums、bass、other任意一个音源。输出会变成vocals.wav和no_vocals.wav两个文件。配错的后果注意--two-stems只在输出时把其他音轨合并它不会让你跑得更快或更省内存因为内部仍然是完整分离后再合并的源码里写的明明白白见 demucs/separate.py。模块三输出格式——WAV、MP3 还是 FLAC默认输出是 16bit 的 WAV44.1kHz 采样率体积偏大。三个常用选项参数作用适用场景--mp3--mp3-bitrate 320输出 MP3手机随手听、传微信--flac输出无损压缩 FLAC本地存储又不想损失音质--float32/--int24提升 WAV 位深专业后期避免精度损失# 输出 320kbps 的 MP3 demucs --mp3 --mp3-bitrate 320 你的歌曲.mp3 # 输出 FLAC demucs --flac 你的歌曲.mp3还有个容易踩的坑叫爆音。分离出的音轨偶尔会超限clippingDemucs 默认用rescale自动缩放整体音量来规避代价是各音轨之间的相对音量会变。如果你更想要原始响度加--clip-mode clamp强制硬切。相关参数都在 demucs/separate.py 的get_parser()里随手可查。配错的后果--mp3依赖 lameenc 库--flac依赖 ffmpeg缺依赖时命令会直接报错退出——所以下一节我们先把依赖补齐。模块四提速与省显存——性能的核心战场这一节是全文的精华。四个参数用好了处理速度提升 3 倍不是口号。1. GPU 加速-d cuda默认情况下 Demucs 会优先用 CUDA见 demucs/api.py 的Separator实现。有 N 卡就显式指定nvidia-smi # 先确认驱动装好 demucs -d cuda 你的歌曲.mp32. 显存不足--segment是你的救命稻草显存不够是最常见的报错。原理很简单Demucs 会把长音频切成一段一段处理--segment 8就是每段 8 秒。段越短越省显存但也可能略降质量。你的显存推荐配置3GB--segment 82GB再加环境变量PYTORCH_NO_CUDA_MEMORY_CACHING14GB默认参数即可约需 7GB 显存PYTORCH_NO_CUDA_MEMORY_CACHING1 demucs -d cuda --segment 8 你的歌曲.mp3注意HTDemucs 系列的 Transformer 模型训练时最大分段是 7.8 秒--segment传超过 7 的值会直接报错拒绝运行这是源码里写死的保护逻辑别试图强行加大。3. 并行处理-j善用多核-j 4表示同时用 4 个进程处理。多核 CPU 上提速明显但它会把内存占用乘以同样的倍数——官方文档原话be careful。建议取 CPU 核心数的一半左右别贪多。4. 玄学提速--shifts和--overlap--shifts是官方论文里的shift trick对输入做随机平移、多次预测再取平均能提升约 0.2 个点的 SDR但速度会按倍数变慢。没 GPU 别开。--overlap控制分段预测时的重叠率默认 0.25赶时间可以降到 0.1。配错的后果-j开满 --shifts 10一起上你的内存会被瞬间吃光直接 OOM 崩溃这不是 bug是参数用法问题。模块五输出位置与程序化调用想控制文件放哪用-o想自定义文件名格式用--filenamedemucs -o /data/separation --filename {track}/{stem}.{ext} 你的歌曲.mp3模板里{track}是歌名、{stem}是音轨名、{ext}是扩展名。如果你想把分离能力嵌进自己的程序Demucs 给了两个入口。简单批量用separate.mainimport demucs.separate demucs.separate.main([--mp3, --two-stems, vocals, song.mp3])要更细的控制就用Separator类官方 API 文档在 docs/api.mdfrom demucs.api import Separator separator Separator(modelhtdemucs, devicecuda, jobs4) origin, separated separator.separate_audio_file(song.mp3) separator.save_audio(separated[vocals], vocals.wav)一个完整实战把 4 分钟 MP3 变成伴奏 人声纸上谈兵结束现在咱们串一遍完整流程。目标把一首 4 分钟的 MP3 分离出高质量人声和伴奏压缩成 MP3全程可复现。第 1 步补齐依赖约 2 分钟sudo apt update sudo apt install -y ffmpeg为什么要 ffmpeg从 torchaudio 0.12 开始解码 MP3 必须有它不装的话一跑 MP3 就报错。官方在 docs/linux.md 里专门强调过这一点。第 2 步跑分离GPU 约 2 分钟CPU 约 6 分钟demucs -d cuda --two-stemsvocals --mp3 --mp3-bitrate 320 song.mp3这一条命令同时干了三件事用默认 htdemucs 模型分离、只保留人声伴奏、输出成 320kbps 的 MP3。第 3 步验收产物ls separated/htdemucs/song/ # 预期输出no_vocals.mp3 vocals.mp3听到这你已经拥有了一份可以放进播放器的纯伴奏。全程只用了 3 条命令耗时取决于你的硬件——这就是 Demucs 的日常使用方式。排错速查9 种常见问题的三段式解法报错现象原因分析解决动作FFmpeg not found缺音频解码依赖sudo apt install ffmpeg重装CUDA out of memory显存不够加--segment 82GB 显存再加PYTORCH_NO_CUDA_MEMORY_CACHING1Model not found/ 下载失败权重没下全重跑一次让它断点续传或手动下载模型放入~/.cache/demucs/报segment 太长错误超出模型训练分段上限HTDemucs 系列--segment最大只能到 7File xxx does not exist路径带空格没加引号把整个路径用双引号包起来demucs my song.mp3分离结果爆音输出超限触发削波用默认rescale模式或改--clip-mode clamp内存被吃光崩溃-j开太多内存成倍增长降到核心数的一半比如 8 核机器用-j 4分离速度极慢在用htdemucs_ft或开了--shifts换mdx_q模型或去掉--shifts人声里还有鼓点残留模型选得太弱换htdemucs或htdemucs_ft进阶玩法从脚本到服务按你的水平对号入座入门级批量分离脚本一次性处理整个文件夹的歌写个 5 行的 shell 脚本就够了#!/bin/bash INPUT_DIRinput OUTPUT_DIRseparated mkdir -p $OUTPUT_DIR for file in $INPUT_DIR/*.mp3; do [ -e $file ] || continue demucs -d cuda -j 4 --segment 8 -o $OUTPUT_DIR $file done经验之谈内存别省着用、但也别同时堆太多任务CPU 和显存各留三成余量机器才不会罢工。进阶级用 Python API 写自己的批处理Separator类支持传入callback回调你可以在每个片段分离开始/结束时收到进度信息随时中断任务。想给程序加个断点续传或进度条看 demucs/api.py 里的 Callback 说明里面有完整的字段定义。高手级部署成常驻服务需要长期稳定跑任务的话可以把 Demucs 挂成 systemd 服务[Unit] DescriptionDemucs Audio Separation Service Afternetwork.target [Service] Useryourname EnvironmentPYTORCH_NO_CUDA_MEMORY_CACHING1 ExecStart/usr/local/bin/demucs -d cuda -j 4 --segment 8 /watch/*.mp3 Restartalways [Install] WantedBymulti-user.target保存到/etc/systemd/system/demucs.service然后sudo systemctl daemon-reload sudo systemctl start demucs sudo systemctl enable demucs # 开机自启 sudo journalctl -u demucs -f # 实时看日志科研级训练你自己的模型普通玩法到此为止但如果你想让 Demucs 更懂你的音乐品类可以自己微调。训练入口和全套配置在 docs/training.md里面有模型动物园Model Zoo、数据准备和评测方法。想快速改参数改 conf/config.yaml 或 conf/variant/finetune.yaml 就行后者是官方给的微调模板4 个 epoch、学习率 6e-4。想测性能瓶颈用 tools/bench.py 跑基准它能告诉你每段的耗时和显存峰值。想深度参与开发先把仓库克隆到本地git clone https://gitcode.com/gh_mirrors/de/demucs cd demucs pip install -r requirements.txt收尾记住这几个操作就赢了把整篇文章压成一张速查卡安装pip3 install --user -U demucs缺 MP3 支持就装ffmpeg首跑demucs -d cpu 歌曲.mp3产物在separated/htdemucs/歌曲/提速GPU 用-d cuda显存紧用--segment 8抠人声--two-stemsvocals压体积--mp3 --mp3-bitrate 320批处理shell 循环或Separator的 Python API你现在缺的不是工具是一首想分离的歌。去翻翻你的播放列表跑起来的那一刻你会回来感谢这 6 分钟。【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表