demucs 六音轨人声分离:htdemucs_6s 安装教程与常用参数指南
demucs 六音轨人声分离:htdemucs_6s 安装教程与常用参数指南
【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs
Demucs 是开源的音乐音源分离项目,v4 版内置 htdemucs_6s 模型,可把一首混合音频拆出 vocals(人声)、drums(鼓)、bass(贝斯)、guitar(吉他)、piano(钢琴)、other(其他)六路立体声 WAV。全程在本地运行,GPU 显存约 2.4GB 量级即可跑起来。
🎯 它能做什么
- 六路音源分离:一条命令把整首歌拆成 vocals、drums、bass、guitar、piano、other 六个独立文件。
- 人声与伴奏二分:
--two-stems vocals直接产出"人声 + 伴奏"两份,卡拉OK 场景一步到位。 - 常用格式通吃:torchaudio 支持的输入(wav、mp3、flac、ogg 等)都能读,输出可为 16bit/24bit/float32 WAV 或 MP3。
- 本地离线运行:模型只在你机器上加载,音频不出本机,首次运行需联网下载模型权重。
📊 它凭什么好用
| 维度 | htdemucs_6s | 对照 | 差距 |
|---|---|---|---|
| 分离音源数 | 6 路(含吉他、钢琴) | htdemucs 等 4 路方案 | 多 2 路 |
| GPU 显存占用 | 约 2.4GB 量级 | 4GB 起步的方案 | 门槛更低 |
| 处理耗时(GPU) | 整首歌几分钟内 | v3/v2 时代需数倍时长 | 明显更快 |
| 输出规格 | 44.1kHz 立体声 | 44.1kHz 立体声 | 同级 |
论文口径:htdemucs 微调版在 MUSDB HQ 测试集取得 9.0dB SDR,为同类方案里的第一梯队。
🧩 原理速览
把一段旋律同时用耳朵听、用眼睛看谱。模型里跑着两条并行的 U-Net 分支:一条直接处理波形,负责节奏与瞬态;另一条处理 STFT(短时傅里叶变换)频谱,负责音高与音色。两条分支在中段接入一个跨域 Transformer 编码器,各自先做域内自注意力、再做跨域交叉注意力,最后分别解码重建出每一路音源。
💻 装好并跑起来
没有 NVIDIA 显卡就用 CPU 环境文件,有显卡就换 environment-cuda.yml:
# 创建并激活 conda 环境,依赖一并装好 git clone https://gitcode.com/gh_mirrors/de/demucs cd demucs conda env create -f environment-cpu.yml conda activate demucs环境就绪后,一条命令完成首次分离:
# -n 指定六源模型;结果输出到 separated/htdemucs_6s/原曲名/ 下 python -m demucs.separate -n htdemucs_6s test.mp3跑完后在该目录下会看到 vocals.wav、drums.wav、bass.wav、guitar.wav、piano.wav、other.wav 六个立体声文件。首次运行会联网下载模型权重,之后即可离线复用。
🎛️ 场景化用法
做卡拉OK:只关心人声和伴奏两份时,用二分模式,输出 vocals.wav 与 no_vocals.wav,可直接当伴奏使用:
# 分离完只保留"人声 + 其余伴奏"两份 python -m demucs.separate -n htdemucs_6s --two-stems vocals 播客录音.mp3吉他老师做教材:只抽吉他音源,并以 MP3 交付给学生:
# --mp3 把输出压成 MP3,适合在线分享 python -m demucs.separate -n htdemucs_6s --two-stems guitar --mp3 教学曲.mp3DJ 抽节奏底:只要鼓和贝斯时,按完整六路分离后取对应文件即可(注意--two-stems一次只支持指定一路,不会减少计算量):
# 完整分离后取 drums.wav 与 bass.wav 做 remix 底座 python -m demucs.separate -n htdemucs_6s --out ./混音素材 原曲.mp3📋 常用参数速查
| 参数 | 作用 | 什么时候用 |
|---|---|---|
-n/--name | 选择预训练模型名 | 默认 htdemucs(四源);要六源就填 htdemucs_6s |
--two-stems | 只产出"指定音源 + 其余混合"两份 | 做卡拉OK 或只关心一路音源 |
-d/--device | 计算设备 | 无显卡时写 cpu |
--segment | 分段长度(秒) | 显存不够时调小;htdemucs 系列上限约 7.8 秒 |
--shifts | 随机时移并平均的次数 | 有多余算力想抠一点质量时调大,CPU 上别开 |
--overlap | 预测窗重叠比例 | 默认 0.25 即可,赶时间可降到 0.1 |
--mp3/--flac | 输出格式 | 需要压缩分发时 |
-j/--jobs | 并行任务数 | 多核 CPU 批量处理时,注意内存同步上涨 |
⚠️ 踩坑排查
现象:GPU 上跑着跑着抛 CUDA out of memory。 原因:默认整段处理太吃显存。解决:加--segment 8缩小分段,或加-d cpu改用 CPU(耗时约为音频时长的 1.5 倍)。
现象:--segment 30报 "Cannot use a Transformer model with a longer segment than it was trained for"。 原因:htdemucs 系列按训练时长限定分段上限,约 7.8 秒,超出直接拒绝。解决:把--segment调到 8 或更小。
现象:htdemucs_6s 分离出来的 piano.wav 有明显"串味"和杂音,guitar.wav 相对干净。 原因:六源模型的钢琴音源本身训练得不充分,官方文档也明确提示 piano 目前效果有限。解决:钢琴声部混入 other.wav 一起用,或改用四源模型 htdemucs 后单独处理钢琴需求。
📁 项目里去哪找更多
- demucs/remote/htdemucs_6s.yaml:htdemucs_6s 的模型清单配置,
-n参数就是从这里解析的。 - docs/api.md:Python 接口说明,
Separator、separate_audio_file、save_audio的用法都在这里。 - demucs/separate.py:命令行入口源码,所有参数定义一览无余。
- tools/bench.py、tools/convert.py:批量跑分与格式转换的小工具。
htdemucs_6s 适合想一次拿到六路干声、又不想折腾云服务的场景,上手成本低、可完全离线。需要提醒的是:钢琴一路质量有限,且项目官方已声明只维护重要缺陷修复,对四路分离要求更高时建议用默认 htdemucs 或 htdemucs_ft。
【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考