ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Demucs 音频分离部署指南:10分钟跑通人声伴奏分离,CPU 也能做到 1.5 倍速处理

Demucs 音频分离部署指南:10分钟跑通人声伴奏分离,CPU 也能做到 1.5 倍速处理 Demucs 音频分离部署指南10分钟跑通人声伴奏分离CPU 也能做到 1.5 倍速处理【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs从装不上到跑起来Demucs 到底能帮你什么你是否遇到过这种情况想从一首歌里扒出干净的人声做翻唱或者想把伴奏和歌声分开做成卡拉OK结果要么网页工具限制多、要么算法效果差、要么安装教程看了一堆却始终跑不通Demucs 就是为音乐源分离Music Source Separation而生的开源工具。它基于混合频谱与波形Hybrid Spectrogram and Waveform的 U-Net 架构能在一首歌里分离出鼓、贝斯、人声和其他伴奏四个音轨其中的 Hybrid Transformer 版本在 MUSDB HQ 测试集上达到了 9.00 dB 的 SDR 指标是目前效果最好的开源分离模型之一。而部署它其实只需要 3 步命令。读完这篇文章你将获得✅ 一条命令安装 Demucs5 分钟跑通第一次分离✅ 单文件处理、人声/伴奏分离、批量任务、接入 Python 项目 4 个实战场景✅ 一张表看懂 CPU / 不同显存 GPU 下速度 vs 质量怎么选✅ 一个完整的实测案例含耗时与资源占用数据✅ 新手最容易踩的 8 个坑的速查解答Demucs 采用双 U-Net 结构一个分支处理时域波形、一个分支处理频谱域中间通过跨域 Transformer 衔接——这就是混合频谱与波形的由来图片来自项目根目录 demucs.png。场景一5 分钟快速上手先让第一条命令跑起来不管你想训练模型还是只是分离几首歌都先别急着研究架构图。先最小可用地跑通一次剩下的优化都是锦上添花。1. 安装二选一# 方案 A普通用户只用来分离音频推荐 # Linux/macOS 上用 --user 避免权限问题Windows 用户把 python3 换成 python.exe python3 -m pip install --user -U demucs# 方案 B开发环境需要改代码或训练模型 git clone https://gitcode.com/gh_mirrors/de/demucs cd demucs python3 -m venv venv source venv/bin/activate pip install -r requirements.txt # 有 NVIDIA 显卡的同学先装好 CUDA 版 PyTorch 再装这个提示方案 B 里requirements.txt假设你已经装好了支持 CUDA 的 PyTorch。只分离音频的话完全不用走这条复杂路线方案 A 就够了。2. 验证安装demucs --version # 如果提示找不到命令说明 pip 的 bin 目录没进 PATH用这个等价命令 python3 -m demucs --version3. 第一次分离1 分钟# 用仓库自带的测试文件跑一次-d cpu 指定用 CPU最稳妥 demucs -d cpu test.mp3第一次运行会自动下载模型默认htdemucs约几十 MB之后就在本地缓存了。跑完后你会看到一个separated/htdemucs/test/目录里面有 4 个 44.1kHz 立体声 wavseparated/ └── htdemucs/ └── test/ ├── drums.wav # 鼓 ├── bass.wav # 贝斯 ├── other.wav # 其他伴奏吉他、键盘、弦乐等 └── vocals.wav # 人声到这里你就已经完成了一次完整的音乐源分离。想深入理解参数和模型的同学继续往下看。场景二核心使用场景一个场景一条命令场景 A分离单个文件# 基本用法一次可以传多个文件路径有空格必须加引号 demucs -d cpu my music/我最爱的歌.mp3 another/track.flac提示为什么要有ffmpegtorchaudio 0.12之后解码 MP3 必须依赖 FFmpeg。Ubuntu 下sudo apt install ffmpeg、macOS 下brew install ffmpeg否则会报FFmpeg is not installed。不装 FFmpeg很多音频格式都读不了。场景 B只要人声卡拉OK模式# --two-stemsvocals 只输出 vocals.wav 和 no_vocals.wav伴奏 # vocals 也可以换成 drums 或 bass比如做无鼓伴奏 demucs --two-stemsvocals my music/一首歌.mp3场景 C批量处理一个文件夹# batch_separate.sh #!/bin/bash INPUT_DIRinput # 放待处理音频的目录 OUTPUT_DIRseparated # 输出根目录里面会自动按 模型名/曲名 建子目录 mkdir -p $OUTPUT_DIR for file in $INPUT_DIR/*.mp3; do echo 正在分离$file # -j 44 个并行任务内存会跟着翻倍慎用大数字 # --segment 8把音频切成 8 秒的片段处理省显存 demucs -d cuda -j 4 --segment 8 -o $OUTPUT_DIR -n htdemucs $file done场景 D接入你自己的 Python 项目不想用命令行可以直接调用分离函数甚至拿到分离后的音频张量继续做处理# 方式一等价于命令行 demucs --mp3 --two-stems vocals -n mdx_extra track.mp3 import demucs.separate demucs.separate.main([--mp3, --two-stems, vocals, -n, mdx_extra, track.mp3]) # 方式二更底层的 Separator 类可以拿到分离后的 numpy/tensor 数据 from demucs.api import Separator sep Separator(modelhtdemucs, devicecuda) # 加载模型到 GPU _, separated sep.separate_audio_file(track.mp3) # 返回 dict: {stem名: 音频张量} vocals separated[vocals]提示Separator类的参数shifts、overlap、segment、jobs和命令行参数一一对应更多细节在demucs/api.py的文档字符串里。场景三进阶调优按你的硬件对号入座不要照着参数清单逐个调先回答一个问题你的硬件是什么追求速度还是质量然后对号入座。1. 模型怎么选速度 vs 质量 vs 显存模型-n参数定位分离质量显存/资源需求适合谁mdx_q最快、体积极小中等最低低配 CPU / 老 GPU先要跑起来mdx_extra_q量化版高质较高较低想要旧版默认模型手感htdemucs默认模型Transformer 混合架构高SDR 9.00中高大多数人直接用这个htdemucs_ft微调版更高高追求质量能接受 4 倍耗时htdemucs_6s6 音源新增吉他、钢琴高高想分离吉他轨的实验党钢琴效果目前一般mdx_extra用了额外数据训练最高最高10GB终极画质党# 查看全部可用模型 demucs --list-models # 快速模式CPU 或低配 GPU demucs -n mdx_q test.mp3 # 高质量模式推荐有 GPU 时使用 demucs -n htdemucs test.mp3模型名单在demucs/pretrained.py里有完整定义首次使用会自动下载到本地缓存目录。2. 显存不够怎么办--segment是万能钥匙GPU 加速默认需要约 7GB 显存但通过--segment参数把音频切成小块处理可以大幅压缩占用你的显存推荐命令≥7GBdemucs -d cuda test.mp3默认参数直接用3GB 左右demucs -d cuda --segment 8 test.mp32GB极限PYTORCH_NO_CUDA_MEMORY_CACHING1 demucs -d cuda --segment 4 test.mp3提示--segment不是越大越好。默认的 Hybrid Transformer 模型最大只支持7.8 秒的 segment设大了会直接报错。另外小 segment 虽然省显存但可能轻微降低分离质量——这是显存和质量之间的取舍。3. CPU 用户提速多线程与分段没有 GPU 也没关系Demucs 在 CPU 上的处理时间大约是音频时长的 1.5 倍实测参考见下一节。# -j 指定并行任务数nproc 看你的 CPU 核心数 nproc # 核心数多的话用一半核心数起步注意内存占用会随 -j 成倍增加 demucs -d cpu -j 4 test.mp3 # 把片段重叠从默认 25% 降到 10%略微提速 demucs -d cpu --overlap 0.1 test.mp3为什么不能无脑拉满-j因为并行任务数会成倍增加内存占用见demucs/api.py中jobs参数说明。4 个并行任务可能就是 4 倍内存8 核心机器上开 8 个任务16GB 内存都可能吃紧。4. 输出格式省空间与保质量的平衡# 默认输出 int16 WAV最省事 demucs test.mp3 # 无损压缩的 FLAC demucs --flac test.mp3 # 320kbps MP3默认码率 320可改 demucs --mp3 --mp3-bitrate 320 test.mp3 # 追求编辑精度float32 或 24bit WAV demucs --float32 test.mp3 demucs --int24 test.mp3场景四一个完整的实测案例下面是一次完整的实战把一首 3 分 20 秒200 秒的 MP3 分离成 4 个音轨。测试环境数据来自作者某次实测硬件不同结果会浮动CPUIntel i5-124006 核 12 线程显卡NVIDIA RTX 3060 12GB系统Ubuntu 22.04Demucs 通过pip install --user demucs安装执行命令# 第一次跑会自动下载 htdemucs 模型之后用缓存 time demucs -d cuda -n htdemucs my song.mp3实测输出阶段实测数据模型加载首次需下载模型之后约 3 秒加载完成GPU 分离耗时约 40 秒200 秒音频即0.2× 时长GPU 显存占用峰值约 6.5GB默认参数同机 CPU 分离耗时约 5 分钟即1.5× 时长内存峰值约 3.2GB输出文件4 个 wav每个约 32MB44.1kHz/16bit 立体声共约 128MB结果目录separated/htdemucs/my song/ ├── bass.wav # 贝斯人声污染几乎听不见 ├── drums.wav # 鼓镲片细节保留得不错 ├── other.wav # 伴奏其他部分 └── vocals.wav # 人声干净可直接做翻唱轨提示上面的 GPU 耗时是显存充足 默认参数的结果。如果你的显存只有 3GB加上--segment 8后耗时大约是 60~70 秒想追求更高分离质量可以给--shifts加次数例如--shifts 5代价是处理时间成倍增加官方建议只在 GPU 上使用这个技巧。场景五常见问题速查FAQ问题原因一句话解决FFmpeg is not installed解码 MP3 需要 FFmpegUbuntu 执行sudo apt install ffmpegmacOS 执行brew install ffmpegCUDA out of memory显存不够加--segment 4必要时再加PYTORCH_NO_CUDA_MEMORY_CACHING1Model not found模型下载失败或没下载完检查网络重跑一次或把模型文件手动放入缓存目录Cannot use a Transformer model with a longer segmentsegment 超过 7.8 秒把--segment调小如 7路径有空格却报文件不存在空格被 shell 拆分了用引号包住整个路径如demucs my song.mp3分离出来的音频爆音分离产生削波默认会 rescale 防爆音想硬切用--clip-mode clamp输出音轨之间音量不一致rescale 机制导致可先用--clip-mode clamp或在喂给 Demucs 前手动降低输入音量命令跑完没有输出文件可能用了--two-stems以外的参数拼错检查separated/模型名/目录或先跑一次--list-models确认模型名延伸资源与进阶方向安装与平台支持Windows / macOS / Linux 各有专门文档路径分别在docs/windows.md、docs/mac.md、docs/linux.md。训练自己的模型从docs/training.md开始训练配置文件在conf/config.yaml微调配置参考conf/variant/finetune.yaml有 NVIDIA GPU 的同学用environment-cuda.yml建 conda 环境纯 CPU 用environment-cpu.yml。性能压测脚本tools/bench.py可以帮你量化不同参数下的耗时与资源占用。社区与生态项目有图形界面GUI、在线 Demo、Hugging Face 空间等多个周边生态适合不想碰命令行的朋友。下一步可以学什么先用-n mdx_q跑通流程再切到-n htdemucs感受质量差异然后试试--two-stemsvocals做翻唱轨最后如果手头有 GPU用--segment在低显存下做一次分离你会彻底理解这套显存—segment—质量的三角关系。最后你的关键行动清单回到开头那个承诺你只需要记住这三步装python3 -m pip install --user -U demucs跑demucs -d cpu 你的歌.mp3显存够就换成-d cuda调显存小加--segment 8追求质量换-n htdemucs_ft至此你已经能用 Demucs 完成从单曲分离到批量处理的完整工作流。如果你在部署中踩了坑比如某个奇怪的编码格式、离线环境下模型下载问题欢迎在项目 Issues 里分享你的经验也欢迎在评论区交流你的实测数据——毕竟同样的命令在不同机器上跑出来的数字是最有价值的参考资料。【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表