music-source-separation
music-source-separation 是一个基于 TensorFlow 构建的开源项目,旨在利用深度神经网络将流行音乐中的人声与伴奏进行分离。它主要解决了从单声道录音中提取清晰演唱声音的技术难题,为音乐信息检索、音频处理及创作提供了高质量的数据基础。
该项目非常适合人工智能开发者、音频算法研究人员以及对音乐科技感兴趣的学生使用。由于代码依赖特定版本的 TensorFlow 和 librosa 库,且涉及模型训练与评估流程,使用者最好具备一定的编程基础和深度学习知识。
在技术实现上,music-source-separation 复现了经典的深度循环神经网络(RNN)架构,包含三层 RNN、全连接层以及时频掩码层。其核心亮点在于采用短时傅里叶变换(STFT)处理音频频谱,并通过引入“区分项”的损失函数,有效防止分离出的人声与伴奏信号趋于相似,从而提升分离纯度。项目基于 iKala 和 MIR-1K 数据集训练,并提供了完整的训练、评估脚本及 TensorBoard 可视化支持,是研究歌声分离领域的优质参考范例。
使用场景
一位独立音乐制作人需要从老旧的卡拉 OK 录音中提取纯净人声,以便为歌手重新编曲制作新版伴奏。
没有 music-source-separation 时
- 音质受损严重:传统滤波方法在去除背景乐时,往往连带切掉人声的高频细节,导致声音发闷、失真。
- 分离不彻底:简单的立体声相位抵消对单声道(Monaural)老录音完全无效,背景鼓点和旋律依然清晰可闻。
- 人工成本高昂:为了获得干净音轨,不得不花费数小时手动逐帧编辑频谱图,或高价聘请专业工程师处理。
- 缺乏灵活方案:面对不同风格的混音(如流行、民谣),无法自适应调整,只能依赖固定参数的插件反复试错。
使用 music-source-separation 后
- 高保真提取:基于深度循环神经网络(RNN)模型,精准识别人声特征,在移除伴奏的同时完整保留歌手的呼吸感和情感细节。
- 单声道友好:即使输入是左右声道混合的单声道录音,也能通过时频掩码技术有效分离出人声与背景音乐。
- 自动化高效:只需配置好数据集路径并运行
eval.py,即可批量处理数百首歌曲,将数天的工作量缩短至几分钟。 - 智能泛化能力强:模型在 iKala 和 MIR-1K 数据集上经过训练,能自适应处理不同性别歌手及多种音乐风格的分离任务。
music-source-separation 利用深度学习技术,将原本昂贵且低效的人声提取工作转变为自动化、高保真的标准流程,极大降低了音乐再创作的技术门槛。
运行环境要求
- 未说明
未说明 (基于 TensorFlow 1.2,通常支持 CPU 或任意兼容的 NVIDIA GPU,但无具体型号要求)
未说明

快速开始
基于 TensorFlow 的音乐源分离深度神经网络
本工作来自 济州机器学习营 2017
- 共同作者:Mark Kwon (hjkwon0609@gmail.com)
- 最终成果将在济州 ML 营完成。请查看 这里。
- 观看演示!
简介
近年来,深度神经网络已被广泛应用于各个领域,并显著提升了多项任务的性能。将其应用于音乐信息检索(MIR)任务同样带来了质的飞跃。音乐源分离是指从音乐中分离出人声的任务,例如流行音乐中的主唱部分。在本项目中,我使用 TensorFlow 实现了一个用于音乐源分离的深度神经网络模型。
实现细节
- 我采用了 Posen 提出的深度循环神经网络(RNN)模型 [2, 3]。
- 包含 3 层 RNN、2 层全连接层和 2 层时频掩码层。
- 训练时使用了 [1] 中介绍的 iKala 数据集以及公开的 MIR-1K 数据集。
环境要求
- Numpy >= 1.3.0
- TensorFlow == 1.2
- librosa == 0.5.1
使用方法
- 配置
- config.py:请正确设置数据集路径。
- 训练
python train.py- 在 TensorBoard 中查看损失曲线。
- 评估
python eval.py- 在 TensorBoard 的音频标签页中查看结果。
[相关论文] 使用深度循环神经网络从单声道录音中分离歌声(2014) [3]
方法概述
整体流程
- 将音乐波形(人声与背景音乐的混合信号)通过短时傅里叶变换(STFT)转换为幅度谱和相位谱。
- 仅将幅度谱作为 RNN 层的输入进行处理。
- 利用逆短时傅里叶变换(ISTFT),结合各分离源的估计幅度谱和混合信号的相位谱,还原出各分离源的波形。

模型结构
- RNN 层(3 层)
- 全连接层
- 每个分离源对应一个
- 时频掩码层(归一化)
- 每个分离源对应一个
- 不包含非线性激活函数
- 源1的幅度 + 源2的幅度 = 输入信号的幅度

损失函数
- 使用估计幅度谱与真实幅度谱之间的均方误差(MSE)或 KL 散度作为损失函数。


- 此外,为了防止不同分离源过于相似,还引入了“区分性”项。
- 区分性权重(r)需谨慎选择,因为过大的 r 值会导致训练过程中忽略第一项损失(例如 r ≥ 1 会使结果变差)。


实验
设置
- 使用了 MIR-1K 数据集。
- 包含 1000 个采样率为 16KHz、时长 4 至 13 秒的歌曲片段。
- 数据来源于 110 首由男女业余歌手演唱的卡拉 OK 曲目。
- 人声与背景音乐分别位于不同的声道。
- 数据增强
- 对人声进行循环移位后与背景音乐混合。
- 使用 1024 点 STFT,重叠率为 50%(步长为 512 点)。
- 优化器采用 L-BFGS,而非梯度下降类优化器。
- 连接相邻帧
- 为丰富上下文信息,将当前帧与其前后帧拼接在一起。
评价指标
- 使用了 BSS-EVAL 3.0 指标。
- (v' = 估计的人声,v = 真实的人声,m = 真实的背景音乐,x = 混合信号)
- 信干比(SDR)或加权信干比(GSDR)
- SDR(v) 表示 v' 与 v 的相似程度如何?
- 信噪比(SIR)或加权信噪比(GSIR)
- SIR(v) 表示 v' 与 m 的区分度如何?
- 信杂比(SAR)或加权信杂比(GSAR)
- 归一化信干比(NSDR)或加权归一化信干比(GNSDR)
- 表示估计的人声相对于混合信号的信干比提升。
- SDR(v', v) - SDR(x, v)
- 信干比(SDR)或加权信干比(GSDR)
结果
- 相较于传统方法,所提出的神经网络模型在 GNSDR 上提升了 2.30–2.48 dB,在 GSIR 上提升了 4.32–5.42 dB,同时保持了相近的 GSAR 性能。(质的飞跃!!!)

- 连接相邻帧的方法带来了更好的效果。 可以推测,相比单一帧,提供更多上下文信息有助于神经网络更好地学习。

- 事实上,基于 RNN 的模型相较于 DNN 并没有带来显著的性能提升。 然而,在经过仔细选择权重(r)的区分性训练后,实验结果仍显示出一定的优势。

- 混合信号、人声和背景音乐的幅度谱可视化图(对数尺度)。

[相关论文] 使用向量积神经网络进行音乐信号处理(2017) [1]
方法
- 采用了一些变换方法来丰富每帧的信息
- 未沿用 Posen 的简单拼接前后帧的方式。
- 使用了 [4] 提出的向量积神经网络(VPNN)。
- 在 VPNN 中,输入数据、权重和偏置均为三维向量。
- 各元素(向量)之间通过向量叉积运算。

上下文窗口变换(WVPNN)
- 将前一帧、当前帧和下一帧视为三维向量。
- 在三维度输出向量中仅保留第二个值(即当前帧)作为输出。
光谱-颜色变换(CVPNN)
- 将幅度值转换为RGB颜色值(三维向量)
- x 是每个时频单元的幅度,
- n 是用于偏置RGB值生成的标量。
- 在本工作中,n 经验性地设置为0.0938。

损失函数
- 使用了与Posen工作相同的均方误差损失函数。
实验
设置
- 使用了iKala数据集。
- 从206首iKala歌曲中采样得到252段30秒的片段。
- 训练集包含63个片段,测试集包含189个片段。
- 所有音频片段均被下采样至16000 Hz。
- 窗口大小为1024点,步长为256点。
- VPNN网络由3层组成,每层包含512个单元。
- 应用了时频掩码。
评价指标
- 使用了GNSDR、GSIR、GSAR指标。
结果
- CVPNN和WVPNN的表现优于具有相同权重规模的DNN。

参考文献
- Zhe-Cheng Fan, Tak-Shing T. Chan, Yi-Hsuan Yang, and Jyh-Shing R. Jang, “使用向量积神经网络进行音乐信号处理”, 第一届深度学习与音乐国际研讨会论文集,与IJCNN联合举办,2017年5月。
- P.-S. Huang, M. Kim, M. Hasegawa-Johnson, P. Smaragdis, “单声道声源分离中掩码与深度循环神经网络的联合优化”, IEEE/ACM 音频、语音与语言处理汇刊,第23卷,第12期,第2136–2147页,2015年12月。
- P.-S. Huang, M. Kim, M. Hasegawa-Johnson, P. Smaragdis, “利用深度循环神经网络从单声道录音中分离人声” ,发表于2014年国际音乐信息检索协会会议(ISMIR)。
- Tohru Nitta, “基于三维向量积的神经网络反向传播算法。载于IJCNN论文集”, IJCAI论文集,2007年。
常见问题
相似工具推荐
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
GPT-SoVITS
GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具,旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点,实现了“零样本”和“少样本”的快速建模:用户只需提供 5 秒参考音频即可即时生成语音,或使用 1 分钟数据进行微调,从而获得高度逼真且相似度极佳的声音效果。 该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能,极大地降低了数据准备和模型训练的技术门槛,让非专业人士也能轻松上手。 在技术亮点方面,GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成,还具备卓越的推理速度,在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音,还是进行多语言语音交互研究,GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。
TTS
🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。 无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。 在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。
LocalAI
LocalAI 是一款开源的本地人工智能引擎,旨在让用户在任意硬件上轻松运行各类 AI 模型,包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛,无需昂贵的专用 GPU,仅凭普通 CPU 或常见的消费级显卡(如 NVIDIA、AMD、Intel 及 Apple Silicon)即可部署和运行复杂的 AI 任务。 对于担心数据隐私的用户而言,LocalAI 提供了“隐私优先”的解决方案,确保所有数据处理均在本地基础设施内完成,无需上传至云端。同时,它完美兼容 OpenAI、Anthropic 等主流 API 接口,这意味着开发者可以无缝迁移现有应用,直接利用本地资源替代云服务,既降低了成本又提升了可控性。 LocalAI 内置了超过 35 种后端支持(如 llama.cpp、vLLM、Whisper 等),并集成了自主 AI 代理、工具调用及检索增强生成(RAG)等高级功能,且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员,还是想要在个人电脑上体验最新 AI 技术的极客玩家,都能通过 LocalAI 获
bark
Bark 是由 Suno 推出的开源生成式音频模型,能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同,Bark 基于 Transformer 架构,不仅能模拟说话,还能生成笑声、叹息、哭泣等非语言声音,甚至能处理带有情感色彩和语气停顿的复杂文本,极大地丰富了音频表达的可能性。 它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点,让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员,还是希望快速原型设计的开发者,都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。 技术亮点方面,Bark 支持商业使用(MIT 许可),并在近期更新中实现了显著的推理速度提升,同时提供了适配低显存 GPU 的版本,降低了使用门槛。此外,社区还建立了丰富的提示词库,帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码,即可将创意文本转化为高质量音频,是连接文字与声音世界的强大桥梁。
ChatTTS
ChatTTS 是一款专为日常对话场景打造的生成式语音模型,特别适用于大语言模型助手等交互式应用。它主要解决了传统文本转语音(TTS)技术在对话中缺乏自然感、情感表达单一以及难以处理停顿、笑声等细微语气的问题,让机器生成的语音听起来更像真人在聊天。 这款工具非常适合开发者、研究人员以及希望为应用增添自然语音交互功能的设计师使用。普通用户也可以通过社区开发的衍生产品体验其能力。ChatTTS 的核心亮点在于其对对话任务的深度优化:它不仅支持中英文双语,还能精准控制韵律细节,自动生成自然的 laughter(笑声)、pauses(停顿)和 interjections(插入语),从而实现多说话人的互动对话效果。在韵律表现上,ChatTTS 超越了大多数开源 TTS 模型。目前开源版本基于 4 万小时数据预训练而成,虽主要用于学术研究与教育目的,但已展现出强大的潜力,并支持流式音频生成与零样本推理,为后续的多情绪控制等进阶功能奠定了基础。