
给短视频、播客或者个人作品配 BGM 时“落日与晚风”这类氛围纯音乐伴奏是很常见的需求。很多人第一反应是去素材库搜索但搜索结果要么情绪不匹配要么音质不够“高清”。与其反复挑选不如直接掌握一条纯音乐伴奏的制作流水线。本文就以一个名为“休眠火山”的音频项目为例完整拆解从素材分离、环境音叠加到响度标准化、导出高清成品的全过程。零基础可以照着做有一点音频基础的开发者也能拿到可以直接复用的脚本。1. 背景与核心概念1.1 什么是纯音乐伴奏“纯音乐伴奏”在音频制作语境里通常指没有人声演唱主要由乐器、合成器或自然界声音构成的音频轨道。它与我们常说的“伴奏”“BGM”有一定重叠但不完全等同伴奏更多指为歌手或演唱者服务的乐器轨需要有清晰的调性和节奏骨架。BGM泛指各类场景中作为背景的声音可以是纯音乐也可以是环境音。纯音乐强调没有人声旋律重点在于情绪、氛围和声音设计。“休眠火山”这个项目本质上就是制作一支“落日与晚风”风格的纯音乐伴奏。它需要同时满足两层要求音乐层面要有旋律和和弦走向情绪层面要有落日时分的松弛感以及晚风拂过的空间感。这类内容如果直接找人编曲成本较高如果从现有素材中加工则依赖素材版权和音质。于是用代码和开源工具搭一条制作流水线就成为了一个性价比很高的方案。1.2 “高清”音频的技术指标“高清”用在音频上并不是一个严格的行业术语但通常包含以下几项可量化指标技术维度常见消费级标准高清制作常用标准说明采样率44.1 kHz / 48 kHz48 kHz / 96 kHz每秒钟对声音采样的次数越高理论上能还原的高频细节越多位深度16 bit24 bit表示每个采样点能记录的动态范围24 bit 的底噪更低声道单声道/立体声立体声双声道是氛围类纯音乐的基本要求封装格式MP3 / AACWAV / FLAC无压缩或无损压缩更适合后期处理在本文的实战里我们最终会导出一份 48 kHz、24 bit 的立体声 WAV 文件这就是“高清成品”的交付标准。需要注意的是采样率和位深度会影响文件体积但不是越高越好。如果作品最终要在短视频平台发布平台会重新转码超出平台规格的参数并不会给听众带来明显收益反而会白白增加存储和传输成本。1.3 为什么用代码来制作伴奏很多音频软件比如 Audacity、Adobe Audition、Logic Pro也能完成混音工作。但使用代码的优势主要体现在三个地方可复现参数写在脚本里换一台电脑、换一个素材重新运行一遍就能得到一样的结果。可批处理一个文件夹里有很多首歌需要分离和混音时脚本可以循环处理而手动操作会非常耗时。可版本管理脚本、参数和配置可以放进 Git方便团队协作和回溯。当然这不意味着要完全放弃图形化工具。实际项目中通常会用代码完成批量、重复、可量化的部分再用音频工作站去调整需要人工听感和细节处理的段落。本文的核心思路就是“先跑通自动流水线再按需人工微调”。2. 环境准备与工具链2.1 操作系统与基础软件本文示例在 Windows 10 上编写但命令和脚本在 macOS、Linux 上同样适用。需要准备的基础环境如下操作系统Windows 10 / macOS 12 / Ubuntu 20.04 均可。Python建议使用 Python 3.9 或更高版本。本文示例以 Python 3.10 环境为主版本需要根据你的实际情况调整。FFmpeg负责音频转码、采样率转换和响度处理是整条流水线的关键依赖。音频播放器用于在每一步之后试听效果任何能播放 WAV 的软件都可以。FFmpeg 的安装方式在不同系统上不一样。Windows 用户可以把 FFmpeg 的可执行文件路径加入系统 PATHmacOS 用户可以使用 Homebrew 安装brew install ffmpegUbuntu 用户则可以通过 apt 安装sudo apt update sudo apt install ffmpeg安装完成后可以在终端运行ffmpeg -version确认是否安装成功。如果提示找不到命令说明 PATH 配置还没有生效需要先解决环境变量问题。2.2 Python 虚拟环境与依赖为了避免依赖冲突建议为这个项目创建单独的 Python 虚拟环境。python -m venv venv source venv/bin/activate # Windows 上使用 venv\Scripts\activate然后准备requirements.txt文件内容如下# 文件路径requirements.txt # 以下版本号仅为示例安装时建议使用当前稳定版 demucs4.0.1 pydub0.25.1 librosa0.10.1 soundfile0.12.1执行安装pip install -r requirements.txt其中几个库的分工如下demucs用于音频源分离可以把人声和伴奏拆开。pydub用于读取、拼接、叠加音轨用法非常直观。librosa用于音频特征分析、采样率检查也可以在混音前查看音频信息。soundfile以 NumPy 数组的方式读写音频适合更底层的处理。如果你使用的是 NVIDIA 显卡demucs 会自动用 GPU 加速如果没有独立显卡就用 CPU 慢慢跑小段落音频也能接受。2.3 素材准备素材是整个项目的基础准备时需要特别注意授权问题。本文案例中会用到两类素材原始歌曲音频需要有明确使用权限。建议使用自己的原创录音或者来源清晰、允许二次创作的素材。环境音素材例如风声、海浪声、黄昏户外的环境氛围声。可以从正规的音效库获取注意每条音效的授权协议。在项目目录中建议把这类素材统一放在assets/下方便脚本统一读取。不要在素材命名中使用中文或空格因为某些命令行工具在解析多字节字符和空格时可能与预期不一致。推荐命名为original.mp3、wind.wav这样的格式。3. 核心原理解析3.1 伴奏分离音频源分离要得到“纯音乐伴奏”最直接的办法是拿到没有演唱的乐器轨。但通常我们手头只有一首完整的混音成品因此需要使用音频源分离技术把混音中的“人声”和“其他声音”拆开。Demucs 是当前比较常用的开源音源分离工具它基于 PyTorch 和深度神经网络实现。简单理解模型会学习大量音乐数据中不同声部在频谱上的特征从而预测出哪些频率成分属于人声、哪些属于乐器。在本文示例中我们会使用--two-stemsvocals参数让 Demucs 只把音频分成两轨vocals.wav和no_vocals.wav。no_vocals.wav就是我们需要的伴奏轨。它的优点在于保留了原曲的编曲和配器能够呈现相对完整的音乐层次风险在于原曲本身是否允许你二次加工处理这依然要回到版权层面判断。3.2 混音多轨叠加与空间感拿到伴奏轨之后离“落日与晚风”的氛围还差一步。原曲伴奏可能比较“干燥”没有明显的空间距离感。这时候需要混音。混音的核心是音量平衡和空间塑造。比如晚风环境音在真实场景中音量不会很大通常作为背景层存在所以我们会把环境音的电平降低 1520 dB再通过淡入淡出让它自然出现和消退而不是突兀地贴到伴奏上。从工程技术角度看混音就是多路信号相加。把伴奏轨和环境音轨对齐统一采样率和声道数乘以对应的增益系数再叠加输出就得到了一版混合信号。用 pydub 这样的库来做会让这个过程变得非常直观。3.3 母带响度让作品达到平台规范混音得到的文件虽然听起来完整了但它可能还不适合直接发布。原因在于不同设备、不同平台对音频响度的敏感度不一样。一段混音如果整体电平和动态范围控制不好在手机外放上可能会“听起来小声”在电脑音箱上又可能“突然很响”。母带处理解决的就是这个问题。响度标准化会让整个音频的平均响度达到一个目标值常见目标包括流媒体平台常用的 -14 LUFS广播和播客领域有时会使用 -16 LUFS需要对动态范围有更强控制时会同时限制真实峰值。FFmpeg 内置了loudnorm滤镜可以按照 EBU R128 标准计算响度。我们会在后面的实战中直接用它来完成最后的标准化处理。4. 完整实战案例4.1 项目目录结构先创建项目目录把所有素材和脚本按约定放好dormant-volcano/ ├── assets/ │ ├── original.mp3 # 合法授权的原始歌曲音频 │ └── wind.wav # 合法录制的晚风环境音 ├── output/ │ ├── htdemucs/ │ │ ├── vocals.wav │ │ └── no_vocals.wav │ ├── mix.wav │ └── dormant-volcano-final.wav ├── src/ │ ├── mix.py │ └── master.sh ├── requirements.txt └── README.mdassets/存放原始素材output/存放每次步骤产生的中间结果和最终成品src/存放可执行脚本。这种分层方式可以避免原始素材被误覆盖也方便出问题时重新执行某个步骤。4.2 人声与伴奏分离进入项目目录确保虚拟环境已经激活然后执行demucs --two-stemsvocals -o output assets/original.mp3这个命令的含义是把assets/original.mp3分离成两轨输出到output/目录。由于 Demucs 默认使用 htdemucs 模型最终文件通常会出现在output/htdemucs/original/下。执行结束后检查目录ls output/htdemucs/original/预期会看到no_vocals.wav vocals.wav如果模型首次运行它会先下载预训练权重下载时间取决于网络状况。分离过程本身需要一点时间CPU 环境下处理一首 3 分钟的歌可能需要几分钟到十几分钟不等GPU 会快很多。4.3 可选方案用 MIDI 直接生成伴奏如果你对原曲的伴奏不满意或者使用的素材完全没有可分离的伴奏轨可以考虑直接用 MIDI 生成一段伴奏。这里的思路是准备一段 MIDI 旋律再用硬件音源或软件合成器渲染成音频。以 FluidSynth 为例假设你有一套 SoundFont 音色库命令如下fluidsynth -ni /path/to/soundfont.sf2 assets/score.mid -F output/piano.wav这个命令会读取 MIDI 文件将其渲染为 WAV 文件。SoundFont 音色库的格式、来源需要你自己确认授权不同音色库渲染出的钢琴、弦乐质感相差很大。此方案适合本身就会写 MIDI 的读者如果只是希望快速得到氛围伴奏直接走分离流程更省事。4.4 环境音叠加与混音接下来写混音脚本目的是将伴奏轨和晚风环境音叠加为一条音轨。# 文件路径src/mix.py from pydub import AudioSegment ACCOMPANIMENT_FILE output/htdemucs/original/no_vocals.wav WIND_FILE assets/wind.wav MIX_FILE output/mix.wav # 读取音频并统一采样率、声道 accompaniment AudioSegment.from_file(ACCOMPANIMENT_FILE) wind AudioSegment.from_file(WIND_FILE) accompaniment accompaniment.set_frame_rate(48000).set_channels(2) wind wind.set_frame_rate(48000).set_channels(2) # 让环境音铺满整个伴奏长度 if len(wind) len(accompaniment): wind wind[: len(accompaniment)] else: repeat_times len(accompaniment) // len(wind) 1 wind (wind * repeat_times)[: len(accompaniment)] # 降低环境音音量设置淡入淡出避免“晚风”突然出现 wind wind - 18 wind wind.fade_in(3000).fade_out(5000) # 将两条音轨叠加并导出 mixed accompaniment.overlay(wind) mixed.export(MIX_FILE, formatwav) print(mix 完成:, MIX_FILE)这段脚本的逻辑并不复杂第 1 步统一采样率到 48 kHz声道到双声道否则两条音轨处理时可能出现长度或同步问题。第 2 步循环环境音直到它的长度至少和伴奏一样长然后截取到完全等长。第 3 步降低 18 dB 音量并分别设置 3 秒淡入、5 秒淡出。第 4 步把环境音叠加到伴奏上导出为 WAV。运行脚本python src/mix.py运行后会在output/下生成mix.wav。第一次试听时可以先确认环境音是否过于突出或者完全听不到。实际的音量衰减值可以根据素材不同在 1524 dB 之间调整。4.5 响度标准化与高清导出混音完成后最后一步是响度标准化和高清封装。这里使用 FFmpeg 的loudnorm滤镜完成。# 文件路径src/master.sh #!/usr/bin/env bash set -euo pipefail INPUToutput/mix.wav OUTPUToutput/dormant-volcano-final.wav ffmpeg -y -i $INPUT \ -af loudnormI-14:TP-1.5:LRA11 \ -ar 48000 -sample_fmt s24 -ac 2 \ $OUTPUT echo master 完成: $OUTPUT先给脚本添加执行权限chmod x src/master.sh ./src/master.sh参数拆解I-14综合响度目标为 -14 LUFS适合大多数流媒体平台参考。TP-1.5真实峰值上限为 -1.5 dBTP给平台的再次转码留出余量。LRA11响度范围控制在 11 LU一定程度上保留动态变化。-ar 48000最终采样率 48 kHz。-sample_fmt s24最终位深度 24 bit。-ac 2最终输出双声道立体声。执行完成后output/dormant-volcano-final.wav就是一份可以交付的高清纯音乐伴奏成品。4.6 一键运行流水线如果每次都要手动执行demucs、python src/mix.py、./src/master.sh流程会比较繁琐。可以把这三个步骤串成一个脚本#!/usr/bin/env bash set -euo pipefail echo [1/3] 分离伴奏与人声 demucs --two-stemsvocals -o output assets/original.mp3 echo [2/3] 混入晚风环境音 python src/mix.py echo [3/3] 响度标准化并导出高清成品 ./src/master.sh echo 全部完成以后更换素材时只需要替换assets/original.mp3和assets/wind.wav再重新执行流水线即可。当然环境音的循环方式、音量衰减量、淡入淡出时长这些参数还是要根据实际素材来微调。5. 常见问题与排查思路5.1 高频问题清单问题现象常见原因解决思路demucs 运行到一半内存不足模型较大CPU/GPU 资源不够尝试减小音频时长或换用更轻量的模型也可以关闭其他占用内存的程序分离后伴奏音质发闷、有金属感原曲录音质量一般或模型选择不合适换一个 demucs 预训练模型优先使用高质量音源素材混音后波形削波、出现爆音两轨叠加后整体电平超过 0 dBFS在脚本中进一步降低环境音音量或者统一降低伴奏轨音量后再叠加环境音太明显盖过旋律环境音增益过高或音乐原本较安静把wind - 18调整为wind - 22等更大的衰减值导出文件播放时与画面卡顿终端直接播放大型 WAV或系统解码能力不足先播放经过转码的 MP3 预览版导出时再使用高清 WAV成品在手机上听起来偏小响度未经过标准化确认已执行 loudnorm且 I 参数符合目标平台建议5.2 排查通用步骤如果问题无法直接对应到表格可以按下面的流程排查先检查音频文件是否能正常打开确认文件没有损坏。用 librosa 读取两个输入文件查看采样率、声道数和时长是否一致。检查中间文件是否存在例如output/htdemucs/original/no_vocals.wav是否成功生成。单独试听两个素材判断问题来自原素材还是混音叠加阶段。把脚本中的参数逐个改回保守值例如环境音衰减加大、淡入淡出变长看问题是否消失。这种逐层剥离的做法可以快速缩小问题范围避免把所有锅都甩给某一个环节。6. 最佳实践与工程建议6.1 版权与素材治理音频加工和视频内容一样版权问题必须放在第一位。分离一首歌的人声和伴奏并不代表你自动获得了这首歌的使用权。建议坚持以下原则优先使用自己录制、自己演奏、自己演唱的素材。使用第三方素材前逐条确认授权协议是否允许修改、混音和再分发。在项目 README 中记录每个素材的来源和授权信息方便后续追溯。不要因为喜欢某个艺人的作品就直接把分离后的伴奏公开发布。“休眠火山”这类氛围音乐项目想要落地素材合法性是基础。没有合法授权的项目技术跑得再顺也存在法律风险。6.2 工程化和可复现性流水线脚本化之后“制造一首纯音乐伴奏”就变成了一个可复现任务。建议把以下习惯固化到流程中所有输入素材统一放在assets/原始文件不要和中间文件混在一起。所有中间结果保留不要因为觉得“跑完就好了”而删除no_vocals.wav、mix.wav。脚本尽量使用参数或配置文件不要在一个脚本里散落几十个魔数。输出文件名带上日期或版号例如dormant-volcano-final-v1.wav。用 Git 管理脚本和配置但不要直接把大体积 WAV 文件放进仓库。这样做的好处是当作品需要返工或者换个素材重新制作时你可以快速定位到具体环节而不是从头重新摸索参数。6.3 音质、性能与生产环境在真机环境里音频处理通常不是内存或 CPU 越强就越“好听”而是几个细节共同决定结果输入素材的音质决定了结果的上限尽量使用无损或高码率素材。统一采样率和声道能避免许多莫名其妙的时长偏差。混音阶段保留足够动态余量响度标准化放到最后一步不要提前压满电平。如果处理的歌曲数量很多优先考虑 GPU 环境来跑 demucs能显著节省时间。日志要记录关键参数和输出路径比如使用 Python 的logging模块而不是到处print。生产环境中音频任务往往要作为后台批处理运行。此时建议使用队列或构建工具来管理任务依赖例如先跑分离再跑混音最后跑母带。任何一个步骤失败都应该能够独立重跑而不是整条链路重新执行。7. 总结与学习路线到这里我们完整走通了一条“休眠火山”纯音乐伴奏的制作链路。从概念上说理解了纯音乐、高清音频和响度标准从工具上说掌握了 demucs、pydub、FFmpeg 以及 Python 脚本的组合用法从实战上说拿到了分离伴奏、叠加环境音、导出高清成品的一整套可复制流程。如果你想继续深入下一步可以有两个主要方向研究音源分离模型本身尝试用更多标注数据微调 demucs让它更适配某类投稿素材学习混音理论理解 EQ、压缩、混响如何影响情绪进一步摆脱“跑通流程但听感普通”的困境。对于实际项目最优先要守住的是素材版权和响度规范。版权决定作品能不能发布响度决定作品在不同设备上听起来是否专业。其余的事情都可以随着经验慢慢迭代。希望这套流程能帮你做出属于自己风格的“落日与晚风”高清纯音乐伴奏。