拓冰建站拓冰建站
首页 / 资讯中心 / 正文

5分钟拆解一首歌:Demucs 音频分离实战全记录

5分钟拆解一首歌Demucs 音频分离实战全记录【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs上个月给朋友的婚礼暖场视频配乐我想把一首歌里那段吉他独奏单独抽出来做片头。试了在线分离网站两分钟的音频要排队半小时出来的人声还裹着一层恼人的水声。后来朋友甩给我一个开源工具一条命令装好三行命令跑完一首歌被拆成人声、鼓、贝斯和其他伴奏四个独立音轨全程不到五分钟——这个工具就是 Facebook Research 开源的音频分离模型Demucs。这篇文章就是我把它从安装到玩出花的全过程记录。它到底是什么给一锅大杂烩分拣食材如果没接触过音乐源分离这个术语你可以把一首完整的歌想象成一锅炖好的大杂烩——人声、鼓点、贝斯、各种乐器全部纠缠在一起。Demucs 干的活就是拿一双AI 筷子把这锅杂烩精准地分拣回四个盘子人声vocals、鼓drums、贝斯bass和其他伴奏other。它凭什么能拆得干净关键在于 Demucs v4 采用的混合 Transformer 架构。简单说模型同时开着两条处理流水线一条盯着原始波形时域一条盯着频谱图频域中间再用一个跨域 Transformer 编码器把两条线的信息互相打通最后把两边结果融合还原成音频。这在当前开源音频分离方案里属于第一梯队——论文公布的数字是 MUSDB HQ 测试集上整体 SDR信号失真比达到9.00 dB配合稀疏注意力内核和逐源微调还能摸到 9.20 dB。听不懂指标没关系你只要知道在同级开源工具里这个数字相当能打。如果你是想做卡拉OK伴奏、remix 素材提取、乐器分析的音乐人或者视频创作者那它正是为你的场景准备的如果你恰好是搞机器学习的研究员它从数据到训练脚本也一应俱全不过那是另一条更硬核的路。第一次实操从安装到出结果的三条命令先交代一下门槛需要 Python 3.8 以上Windows、macOS、Linux 都能跑。有 NVIDIA 显卡会快很多但没 GPU 也能用后面我会讲 CPU 模式的实际体验。安装就一条命令python3 -m pip install -U demucsWindows 用户记得把python3换成python.exe并且建议在 Anaconda Prompt 里执行python.exe -m pip install -U demucs SoundFile装好之后随便找一首歌试试。第一次运行会自动下载默认的htdemucs模型几百兆取决于网络之后就快了demucs 我最爱的歌.mp3等进度条跑完去当前目录下的separated/htdemucs/我最爱的歌/文件夹看看四个 44.1kHz 立体声 wav 文件已经躺好了vocals.wav—— 纯人声适合做 remix 或者给歌手做学习素材drums.wav—— 鼓点轨道bass.wav—— 贝斯轨道other.wav—— 剩下的所有伴奏第一次听到那首伴奏版的瞬间我确实愣了几秒——鼓、贝斯清晰分离人声几乎没留底噪。如果你只是想要个伴奏版本到这里其实已经够用了。顺着疑问往下挖四个高频场景的解法工具跑通只是开始真正让它好用的是下面这几个小技巧。它们全是我在实际使用中踩过坑之后才摸清的。显存不够把音频切小。默认参数下 GPU 大约需要 7GB 显存如果你的卡只有 3GB加一个参数就能继续demucs --segment 8 大型演出.flac--segment把音频切成几秒一段分别处理数值越小越省显存但太小会影响质量建议至少 10混合 Transformer 模型上限是 7.8 秒。再设置环境变量PYTORCH_NO_CUDA_MEMORY_CACHING1也能挤出一点空间。实在不够就直接-d cpu切到 CPU 模式——我用笔记本实测处理时间大约是音频时长的 1.5 倍一首四分钟的歌大概六分钟能接受。想提高分离质量让它多想几遍。默认情况下模型对整段音频只推理一次。加上--shifts参数后它会对输入做随机偏移并预测多次再取平均有点像拍照时连拍几张合成一张更稳的图。论文里用的就是 10 次但时间会成倍增加没 GPU 就别碰demucs --shifts 4 -n htdemucs_ft 重要录音.wav顺带一提-n参数用来切换预训练模型。日常用默认的htdemucs就够追求极致质量换htdemucs_ft推理慢四倍质量略好想要更小的模型就用量化版mdx_q。想看看当前有哪些模型可选运行demucs --list-models即可。只要人声和伴奏两轨一键卡拉OK。做伴奏最常用的其实是这个demucs --two-stemsvocals 流行歌曲.mp3输出会变成vocals.wav和no_vocals.wav两个文件后者就是现成的卡拉OK伴奏。vocals也可以换成drums或bass按需提取单个乐器。想要 MP3 格式加个后缀的事。默认输出是 wav加--mp3就能直接存成 MP3还能用--mp3-bitrate控制码率demucs --mp3 --mp3-bitrate 320 高音质音乐.flac类似的输出选项还有--float32无损浮点和--int2424 位整数按需取用。多核 CPU 用户记得加-j 4启用并行提速明显但内存占用也会相应翻倍别贪多。到这里你可能会好奇它凭什么能把一锅大杂烩分得这么干净这正是上面那张混合 Transformer 架构图的用武之地——双分支 U-Net 结构一条分支处理时域波形、一条分支处理频谱图中间由跨域 Transformer 编码器互相交换信息最后融合还原。理解到这一层你就知道--segment为什么有上限、--shifts为什么能提质量了。它擅长什么又搞不定什么讲清楚边界比吹捧功能更能帮你做决定。先说它最擅长的人声、鼓、贝斯的分离质量在开源工具里是公认的第一梯队做卡拉OK伴奏、remix 素材、人声学习轨、鼓点分析都是它的主场。处理时长、文件名带空格这种细节它也考虑到了记得给文件名加引号Python 里也能直接调用——demucs.separate.main([--two-stems, vocals, track.mp3])一行即可方便集成进自己的流水线。但也有几个地方别抱太高期待。第一htdemucs_6s那个能分离吉他和钢琴的六源模型作者自己都明说钢琴轨目前泄漏和伪影严重做严肃钢琴提取时慎用。第二输入音质决定了输出上限一首本身就很糊的老录音别指望它给你变出干净人声。第三--shifts这类高质量技巧代价是数倍推理时间实时处理就别想了。另外提醒一句这个项目官方仓库已停止积极维护只有重要 bug 修复遇到小问题建议先查它的文档比如各系统的安装指南再提问。下一步就现在回想整个过程最让我惊讶的不是它能拆而是拆得这么容易。从零到拿到四轨文件确实用不了五分钟。如果你也想动手照着这个清单走执行python3 -m pip install -U demucs装好它找一首歌运行demucs 歌名.mp3在separated/htdemucs/歌名/里验收四轨结果做伴奏就用--two-stemsvocals卡了就--segment 8想要 MP3 就加--mp3想深入的话官方训练文档docs/training.md里有从零训练和模型动物园的完整指引想改源码可以克隆镜像仓库https://gitcode.com/gh_mirrors/de/demucs慢慢研究。音频分离的乐趣在于当你能把一首歌拆开再重组音乐在你眼里就不再是一盘成品菜而是一份可以自由取用的食材清单。从你手边那首歌开始去拆第一首吧。【免费下载链接】demucsCode for the paper Hybrid Spectrogram and Waveform Source Separation项目地址: https://gitcode.com/gh_mirrors/de/demucs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门