【免费下载链接】kumone
雲の音 — Native macOS NetEase Cloud Music client built with SwiftUI
Kumone 是一个用 SwiftUI 构建的原生 macOS 网易云音乐客户端,其 StemKit 模块能在本地完成人声分离(把人声从伴奏中拆出来)。这篇文章基于项目预研文档 docs/automix-stems-predev.md,讲清楚一个绕不开的合规问题:Kumone 采用 LGPL-3.0 许可,而主流人声分离模型的权重几乎都挂着 CC BY-NC-SA 的"禁止商业使用"标签——这条红线该如何调研、如何规避?
第一步:先确认"NC 权重能不能进分发包"
这是整个调研的起点,也是唯一有"一票否决权"的问题。
Kumone 的许可结构如下:
- 主许可:LICENSE ——LGPL-3.0-only
- 附带的 GPL-3.0 全文:COPYING
这里存在一个和商业 App 完全不同的约束,原文的表述非常直接:
LGPL 要求向下游授予包括商业用途在内的全部权利。CC BY-NC-SA 的"禁止商业使用"与之直接冲突。因此 NC 权重不能内置进 Kumone 的分发包——不是"风险较高",是不兼容。
这意味着几种常见的"绕法"都会被堵死:
| 常见绕法 | 为什么行不通 |
|---|---|
| "权重是数据不是代码,不受 LGPL 约束" | 只要我们在 Release 里分发它、且核心功能依赖它,分发整体就带上了 NC 限制 |
| "只内置,不分发" | 分发包 = 分发。App 安装包里的每一字节都算 |
| "用户自己从网上下" | 这条反而是唯一干净的绕法(见后文 §3) |
第二步:逐模型核实权重许可证
很多人会犯的第一个错误:把代码许可证当成权重许可证。代码 MIT 不代表权重 MIT——这正是 Demucs 的争议所在。
以下是预研文档 §2.2 的核实结果(完整版见 docs/automix-stems-predev.md):
| 模型 | 代码许可 | 权重许可 | 结论 |
|---|---|---|---|
| Demucs / htdemucs(Meta) | MIT | ⚠️ 争议 / 不明 | README 只说代码 MIT,未单独声明权重;Issue 中维护者疑似回复"权重不覆盖 MIT、仅供科研",必须实际求证后才能用 |
| Open-Unmix | MIT | umx / umxhq:MIT;umxl:CC BY-NC-SA 4.0 | umxl 不可用;umxhq 可用但人声 SDR 仅 6.25 |
| Spleeter(Deezer) | MIT | 不明 | 官方至今未回复许可 issue,且质量落后,不建议 |
| BS-RoFormer / Mel-Band RoFormer | 架构实现 MIT | MIT(ZFTurbo MSST 仓库自带许可,checkpoint 随 Releases 分发) | ✅ 可用,Kumone 实际采用的路线 |
| Essentia 分类模型 | AGPLv3 | CC BY-NC-SA 4.0(可另谈商业授权) | 双重不可用(NC + AGPL 对 native app 分发也是障碍) |
| madmom models | BSD | CC BY-NC-SA 4.0 | 不可用,README 明确要求商业使用联系作者 |
一个值得记住的细节:Open-Unmix 同一个项目里,小模型权重是 MIT、大模型权重是 CC BY-NC-SA。所以"核实"必须细化到具体 checkpoint,而不是笼统地看仓库 LICENSE 文件。
第三步:认清全行业灰区——训练数据传染性
几乎所有开源人声分离模型的训练集都包含MUSDB18 / MUSDB18-HQ,而这个数据集本身是CC BY-NC-SA,官方还要求"仅供学术用途"。
那么问题来了:用 NC 数据训练出来的权重,算不算数据的衍生作品?
法律上没有定论,这是整个音乐源分离领域的共同灰区。面对灰区,Kumone 采取的是务实态度,三条原则:
- 不去赌灰区的解释——不依赖"权重不是衍生作品"这种站不住的假设;
- 只选上游明确写了 MIT 的权重——把许可证的确定性握在手里;
- 采用"不分发、只下载"策略——把剩余的不确定性留在上游,而不是搬进 Kumone 的 Release 里。
第四步:绕开红线的落地方案——"清单 + 下载"
调研结论最终落在一个工程机制上,核心思想一句话概括:
Kumone 的 Release 里不出现任何模型权重,二进制只带一份"清单"(上游 URL + 硬编码 SHA-256),权重在用户首次启用功能时从上游原始地址下载。
具体实现散布在几个文件里:
- 模型清单与下载器:ModelStore.swift —— 每个模型一条
ModelDescriptor(文件名、URL、SHA-256、体积),下载流式校验,摘要不匹配立即拒绝,损坏的下载自愈重试; - 4 轨 checkpoint 本地转换脚本:fetch-4stem-checkpoint.sh —— 头部注释明确写着许可立场:"checkpoint is MIT… the weights aredownloaded, not distributed",且对上游下载和转换产物做双向SHA-256 校验;
- 分离器入口:StemSeparator.swift。
两个内置模型的实际状态:
| 模型 | 许可 | 体积 | 获取方式 |
|---|---|---|---|
| Mel-Band RoFormer(仅人声,ZFTurbo v1) | MIT | 64 MiB | 首次启用自动下载,存到~/Library/Application Support/Kumone/Models/ |
| BS-RoFormer 四轨(鼓/贝斯/其他/人声) | MIT | 263 MB(fp16 转换后) | 需要本地转换,由脚本完成;无该文件时四轨手法自动降级为两轨,人声模型照常工作 |
注意存储位置特意选了 Application Support 而不是 Caches——64 MB 是用户明确选择的功能资产,系统不应该有权随手清掉它。
这套设计还兼顾了另外两层理由(见预研文档 §6.4):
- 分发体积:Kumone 走 Developer ID + 侧载 IPA,内置 200 MB 模型会直接拖长每次安装/更新的等待;
- 产品定位:人声分离是 AutoMix 的可选进阶档,默认关闭,让不开这个功能的人零成本。
总结:接入开源模型的四条合规清单
把整个调研过程抽象成可复用的检查单,供任何要集成开源 AI 模型的开发者参考:
- 代码许可 ≠ 权重许可,必须逐个 checkpoint 核实;README 没声明的,视同不明;
- NC 权重不内置:与 copyleft 许可(LGPL/GPL)分发不兼容,让用户自行从上游下载是唯一干净的路径;
- 硬编码 SHA-256 固定内容:URL 可以换(比如换镜像),摘要不能换——摘要才是内容真实性的锚点;
- 把调研结论写进文档:哪些模型可用、为什么不可用、争议点在哪,白纸黑字留给下一个维护者。
Kumone 的做法证明了一件事:许可证限制不是"用不上人声分离"的判词,而是一道可以通过架构设计绕过去的护栏——调研先行(预研文档 §2),机制兜底(清单 + 校验 + 降级),最后才轮到工程落地。
📌 延伸阅读:automix-stems-predev.md 中还有各模型的 SDR 质量对照、Core ML 转换路径等完整调研记录。
【免费下载链接】kumone
雲の音 — Native macOS NetEase Cloud Music client built with SwiftUI
相关推荐
从开源到商用:OpenMower 许可证解读(CC BY-NC-SA 4.0)
从开源到商用:OpenMower 许可证解读(CC BY NC SA 4.0) 引言:开源项目的商业化困境 你是否曾想过将开源项目OpenMower商业化?这款
机器人嵌入式智能硬件硬件开发自动驾驶DUSt3R开源许可证解析:CC BY-NC-SA 4.0商业使用指南
DUSt3R开源许可证解析:CC BY NC SA 4.0商业使用指南 引言:开源许可的商业困境与解决方案 你是否曾因开源项目许可证条款模糊而不敢用于商业产品?
人工智能深度学习计算机视觉预训练点云终极鼠标优化指南:如何用Mac Mouse Fix让普通鼠标超越苹果触控板
终极鼠标优化指南:如何用Mac Mouse Fix让普通鼠标超越苹果触控板 还在为Mac上的鼠标体验而烦恼吗?普通鼠标在macOS上总是感觉不够流畅?Mac M
桌面应用系统编程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考