用Demucs和UVR制作保留和声的伴奏:完整教程
2026/9/2 4:03:46 网站建设 项目流程

“带和声伴奏”,在翻唱圈、混音圈和视频剪辑圈里,是一个很特别的需求。搜索 Epik High、宋旻浩、Simon Dominic 这些名字相关合作曲目的伴奏时,很多人会遇到同一个尴尬:原曲很好找,纯伴奏靠运气,但如果你想要的是“去掉主唱、保留背景和声”的版本,网上流传的资源要么音质被压得没法听,要么是用老式“消人声”手段生成的,听起来鼓点发虚、高频发闷,副歌里那一层本该保留的和声也被一起删掉了。

如果你只是随便找个能跟唱的伴奏,那确实可以将就。但如果你要把伴奏拿去翻唱混音、做练习带、做短视频配乐,甚至拿它去扒编曲,这个“将就”很快会变成灾难。因为“带和声伴奏”和“纯伴奏”根本不是同一种东西:它要求去掉主唱 Lead Vocal,却要尽量保留背景和声 Backing Vocal、Ad-libs、叠唱层,甚至采样里的人声切片。这比单纯“去人声”要复杂得多。

这篇文章的目标很明确:不推荐你去下载某个来路不明的现成资源,而是给你一套可以自己动手制作这类伴奏的完整流程。我会拆解这个需求背后的音频处理原理,给出基于 Demucs、FFmpeg、UVR 的可落地操作步骤,并针对“和声丢失、伴奏发闷、人声残留”这些问题逐一说明排查思路。读完你不仅能处理这首具体曲目,也能把这套方法迁移到任何类似需求上。

1. 这篇文章真正要解决的问题

1.1 为什么需要“带和声伴奏”而不是“纯伴奏”

很多非制作人会把“伴奏”理解成“去掉人声之后的音乐”。但对于实际使用音频的人来说,这两者的差别非常大。

如果你只是做 Cover,主唱没了、伴奏还能听,你可能就觉得够了。但真正做过翻唱混音的人会知道,一首歌的背景和声往往承担了很多音乐层次上的功能:

  • 副歌里叠唱的 Choir 效果,把情绪推起来。
  • 说唱段落里的 Ad-libs(比如“Yeah”、“Uh”、“Check”这类点缀),去掉之后整段会变得特别干。
  • 某些编曲里人声采样被当作乐器使用,删掉后你会感觉编曲缺了一块。

在嘻哈和流行混音中,和声轨通常是大量被使用的一层。Epik High、宋旻浩、Simon Dominic 这类偏说唱和旋律结合的曲目里,人声密度尤其高。歌手会在主唱轨之外补一层和声,用来加宽声场或者强调某个关键词。如果去人声时把这些也删掉,得到的不是干净伴奏,而是一坨失去了灵魂的“半成品”。

1.2 为什么传统“消人声”方案不行

早年流传的“消人声版”,原理基本都是“相位抵消”:左声道减右声道,因为主唱通常在立体声场正中间,两个声道相减就能抵消掉中央的人声。

这个方法听起来很聪明,实际效果却很糟糕,原因有三:

第一,不是只有主唱在声场中央。贝斯、底鼓、主音色也常被放在中间,当你把中间一刀切掉时,这些低频能量也被切掉了,所以消出来的伴奏往往是“空心的”。

第二,相位抵消会破坏立体声宽度,导致声音变窄、发闷。网络上下载到的很多劣质伴奏就是这么来的。

第三,和声和主唱在频段上高度重叠,相位抵消通常会把它们一起干掉。

所以,如果你要制作“带和声伴奏”,基本可以放弃老式消人声方案。现在更合理的技术路线是 AI 人声分离,或者叫音源分离(Music Source Separation)。

1.3 什么人最需要这篇教程

这篇文章适合以下几类人:

  • 翻唱作者:需要带和声的伴奏做混音,不想凑合使用低质量资源。
  • 练习者:想跟随原曲和声的情绪唱 Cover,需要保留和声的伴奏。
  • 视频创作者:需要一段既有“伴奏感”又有“原曲氛围”的音乐做背景。
  • 音频初学者:想弄明白 Demucs、UVR 这类工具到底怎么用,以及为什么用它们处理效果更好。

如果你只是想快速获得一个“能听”的伴奏,这个流程对你来说可能有点重;但如果你想认真把伴奏做得干净、稳定、贴近原版效果,这篇文章刚好够用。

2. 基础概念与核心原理

2.1 什么是音源分离

音源分离,是把一段混合音频拆分成多个独立声部。比如把一首完整的歌拆成鼓、贝斯、其他乐器、人声四个音轨。这个技术在音乐产业里已经存在很多年,早期靠信号处理,效果一般;现在主流方案靠深度学习模型,其中比较有代表性的是 Demucs、Spleeter 和 UVR 中集成的 MDX-Net 系列模型。

Demucs 是 Meta 开源的音源分离工具,基于卷积和 Transformer 混合架构,目前在开源社区中属于效果第一梯队。它会把输入音频拆成多个“源”,默认是鼓、贝斯、其他、人声,也可以通过参数合并成“人声”和“无人声”两个音轨。

Spleeter 是 Deezer 开源的模型,特点是速度快,早期非常流行,但分离细节不如 Demucs。

UVR(Ultimate Vocal Remover)是一个图形化工具,集成了大量第三方模型,包括 MDX-Net、Demucs 等。它的优势是操作门槛低,模型生态丰富,适合不习惯写命令行的用户。

2.2 主唱和和声为什么难分离

要理解“带和声伴奏”为什么难做,得先知道混合录音里主唱和和声是怎么存在的。

一种情况是,和声与主唱录在同一轨。这样录音师在前期就把它们焊死了,AI 模型再怎么聪明,也只能从混叠的波形里“猜”哪些频率成分属于和声,哪些属于主唱。

另一种情况是,和声单独成轨,但混音师在做最终缩混时,把和声轨和主唱轨做了整体处理,比如压缩、平行压缩、立体声加宽。这些后期处理会让和声和主唱在动态和音色上变得非常像,进一步增加分离难度。

说唱曲目比纯流行曲目更麻烦,因为说唱里大量出现快速连读、短促的喊唱、堆叠的 ad-lib,这些元素在时间轴上和主唱高度重叠。分离模型在处理这种“人声里还有人声”的内容时,往往会把和声当成主唱的一部分,导致最终得到的伴奏里和声跟着主唱一起消失。

2.3 “带和声伴奏”的制作策略

基于上面的原理,制作带和声伴奏的主流策略可以分成两步:

第一步,做一次标准的人声分离,得到“人声轨”和“无人声伴奏轨”。

第二步,对人声轨做“二次分离”,尝试把和声从主唱中剥离出来。这一步更依赖专门的模型,最终目的是得到一条“不包含主唱、但保留和声”的音轨。

最后把这条和声轨混合回伴奏轨,就得到了一份相对可用的带和声伴奏。

这个流程并不是百分之百完美,因为在源分离技术上,分离质量受模型、原曲混音风格、响度、采样率等因素影响,很难做到完美无损。但它比老式消人声方案要可靠得多,也是目前社区里推荐的主流做法。

3. 环境准备与前置条件

3.1 操作系统与硬件要求

本教程的操作步骤在 Windows、macOS、Linux 上基本通用,下面会同时给出命令行和图形界面的做法。硬件方面,Demucs 支持 CPU 运行,但对较长的歌曲,CPU 分离速度会非常慢;如果有 NVIDIA 显卡,建议优先使用 CUDA 加速。

  • 操作系统:Windows 10/11、macOS 12+、Ubuntu 20.04+ 均可。
  • CPU:可以运行,但速度慢;建议至少 8 核。
  • GPU:NVIDIA 显卡,建议显存 6GB 以上,会大大缩短分离时间。
  • 内存:建议 16GB 以上。Demucs 处理长音频时内存占用不低。

3.2 软件版本说明

为避免不同版本之间行为差异过大,这里统一说明:版本细节请以你安装时的最新稳定版为准,本文演示的是通用流程。核心软件如下:

  • Python 3.9 以上(Demucs 需要 Python 环境)。
  • FFmpeg(用于音频格式转换和混音)。
  • Demucs(Python 库 + 命令行工具)。
  • UVR(可选,图形界面工具,适合二次分离和声)。
  • Audacity(可选,用于手动检查和微调)。

3.3 安装依赖

下面先给出一个基于 Python 虚拟环境的安装流程。虚拟环境能避免依赖冲突,这是实际项目中推荐的做法。

# 创建虚拟环境 python -m venv demucs_env # Windows 激活 demucs_env\Scripts\activate # macOS / Linux 激活 # source demucs_env/bin/activate # 安装 PyTorch # 如果本机有 NVIDIA 显卡,请到 PyTorch 官网选择对应 CUDA 版本安装 pip install torch torchaudio # 安装 Demucs pip install demucs

FFmpeg 的安装方式因系统而异。Windows 可以使用 winget:

winget install ffmpeg

macOS 建议使用 Homebrew:

brew install ffmpeg

安装完成后,在终端里执行ffmpeg -version,能看到版本信息则说明安装成功。

3.4 输入音频准备

这一步非常关键:输入音频的质量直接决定分离结果的上限。

  • 尽可能使用高质量的无损音频,比如 WAV、FLAC。
  • 如果只有 MP3,尽量选择高码率版本(320kbps 以上),避免使用 128kbps 甚至更低码率的文件。
  • 不要从视频平台下载压缩严重的音频轨道来做分离,压缩带来的伪影和噪声会被模型放大到结果里。

如果你准备的文件采样率是 44.1kHz 或 48kHz,通常不需要额外转换,Demucs 会自动处理。

4. 核心流程拆解

4.1 一次分离:从原曲得到人声和伴奏

第一步是标准的人声分离。

Demucs 默认会拆出鼓、贝斯、其他、人声四个音轨。我们可以用参数--two-stems=vocals把它简化为两个音轨:

demucs --two-stems=vocals "No Thank.wav"

执行后,会在输出目录下生成类似下面的结构:

output/ └── htdemucs/ └── No Thank/ ├── vocals.wav └── no_vocals.wav

这里的vocals.wav是完整的人声轨,包含主唱和和声;no_vocals.wav是无人声伴奏轨。

4.2 二次分离:从人声轨中提取和声

得到完整人声轨后,需要把和声从主唱中分离出来。这一步是“带和声伴奏”和“纯伴奏”制作流程的分水岭。

常用的方案有两个:

方案一:用 UVR 的图形界面,加载主唱/和声分离模型。UVR 集成了多种模型,有些模型专门针对“Main Vocals vs Backing Vocals”的分离任务,适合我们这里的二次分离需求。

方案二:用命令行,将vocals.wav输入给另一个分离模型,期望输出两条轨:主唱轨和和声轨。

需要强调一点:目前没有哪个开源模型能对任意歌曲做到 100% 的完美和声分离。通常情况是,模型能分离出一部分清晰的和声,也会丢失掉一部分被主唱完全掩盖的和声。这是正常现象,理解这一点能帮你判断最终结果是否“足够可用”。

4.3 混音:把和声轨混合回伴奏轨

当拿到一条可用的和声轨之后,把它和第一步得到的no_vocals.wav混在一起,就能得到最终的带和声伴奏。

混音有很多种做法。最简单的是用 FFmpeg 的amix滤镜:

ffmpeg -i no_vocals.wav -i backing_vocal.wav \ -filter_complex \ "[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=2:normalize=0[a]" \ -map "[a]" -y "No Thank - with harmony.wav"

参数说明:

  • duration=first:以第一个输入文件的时长为准,避免因为两轨长度不一致导致结果被截断或叠加出空白。
  • dropout_transition=2:当某一轨没有声音时,用 2 秒时间平滑过渡,避免突然切断。
  • normalize=0:不启用 amix 的自动音量归一化,保持原来的音量比例。这一点非常重要,否则 FFmpeg 会自动把两条音轨的音量压下来。

4.4 响度与格式处理

混音完成后,可以考虑做一次响度标准化。不同平台的播放响度标准不一样,但如果你只是自己练习或做翻唱混音,建议把峰值控制在 -1dB 左右,整体响度不要过冲。

ffmpeg -i "No Thank - with harmony.wav" \ -af "loudnorm=I=-14:TP=-1.5:LRA=11" \ -ar 44100 -ac 2 \ "No Thank - final.wav"

这里的I=-14代表目标综合响度为 -14 LUFS,是比较通用的流媒体响度参考值;TP=-1.5代表真实峰值上限 -1.5dBTP;LRA=11是响度范围。

如果你不确定参数怎么填,也可以先不做响度标准化,保留原始音量,等进入混音阶段再统一处理。盲目标准化有时会让动态变得奇怪,尤其是在嘻哈曲目里,响度本身就是风格的一部分。

5. 完整示例与代码实现

5.1 命令行全流程示例

下面是一条完整的命令序列,从原曲 WAV 开始,最终生成带和声伴奏。

# 1. 激活虚拟环境 source demucs_env/bin/activate # 2. 一次分离:得到 vocals.wav 和 no_vocals.wav demucs --two-stems=vocals -o output "No Thank.wav" # 3. 查看输出 ls -lh output/htdemucs/"No Thank"/

此时你已经拿到了两个核心中间文件。

5.2 使用 UVR 提取和声轨

如果你更习惯图形界面,可以打开 UVR,按下面的流程操作:

  1. 选择输入的音频文件:output/htdemucs/No Thank/vocals.wav
  2. 选择一个用于主唱/和声分离的模型。不同模型输出的目标不同,建议选择偏向 “Backing Vocals” 或 “Harmony” 输出的模型。
  3. 设置输出目录,点击分离。
  4. 分离完成后,得到的和声轨文件建议重命名为backing_vocal.wav

如果你的 UVR 模型输出的是“主唱轨”和“和声轨”两部分,那么选择保留和声轨即可。

5.3 用 Python 批量处理多个文件

如果你需要批量处理一批歌曲,把 Demucs 和 FFmpeg 串进一个简单脚本里会更方便。下面是一个最小示例:

# 文件路径:batch_separate.py import subprocess from pathlib import Path AUDIO_DIR = Path("./audio") OUTPUT_DIR = Path("./output") def separate_and_mix(input_file: Path) -> Path: # 1. Demucs 分离人声和伴奏 subprocess.run( [ "demucs", "--two-stems=vocals", "-o", str(OUTPUT_DIR), str(input_file), ], check=True, ) # 2. 根据 Demucs 输出目录结构定位生成文件 stem_dir = OUTPUT_DIR / "htdemucs" / input_file.stem vocal_file = stem_dir / "vocals.wav" no_vocal_file = stem_dir / "no_vocals.wav" # 3. 这里预期你已经通过 UVR 生成了 backing_vocal.wav # 实际项目可以根据你的实际情况调整和声轨来源 backing_vocal_file = stem_dir / "backing_vocal.wav" if not backing_vocal_file.exists(): print("[WARN] backing_vocal.wav 不存在,跳过混音:", input_file.name) return None # 4. 混音:和声轨 + 伴奏轨 output_file = OUTPUT_DIR / f"{input_file.stem}_with_harmony.wav" cmd = [ "ffmpeg", "-y", "-i", str(no_vocal_file), "-i", str(backing_vocal_file), "-filter_complex", "[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=2:normalize=0[a]", "-map", "[a]", str(output_file), ] subprocess.run(cmd, check=True) return output_file if __name__ == "__main__": for wav_file in AUDIO_DIR.glob("*.wav"): result = separate_and_mix(wav_file) if result: print("生成完成:", result)

这个脚本只是一个骨架。实际使用时,你需要补充中间步骤“二次分离和声轨”的调用逻辑。由于不同模型的调用接口不一样,这里建议根据你选用的工具做替换。

5.4 用 FFmpeg 检查录音波形和时长

没有专业音频软件时,FFmpeg 也能帮你做基础检查。

# 查看音频信息 ffprobe "No Thank - with harmony.wav" # 生成波形图,方便快速观察音量分布 ffmpeg -i "No Thank - with harmony.wav" -lavfi showwavespic=s=800x300 -frames:v 1 waveform.png

执行后,waveform.png会展示波形图。你可以通过它初步判断:如果整体波形过平,可能是响度被压缩;如果某一段全是空白,可能是分离时丢失了整段和声。

5.5 在 Audacity 中手动微调

命令行方案解决了“自动化”问题,但手动微调也很重要。用 Audacity 打开最终文件,你需要做几件事:

先检查人声残留。播放几个主唱密集的段落,如果能清楚听到主唱的声音,说明一次分离没把主唱完全去掉。

再检查和声比例。播放副歌段落,和声应该若隐若现但不要盖过伴奏,如果觉得和声太突兀,可以单独选中和声轨,适当降低增益再导出。

最后检查整体响度。Audacity 里可以使用“效果 - 响度标准化”功能,将目标响度设置为 -14 LUFS 左右。

6. 运行结果与效果验证

6.1 目录结构与预期产物

按上面的流程执行后,你会得到类似下面的文件:

output/ ├── htdemucs/ │ └── No Thank/ │ ├── vocals.wav │ ├── no_vocals.wav │ ├── backing_vocal.wav │ └── no_vocals_with_backing.wav └── No Thank - final.wav

其中no_vocals_with_backing.wavfinal.wav就是最终的带和声伴奏。

6.2 验证标准

判断一次分离是否成功,主要通过听感检查:

  • 主唱是否被干净移除?在说唱段落里,快速的念白和喊唱是否有残留?
  • 底鼓和贝斯是否保留了足够的低频?如果听起来明显“轻飘飘”,说明低频被误删了。
  • 高频是否存在金属感或数码感?如果出现明显的“水声”“梳状滤波声”,说明分离过程引入了伪影。

判断二次分离是否成功,重点听和声轨:

  • 和声轨里主唱的比例大不大?如果全是主唱,说明模型没有正确分离。
  • 和声轨里的内容是否与主唱有节奏重叠?完全分离当然最理想,但也允许少量重叠存在。
  • 和声轨的音质是否可接受?如果和声轨残破不堪,混回伴奏后会更明显。

6.3 到底要不要“完美”

对源分离技术,很多人会陷入一个误区:非要追求完美,不然就觉得自己做失败了。

实际情况是,开源模型再强,也无法把已经混合成“一锅粥”的人声轨无伤拆开。所谓“成功”,是指最终产物在目标场景下可用。如果你的伴奏在翻唱混音里能正常使用,人声残留不明显,和声保留至少七成,那这个产物就达到目的了。

从实践来看,制作带和声伴奏的通常策略是“在可接受的人声残留和和声保留之间找一个平衡点”。如果主唱残留过多,可以用 EQ 或 gate 适当削弱;如果和声保留太少,就要尝试调整二次分离模型的参数,或者换一个更激进的模型。

6.4 如果运行失败,先从哪几步查

如果命令行执行失败,先做三件事。

第一,确认虚拟环境激活成功。终端提示符前面应该有(demucs_env)

第二,确认 FFmpeg 已安装。执行ffmpeg -version看能否返回版本。

第三,确认输入文件路径中没有中文空格问题没有其他问题。命令行工具对带特殊符号的路径支持不总是完美,建议把音频文件放到路径简单的目录下,比如D:\work\audio\No Thank.wav,然后再执行命令。

7. 常见问题与排查思路

问题现象可能原因排查方式解决方案
最终伴奏里还能清楚听到主唱一次分离模型没有将主唱完全识别单独播放 vocals.wav,确认主唱是否被分离到人声轨换用 htdemucs_ft 或其他模型重新分离;适当降低 vocals 轨混入比例
和声轨几乎全是主唱二次分离模型不适合当前曲风试听 backing_vocal.wav,判断里面主唱占比换用更偏向 backing vocal 的模型;调整 UVR 中的分离强度参数
和声轨完全丢失,副歌缺少层次和声与主唱重叠过于紧密,模型无法区分观察副歌段和声轨波形是否平坦尝试使用更高质量的模型;把和声轨小音量混入伴奏,制造“保留了和声感”的效果
低频发闷,底鼓和贝斯无力分离过程或格式转换损失了低频用频谱图检查 40-200Hz 范围在 Audacity 中用 EQ 适当提升 60-120Hz;检查原始文件是否已是高码率无损
最终文件音量比原曲小很多amix 参数 normalize 没有设为 0查看混音命令中的 normalize 参数混音时加normalize=0;混音后用 loudnorm 做响度标准化
伴奏有金属感或“水声”AI 分离产生了伪影高频是否出现不自然声音降低分离模型的混响或滤波强度;在 Audacity 中对高频做轻微 EQ 衰减
导出的文件左右声道不对称分离模型对立体声信息处理不一致检查原曲是否为双声道,分离后声道是否一致用 Audacity 复制单声道并重新做立体声处理;检查原文件是否为假立体声

这些问题是做音源分离时最常见的几类。由于每个模型对每种风格的歌曲响应不同,最有效的排查方式其实是“多听、多对比”。保留好中间产物,你才能在调参后快速定位是哪一步出了问题。

8. 最佳实践与工程建议

8.1 永远保留中间分轨文件

不要只留最终混音。Demucs 生成的vocals.wavno_vocals.wav,UVR 生成的backing_vocal.wav,每一个中间文件都应该保留。后续二次调整时,你需要这些文件,而不是从头再跑一遍全部流程。

8.2 固化音源,统一格式

把输入音频统一转成同一种格式再进入分离流程,比如全部转成 44.1kHz / 16bit / WAV,可以避免模型在不同采样率之间反复重采样带来的质量损失。批量处理时,这一步很重要。

8.3 不要只依赖单一模型

不同模型在不同曲风上表现差异很大。Demucs 擅长整体分离,UVR 里的某些 MDX 模型在特定歌曲上可能更占优势。实际项目中,比较稳妥的做法是先用两个模型分离同一首歌,对比结果后选择更干净的那一版。

8.4 控制响度,不要追求“越响越好”

“响”不等于“好”。尤其在嘻哈和电子乐里,过度响度提升会牺牲动态,最终伴奏听起来会很累。建议以 -14 LUFS 为参考目标,而不是盲目拉到 -8 LUFS。这样对翻唱混音和视频剪辑都更友好。

8.5 注意版权边界

制作伴奏用于个人练习、课程作业、学习研究,通常是合理需求。但如果要公开发布、上传到音乐平台或用于商业内容,请仔细确认原曲的版权规定,尊重原作者和唱片公司的权利。本教程只讨论技术思路,不鼓励二次分发侵权资源。

8.6 建立批量处理脚本

如果你经常需要制作伴奏,强烈建议写一个可以复用的脚本,把“转格式、分离、混音、响度标准化”串起来。刚开始可能觉得脚本化很麻烦,但当你面对几十个音频文件时,手动操作会变得极其痛苦。

8.7 给团队协作留出空间

如果你是一个音乐小组或翻唱团队里负责“处理伴奏”的人,建议在项目里约定统一的文件命名规则,比如:

[歌曲名]_stem_vocal.wav [歌曲名]_stem_instrument.wav [歌曲名]_stem_backing.wav [歌曲名]_final_with_harmony.wav

命名清晰,会节省大量沟通成本。

9. 总结与后续学习方向

制作“带和声伴奏”这件事,听起来像是一个简单需求,实际做起来涉及音频格式处理、AI 模型选择、二次分离、混音、响度标准化等多个环节。它的核心难点并不在于“去掉人声”,而在于“如何在去掉主唱的同时,保留和声层”。

网上能搜到的现成资源,往往在音质或版权上都有隐患。与其到处碰运气,不如把这套流程跑通,以后遇到类似需求时,几分钟就能自己处理完。Demucs 负责第一次分离,UVR 负责和声提取,FFmpeg 负责混音和格式处理,这套组合在目前的开源方案里已经是比较可靠的选择。

如果你对更底层的技术感兴趣,下一步可以深入研究 Demucs 的模型结构,搞清楚它是如何通过波形域和频域信息分离不同音源的。如果想走得更远,可以学习短时傅里叶变换(STFT)、频谱图处理和混音总线的基础知识,这些内容会帮助你理解 AI 分离结果中那些“伪影”和“金属声”到底来自哪里。

这篇文章提到的命令和脚本,建议先拿一首你熟悉的歌跑通整个流程。跑通之后,再回来调整参数、对比模型、优化音质,会顺畅很多。制作伴奏本身就是一个需要耐心试错的过程,达到“七八分可用”往往只需要一次跑通流程,但要达到“接近原作质感”,就需要结合具体曲目不断调整了。希望这套思路能帮你少走一点弯路,也能让你在拿到任何一首新歌时,都有自己的处理办法。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询