Wave-U-Net

GitHub
936 182 较难 1 次阅读 昨天MIT开发框架音频
AI 解读 由 AI 自动生成,仅供参考

Wave-U-Net 是一款专为音频源分离任务设计的开源深度学习模型。它的核心能力是将混合在一起的音频信号(如一首歌曲)拆解为独立的音轨,例如单独提取人声或分离出不同的乐器声部。

该工具主要解决了传统音频分离方法依赖人工设计特征或需要复杂预处理的问题。与许多先将音频转换为频谱图再处理的模型不同,Wave-U-Net 的独特亮点在于其“端到端”的处理方式:它直接对原始音频波形进行运算,通过一维卷积神经网络自动学习从时域到频域的分解特征。这种基于改进版 U-Net 架构的设计,能够在多个时间分辨率和抽象层级上捕捉声音细节,从而实现高精度的分离效果,并在国际 SiSec 分离竞赛中取得了优异成绩。

Wave-U-Net 非常适合音频算法研究人员、AI 开发者以及需要高质量音源分离方案的技术团队使用。虽然项目提供了预训练模型供测试,但由于其涉及深度学习训练与推理,且对计算资源(特别是 GPU)有一定要求,因此更适合具备 Python 编程基础及机器学习背景的专业人士进行二次开发或实验复现,而非面向普通大众的直接消费级软件。

使用场景

一位独立音乐制作人需要从一首老旧的现场录音中提取纯净的人声,以便进行重新混音和采样创作。

没有 Wave-U-Net 时

  • 分离效果生硬:传统频域算法(如基于频谱掩码的方法)容易在提取人声时丢失高频细节,导致声音听起来像“水下通话”,伴有明显的金属伪影。
  • 依赖多轨工程:若无法获得原始分轨文件,几乎无法通过常规手段将人声与复杂的背景乐器彻底剥离,只能放弃该素材。
  • 手动处理耗时:试图通过均衡器(EQ)或相位抵消手动过滤伴奏,不仅效率极低,且难以避免损伤人声的自然音色。
  • 端到端适配差:现有工具往往需要人工设计特征提取前端,难以适应不同录音质量的复杂场景,泛化能力弱。

使用 Wave-U-Net 后

  • 波形级高保真分离:Wave-U-Net 直接在原始音频波形上进行端到端的一维卷积处理,有效保留了人声的瞬态细节和自然质感,显著减少了听觉伪影。
  • 单文件即可操作:无需任何分轨工程,仅需输入混合好的立体声音频,即可利用预训练模型精准分离出人声、鼓点或其他乐器轨道。
  • 自动化高效流程:通过下采样和上采样块自动学习多尺度特征,几分钟内即可完成过去需要数小时手动调试的分离工作。
  • 自适应复杂场景:得益于在 MUSDB18 等数据集上的训练,它能智能应对各种混响和背景噪声,即使在数据有限的情况下也能表现优异。

Wave-U-Net 通过将深度学习直接应用于时域波形,让从复杂混音中无损提取单一音源变得像一键滤镜般简单高效。

运行环境要求

操作系统
  • Linux
  • macOS
GPU
  • 强烈推荐使用 GPU 以缩短训练时间
  • 需安装 CUDA 9
  • 支持 tensorflow-gpu 1.8.0
内存

未说明

依赖
notes系统依赖 libsndfile 库。若仅需使用预训练模型进行推理,无需下载大型数据集;若要复现论文实验进行训练,需手动下载 MUSDB18 和 CCMixter 数据集并配置路径。MacOS 用户可能会遇到 matplotlib 导入错误。在准备 MUSDB 数据集时,偶尔会因 ffmpeg 进程冻结导致转换中断,建议重试。
python3.6.8
tensorflow-gpu==1.8.0
numpy==1.15.4
librosa==0.6.2
soundfile==0.10.2
sacred==0.7.3
musdb==0.2.3
museval==0.2.0
protobuf==3.4.0
lxml==4.2.1
matplotlib<3.0
Wave-U-Net hero image

快速开始

Wave-U-Net

用于音频源分离的 Wave-U-Net 实现。

对于改进后的 PyTorch 版本,请点击这里

对于第三方基于 TensorFlow 2/Keras 的实现(非本人),请点击这里

听音示例

收听人声分离结果此处,多乐器分离结果此处

什么是 Wave-U-Net?

Wave-U-Net 是一种适用于音频源分离任务的卷积神经网络,它直接作用于原始音频波形,相关介绍见这篇论文

Wave-U-Net 是将 U-Net 架构适配到一维时域上,以实现端到端的音频源分离。通过一系列下采样和上采样模块,结合一维卷积与上下采样操作,模型能够在多个尺度、抽象层次和时间分辨率上提取特征,并将其融合以做出预测。

下图展示了该网络架构的概要。

参与 SiSec 分离竞赛

Wave-U-Net 还以提交编号 STL1STL2 的身份参加了 SiSec 分离竞赛,并取得了不错的成绩,尤其是在与其他许多参赛作品相比,我们所使用的数据集相对有限的情况下——尽管我们的方法属于更依赖数据的端到端方案,还需要从数据中学习频率分解的前端处理部分。

安装

需求

强烈建议使用 GPU,以避免训练时间过长。

该项目基于 Python 3.6.8,需要安装 libsndfile 和 CUDA 9。

此外,还需安装以下 Python 包:

numpy==1.15.4
sacred==0.7.3
tensorflow-gpu==1.8.0
librosa==0.6.2
soundfile==0.10.2
lxml==4.2.1
musdb==0.2.3
museval==0.2.0
google==2.0.1
protobuf==3.4.0

如果没有 GPU,也可以使用 CPU 版本的 TensorFlow (tensorflow) 代替 tensorflow-gpu

上述所有包也已保存在本仓库的 requirements.txt 文件中,因此您可以先克隆仓库,然后在下载的仓库路径下执行以下命令,一次性安装所有所需包:

pip install -r requirements.txt

若要复现论文中的图表,可使用 Plot.py 中的函数。此时还需安装 matplotlib<3.0 包。

下载数据集

如果您想直接使用我们提供的预训练模型来分离自己的歌曲,请跳至最后一节,因为在这种情况下无需下载数据集。

若要复现论文中的实验(即训练所有模型),则需要下载以下数据集。当然,您也可以使用自己的数据集进行训练,但那样就需要手动修改代码,本文不对此进行讨论。

MUSDB18

请下载完整的 MUSDB18 数据集,并将其解压到您选择的文件夹中。该数据集应包含两个子文件夹:“test”和“train”,以及一个 README.md 文件。

CCMixter(仅人声分离实验需要)

如果您不仅想复现多乐器分离实验,还想复现人声分离实验,则还需要从 https://members.loria.fr/ALiutkus/kam/ 下载 CCMixter 人声分离数据库。请将该数据集解压到您选择的文件夹中,其主文件夹内应为每首歌曲单独创建一个子文件夹。

设置文件路径

现在需要为数据集以及保存源估计结果的目录设置正确的文件路径。

打开 Config.py 文件,将 model_config 字典中的 musdb_path 条目设置为 MUSDB18 数据集主文件夹的路径。 同时,将同一 model_config 字典中的 estimates_path 条目设置为您希望保存模型最终源估计结果的空文件夹路径。

如果使用 CCMixter 数据集,请打开主仓库文件夹中的 CCMixter.xml 文件,将其中标记为 databaseFolderPath 的文件路径替换为您 CCMixter 主文件夹的实际路径。

训练模型 / 模型概述

由于论文研究了 Wave-U-Net 的多种模型变体,并且还训练了作为对比的、曾达到最先进性能的用于人声分离的 U-Net,我们列出了需要训练的模型变体及其对应的训练命令:

模型名称(来自论文) 描述 分离人声还是多乐器? 训练命令
M1 基线 Wave-U-Net 模型 人声 python Training.py
M2 M1 + 差值输出层 人声 python Training.py with cfg.baseline_diff
M3 M2 + 合适的输入上下文 人声 python Training.py with cfg.baseline_context
M4 性能最佳:M3 + 立体声 I/O 人声 python Training.py with cfg.baseline_stereo
M5 M4 + 学习型上采样层 人声 python Training.py with cfg.full
M6 将 M4 应用于多乐器分离 多乐器 python Training.py with cfg.full_multi_instrument
M7 用于与 SotA 模型 U7、U7a 对比的 Wave-U-Net 模型 人声 python Training.py with cfg.baseline_comparison
U7 前人工作的 U-Net 复现,基于音频的 MSE 损失 人声 python Training.py with cfg.unet_spectrogram
U7a 类似于 U7,但使用 L1 幅度损失 人声 python Training.py with cfg.unet_spectrogram_l1

新增:

我们还包含了以下未在论文中提及的模型(同样提供预训练权重下载!):

模型名称(不在论文中) 描述 分离人声还是多乐器? 训练命令
M5-HighSR M5,采样率为 44.1 KHz 人声 python Training.py with cfg.full_44KHz

M5-HighSR 是我们目前最好的人声分离器,其人声/伴奏 SDR 的中位数(均值)分别为 4.95(1.01)和 11.16(12.87)。

在歌曲上测试训练好的模型!

我们提供了 M4、M6 和 M5-HighSR 的预训练版本,方便您立即对任何歌曲进行分离。

下载我们的预训练模型

请在此处下载我们的预训练模型 链接。将压缩包解压到本仓库的 checkpoints 子文件夹中,确保每个模型都有一个独立的子文件夹(例如 REPO/checkpoints/baseline_stereo)。

运行预训练模型

要快速演示使用我们预训练的最佳人声分离模型(M5-HighSR)处理示例歌曲,只需执行以下命令:

python Predict.py with cfg.full_44KHz

即可将本仓库 audio_examples 子文件夹中的歌曲“Mallory”分离为人声和伴奏。输出文件将保存在输入文件旁边。

若要将我们的预训练模型应用于您自己的任意歌曲,只需通过 input_path 参数指定音频文件路径:

python Predict.py with cfg.full_44KHz input_path="/mnt/medien/Daniel/Music/Dark Passion Play/Nightwish - Bye Bye Beautiful.mp3"

如果您希望将预测结果保存到自定义文件夹而非输入歌曲所在的位置,只需添加 output_path 参数:

python Predict.py with cfg.full_44KHz input_path="/mnt/medien/Daniel/Music/Dark Passion Play/Nightwish - Bye Bye Beautiful.mp3" output_path="/home/daniel"

若想使用我们提供的其他预训练模型(如多乐器分离器)或您自己的模型,请通过 model_path 参数指向 TensorFlow 检查点文件的位置,并确保模型配置(此处为 full_multi_instrument)与检查点中保存的模型一致。以我们打包好的多乐器模型为例:

python Predict.py with cfg.full_multi_instrument model_path="checkpoints/full_multi_instrument/full_multi_instrument-134067" input_path="/mnt/medien/Daniel/Music/Dark Passion Play/Nightwish - Bye Bye Beautiful.mp3" output_path="/home/daniel"

已知问题 / 故障排除

MacOS:如果导入 matplotlib 时出现错误,请参阅 此问题此问题 获取解决方案。

在准备 MUSDB 数据集的过程中,有时会因 ffmpeg 进程卡死而导致转换为 WAV 文件的操作中断。该进程由 musdb Python 包内部使用,用于识别数据集中的 mp4 音频流。这似乎是 stempeg 库深层使用的 subprocess.Popen() 函数引发的随机性错误,目前尚无明确的解决方法。建议遇到此类问题时重新生成数据集。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

157.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|5天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|6天前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架