demucs 六音轨人声分离:htdemucs_6s 安装教程与常用参数指南

发布时间:2026/11/5 1:39:46
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 教学曲.mp3

DJ 抽节奏底:只要鼓和贝斯时,按完整六路分离后取对应文件即可(注意--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),仅供参考