资讯动态

Demucs音频分离保姆级全流程:从单曲拆解到整张歌单批量处理

发布时间:2026/8/14 16:57:59 来源:尧图企业网站定制
Demucs音频分离保姆级全流程从单曲拆解到整张歌单批量处理【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs想给朋友的翻唱视频做伴奏想剪一支只留人声的混剪却发现网上的在线分离工具不是排队就是限时长导出的音质还常常打折扣。Demucs 正是为这种场景而生的开源音频源分离工具它能把一首歌拆成鼓、贝斯、人声与其他四条独立音轨其默认模型在标准测试集上的分离得分高达 9.0 dB普通电脑上处理一首 4 分钟的歌曲也只需几分钟全程只有一条命令。一、先花 30 秒把一首歌拆给你看与其先铺垫一堆概念不如直接上手。打开终端依次执行下面两条命令# 1. 安装 Demucs若提示权限不足可去掉 --user pip3 install --user -U demucs # 2. 对当前目录下的 test.mp3 做人声分离 python3 -m demucs -d cpu test.mp3安装完成后Demucs 会自动下载模型权重约 80MB只需一次然后开始处理。如何确认成功处理结束后当前目录下会出现separated/htdemucs/test/文件夹里面躺着drums.wav、bass.wav、other.wav、vocals.wav四个文件——这四份就是被拆开的歌曲。随便用播放器打开vocals.wav如果你能听到干净的清唱、几乎听不到乐器声说明第一单已经跑通了。说明-d cpu是显式指定用 CPU 计算。如果机器有 NVIDIA 显卡且装好了 PyTorch 的 CUDA 版本去掉这个参数即可自动使用 GPU速度会快上数倍。Windows 用户请把命令里的python3换成python.exe并在 Anaconda 终端里执行。二、安装前的环境体检与两条安装路线Demucs 对环境的要求并不苛刻但也别跳过体检直接装否则容易在运行时才报错。2.1 三分钟环境自检依次执行下面三条命令检查版本是否满足python3 --version # 需要 3.8 及以上 ffmpeg -version # 需要已安装 ffmpeg pip3 --version注意torchaudio 0.12 之后解码 MP3 必须依赖 ffmpeg没有它你会直接看到 FFmpeg not found 之类的报错。Linux 上可用sudo apt install ffmpeg补齐。各系统的完整安装说明分别见 docs/linux.md、docs/mac.md、docs/windows.md。2.2 普通用户路线一条 pip 命令如果你只是想拆歌、做伴奏最省事的做法就是第一章里的pip3 install --user -U demucs。它只装了分离所需的最精简依赖不会污染系统的其他 Python 环境。如何确认安装成功运行python3 -m demucs --list-models能看到一长串可用模型名。2.3 开发者路线源码环境如果你想改代码、看实现甚至自己训练模型则建议走源码路线git clone https://gitcode.com/gh_mirrors/de/demucs cd demucs python3 -m venv venv source venv/bin/activate pip install -r requirements.txt没有 GPU 的话用 CPU 版依赖即可有 GPU 时requirements.txt之外再单独安装配套 CUDA 的 PyTorch 即可。依赖清单区分了仅分离与可训练两档可参考项目根目录的requirements_minimal.txt与environment-cpu.yml/environment-cuda.yml。三、第一次分离的完整流程与模型怎么选跑通一次之后就该弄清楚拆出来的是什么、用哪个模型拆这两个问题了。3.1 读懂输出目录所有输出默认落在separated/模型名/歌曲名/下里面的四条音轨都是 44.1kHz 的立体声 WAV。它们的含义是vocals.wav人声drums.wav鼓与打击乐bass.wav贝斯低频other.wav剩下的所有伴奏部分。Demucs 采用时域 频域双分支的混合架构再由跨域 Transformer 融合两路特征最终把混音拆回四个源。其架构简图如下3.2 三组高频命令速查# 只要人声伴奏二选一输出 vocals 和 no_vocals卡拉 OK 模式 python3 -m demucs --two-stemsvocals song.mp3 # 输出压缩为 MP3避免 WAV 占空间 python3 -m demucs --mp3 --mp3-bitrate 320 song.mp3 # 指定模型与输出目录 python3 -m demucs -n htdemucs_ft -o my_out song.mp33.3 模型家族怎么挑-n参数控制使用哪个预训练模型这是影响速度-质量平衡最关键的一个旋钮模型名定位一句话点评htdemucs默认模型混合 Transformer速度与质量的均衡之选htdemucs_ft精细调优版耗时约 4 倍质量略胜一筹htdemucs_6s六音源实验版额外拆出 guitar 与 pianohdemucs_mmiv3 重训版经典混合模型稳健mdx / mdx_extra比赛级模型训练数据更多质量上限高mdx_q / mdx_extra_q量化版体积小、下载快质量略降如何确认选对了跑--list-models查看全部可用模型日常用默认的htdemucs就足够追求极致质量且时间充裕再上htdemucs_ft。四、跑得慢、显存爆三条提速通路分离速度取决于算力但掌握下面三个开关能让你在有限硬件上榨出更多性能。4.1 CPU 用户接受现实善用并行没有 GPU 时Demucs 的处理耗时大约是音频时长的 1.5 倍——一首 4 分钟的曲子约 6 分钟出结果。若 CPU 是多核可用-j开启并行python3 -m demucs -d cpu -j 4 song.mp3注意-j的并行度会成倍抬高内存占用机器内存不大时别贪多先看自己的核心数与内存再定。4.2 GPU 用户显存不够就切段Demucs 会把整首歌按段切分后逐段预测--segment参数控制每段秒数段越短越省显存代价是质量略降。显存与配置的对应关系如下显存规模推荐配置8GB 及以上默认参数直接跑约 3GB加--segment 8约 2GB再加环境变量PYTORCH_NO_CUDA_MEMORY_CACHING1注意 Transformer 系列模型对段长有硬性上限约 7.8 秒--segment超过上限会被程序直接拒绝并提示。如何确认生效运行后观察进程的显存占用不再报CUDA out of memory即为通过。4.3 想要更稳的分离质量加次数--shifts会让模型对输入做多次随机平移预测后取平均能带来最多约 0.2 dB 的质量提升论文里用的就是 10 次。代价是时间成倍增加只有 GPU 用户建议尝试python3 -m demucs --shifts 10 song.mp3五、从单曲升级成整个歌单的批量处理手动一首一首敲命令太累写个几行的循环脚本把整个歌单交给它就好。5.1 一个可直接套用的批处理脚本把 MP3 放进songs/目录后运行#!/bin/bash mkdir -p separated for f in songs/*.mp3; do echo 正在处理$f python3 -m demucs -d cuda --segment 8 -n htdemucs $f done echo 全部完成结果在 separated/ 目录下建议同一时间排队处理的文件不要超过 4 个避免内存与显存被瞬间占满。5.2 按需定制输出格式输出默认是 16bit 的 WAV占空间较大。下面这些开关可以按场景调整# 无损压缩存 FLAC python3 -m demucs --flac song.mp3 # 32 位浮点 WAV适合后期制作 python3 -m demucs --float32 song.mp3 # 避免爆音默认自动缩放也可改为硬削波 python3 -m demucs --clip-mode clamp song.mp3想完全掌控输出文件名还可以用--filename指定模板语法说明见 demucs/separate.py。六、新手高频翻车的六个场景与应对清单现象常见原因处理办法FFmpeg not found / 打不开 MP3缺少 ffmpeg安装 ffmpeg 后重试CUDA out of memory显存不足按 4.2 节调小--segmentFile does not exist路径含空格未被引号包裹给整个路径加引号demucs my song.mp3Could not find a pre-trained model模型名拼错或下载失败核对--list-models的名称segment 超长被拒绝超过 Transformer 模型上限把--segment调回 7.8 秒以内人声里明显残留乐器声模型或参数选择问题换htdemucs_ft或调大--shifts其中模型下载失败最常见于网络不稳。模型权重通过torch.hub下载并缓存到本地删掉本地缓存后重跑命令即可重新下载如果公司网络被墙可以提前用浏览器下载权重放入缓存目录。模型清单可参考 demucs/remote/files.txt各模型配置文件在 demucs/remote/。七、把 Demucs 请进你自己的代码里命令行只是 Demucs 的入口之一它同样提供了干净的 Python API适合写进自己的工具链。7.1 最省事的一行式调用import demucs.separate demucs.separate.main([--mp3, --two-stems, vocals, -n, htdemucs, song.mp3])7.2 面向对象的 Separator APIimport demucs.api separator demucs.api.Separator(modelhtdemucs) origin, stems separator.separate_audio_file(song.mp3) for name, audio in stems.items(): # 注意save_audio 不会自动创建目录 demucs.api.save_audio(audio, fout/{name}.wav, samplerateseparator.samplerate)如果中途遇到显存不足不需要重建实例直接调separator.update_parameter(segment8)即可热切换参数。完整的类与方法说明见 docs/api.md。7.3 再进一步训练与性能基准想微调出自己的专属模型项目提供了完整的训练框架配置示例在 conf/variant/finetune.yaml训练流程参考 docs/training.md想量化不同模型在自家机器上的速度可以跑 tools/bench.py 生成对比数据。八、收尾要点回顾与下一步进阶最后把全文关键点浓缩成一张备忘清单安装普通用户pip3 install --user -U demucs前提是 Python 3.8 且装了 ffmpeg上手python3 -m demucs -d cpu 歌曲.mp3结果在separated/模型名/歌曲名/下选型默认htdemucs最均衡求质量上htdemucs_ft求轻量用mdx_q提速GPU 用户用--segment压显存CPU 用户用-j开并行批量循环脚本 --mp3/--flac控制体积进阶Python API 可无缝嵌入自己的应用训练入口在docs/training.md。如果你只是偶尔做做伴奏、剪剪混音到第三步就可以毕业了如果你想把分离质量压榨到极限或接入自己的播放器、剪辑软件做自动化后面几章已经为你铺好了路。动手拆第一首歌吧那将是整条学习曲线里最爽的一步。【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价