Ubuntu 上跑通 Demucs 音频分离从零到服务化的 24 小时路线图【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs同一个文件别人交给 AI 一分钟就吐出了干净的人声和伴奏你却还卡在装完就报错的怪圈里这篇实战笔记专治这种焦虑以时间为轴带你从零装好 Demucs 音频分离工具再一步步把它升级成能批量干活、开机自启的分离服务。先交代背景Demucs 是开源的音乐源分离模型能把一首歌拆成鼓、贝斯、人声与其余伴奏四个声部v4 版本采用了混合频谱与波形双分支的 U-Net 结构核心模块是一层跨域 Transformer下图为完整架构示意在 MUSDB 测试集上整体 SDR 达到 9.0 dB。这意味着它不只是能用而是接近当前学界第一梯队的水平。第一程约 30 分钟装好并跑通第一首歌这一程只看结果能听到分离出来的人声就算过关。三张入场券先验一下系统Ubuntu 18.04 起步20.04/22.04 LTS 最稳Python3.8 以上版本太老连依赖都装不齐内存CPU 方案至少 4GB后面要上 GPU 再预留约 3GB 显存。门票齐了先把系统依赖补齐sudo apt update sudo apt install -y python3-pip python3-venv ffmpeg build-essential一句话说明为什么必须有 ffmpegmp3 这类压缩格式的解码全靠它缺失时 Demucs 会直接拒绝处理音频这是新手报错排行榜的头号选手。两种装法先想清楚要干什么只做分离的普通用户一条命令足够pip3 install --user -U demucs demucs --version要改源码、复现论文或自己训模型的走开发环境路线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 用户不必手动折腾 CUDA 轮子仓库自带的 environment-cuda.ymlCPU 版是 environment-cpu.yml能一键建好带对应 torch 的环境比手工拼命令省心得多。第一次分离模型选对了后面全顺仓库里备好了测试音频直接运行demucs -n htdemucs test.mp3就能看到四个声部落地。模型用-n指定demucs --list-models可列出全部选项。三个主流模型的定位差异很明显模型速度音质典型场景mdx_q最快中等低配机器快速出稿htdemucs中等高默认推荐均衡之选mdx_extra较慢最高追求极致干净度所有模型的注册信息都维护在 demucs/pretrained.py想确认某个名字是否有效、对应的采样与声道数直接翻这个文件比反复试命令更高效。第二程约 1 小时让 GPU 加班而不是干等CPU 跑一首歌可能要等几分钟显卡明明在场却闲置等于开着跑车推着走。按下面的顺序自检lspci | grep -i nvidia # 显卡有没有被系统认出来 nvidia-smi # 驱动是否正常加载驱动缺失就按显卡型号安装例如sudo apt install -y nvidia-driver-515之后补一个 CUDA 工具包。一切就绪后用demucs -d cuda test.mp3验证日志中出现 CUDA 字样即代表加速生效。显存不够的两个急救办法处理思路很朴素把长音频切成短段一段一段喂给模型峰值显存自然就降下来。demucs -d cuda --segment 8 test.mp3 PYTORCH_NO_CUDA_MEMORY_CACHING1 demucs -d cuda --segment 4 test.mp3--segment的值就是每段音频的秒数数值越小越省显存、耗时略增第二行加上PYTORCH_NO_CUDA_MEMORY_CACHING1后2GB 显存的极限配置也能跑起来。分段、重叠率等参数在 demucs/separate.py 里都有完整注释想微调时直接查源码即可。第三程约 3 小时把每一秒算力都榨出来并行线程一半到四分之三是甜点位先nproc数清 CPU 核心再把-j设为它的一半到四分之三demucs -j 8 -d cuda test.mp3为什么不拉满每个 worker 都要在内存里驻留一份模型权重线程越多内存涨得越快demucs/api.py 里的注释也点明了这一点。速度与内存的平衡点需要在自己机器上试一轮才能定。批量分离脚本这样写不卡顿十几行的循环脚本就能接管整个目录#!/bin/bash mkdir -p separated for f in input/*.mp3; do demucs -d cuda -j 8 --segment 8 -o separated -n htdemucs $f done纪律有两条同时处理的文件别超过 4 个防止并行峰值把内存顶爆超过一小时的超长音频把--segment调到 10 更稳当。输出格式省空间还是留质量默认 WAV 无损但占地方改两个开关就能换到更经济的格式demucs --mp3 --mp3-bitrate 320 test.mp3 demucs --flac test.mp3前者适合交付场景320kbps 下体积与听感兼顾后者无损压缩适合还要进后期软件继续处理的素材。默认码率、编码预设等级的定义都在 demucs/separate.py 的参数区里。第四程约 1 天把它变成无人值守的服务批量场景里天天手动敲命令不是长久之计。注册成 systemd 服务后开机自启、崩溃自动拉起[Unit] DescriptionDemucs Audio Separation Service Afternetwork.target [Service] Userubuntu WorkingDirectory/home/ubuntu/demucs EnvironmentPYTORCH_NO_CUDA_MEMORY_CACHING1 ExecStart/home/ubuntu/.local/bin/demucs -d cuda -j 8 --segment 8 /watch/*.mp3 Restartalways [Install] WantedBymulti-user.target启用命令与日常巡检sudo systemctl daemon-reload sudo systemctl enable --now demucs journalctl -u demucs -f排错速查表四类高频故障一次说清报错信息病因对策FFmpeg not found缺解码依赖安装 ffmpegCUDA out of memory显存吃紧加--segment 4Model not found权重下载中断手动把模型文件放进~/.cache/demucs/Audio too long单曲过长内存暴涨加--no-split或加大分段排查疑难杂症时命令前加LOG_LEVELDEBUG能拿到最详尽的运行日志想知道不同型号显卡之间的吞吐差异直接用 tools/bench.py 跑一轮基准对比数据说话最公平。再往前走训练、微调与社区想训练专属模型训练配置集中在conf/目录从 conf/variant/finetune.yaml 起步调整批大小、学习率与采样段长即可在自有数据集上微调想参与开发先读 CONTRIBUTING.md 熟悉编码约定与提交流程想了解版本差异v3 与 v4 的演进、各版本变更记录在 docs/release.md升级前翻一翻能躲开不少已知问题。到这里你的 Demucs 已经是一条能自动排队、能调速、能上生产的完整流水线。把重复劳动交给工具把时间省下来去处理真正需要你判断力的那部分。【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考