去人声、提伴奏——在浏览器里跑的人声分离

把音频拖进来,人声和伴奏在这台机器上分开。文件不出本机,也不用排队等服务器。

手机上要有心理准备:模型要下 66.8 MB,3 分钟的歌要过 32 遍模型。一分钟以内的片段没问题,整首歌还是找台电脑。

载入音频

……或者把文件拖到这个页面上。

mp3、m4a、wav、flac、ogg、opus、mp4,浏览器能解码的都行。一次一个文件,10 分钟、50 MB 以内。

为这页做的 20 秒小样:伴奏、人声、伴奏。点一下走完整个流程,不用先下那 66.8 MB。

按下「开始分离」之后发生了什么

  1. 浏览器自己解码用的就是浏览器放歌时的那套解码器,统一重采样成 44,100 Hz 立体声,留在这个标签页里,不往任何地方发。
  2. 切成 5.75 秒一段每段做 7680 点 FFT、步长 1024 的短时傅里叶变换——和训练时的分析参数一模一样,两端各多留 87 毫秒重叠,接缝才听不出来。
  3. 模型只留下人声UVR-MDX-NET Voc_FT 读最低的 3072 个频点,输出它认为属于歌声的部分,再做逆变换还原成波形。
  4. 伴奏是减出来的把人声从原曲里逐样本减掉就是伴奏,所以两轨相加精确等于你载入的那份音频——没有二次编码,也没偷偷调响度。

这台机器上的实测:WebGPU 一段约 0.3 秒,3 分钟的歌 20 秒左右出结果;CPU 模式只用一条 WebAssembly 线程,一段约 19 秒,同一首歌要 10 分钟左右。服务器那边不缓存任何东西,所以第二首和第一首一样快。

这一页用的模型

模型
UVR-MDX-NET Voc_FT(ONNX)
一次性下载
66.8 MB,fp32
许可证
MIT — 看许可证全文
本机速度
WebGPU 每 5.75 秒音频约 0.3 秒

权重来自 Ultimate Vocal Remover 项目的 Anjok07 与 aufr33,MDX-Net 网络结构出自 Kuielab。UVR 作者按 MIT 授权这些模型,并要求用到它们的产品署名——这一段就是署名,原文在许可证文件里。推理用 ONNX Runtime Web(MIT)。

拖文件进来之前,大家一般会问这些

我的音乐会被上传吗?

不会。整个过程里唯一走网络的是那 66.8 MB 的模型文件,方向是往你这边来。按「开始分离」之前打开开发者工具的网络面板看着:模型进了缓存之后,一个请求都不会再发。也正因为如此,这里没有排队,也没有分钟数。

和 LALAL.AI、vocalremover.org 这些比呢?

它们是把文件传到服务器、用更大的模型算,然后按分钟卖(LALAL.AI 免费额度一共十分钟)。这一页是把 66.8 MB 的模型放到你的机器上跑:不限次、免费、文件不出门,代价是算力用你自己的,遇到编配很满的歌上限更低。流行、摇滚、民谣这类干净的编配,差别很难听出来;混响厚、声部挤的商业母带,服务器上的大模型仍然更强。

能把鼓和贝斯也单独分出来吗?

这一页不行,只有人声和伴奏两轨。四轨要换模型(htdemucs,165 MB,每秒音频的计算量大约是现在的三倍),已经列进付费档的计划里,但今天并没有藏在某个按钮后面。

CPU 模式为什么慢这么多?

算的东西一样,跑的硬件不一样。一段 5.75 秒的音频,WebGPU 上约 0.3 秒,单条 WebAssembly 线程上约 19 秒;换成整首 3 分钟的歌,就是 20 秒左右对 10 分钟左右。比较新的机器上 Chrome、Edge 会走 WebGPU;Firefox 和老一点的 Safari 自动退到 CPU,上面那行状态会告诉你当前是哪条路。

视频文件能直接拖进来吗?

只要浏览器能解码就行,.mp4、.webm 一般没问题。程序只读音轨,出来的也只有音频——两个 WAV,没有视频。带 DRM 的文件解不开,会直接给你一句提示。

分出来的音轨我能拿去干嘛?

这是你和版权方之间的事。处理自己录的 demo、排练带、客户给的混音,或者你已经买到授权的素材,是再正常不过的棚里活;把商业发行曲的清唱扒出来发出去就不是,在浏览器里算而不是在别人服务器上算,并不改变这一点。这里不做任何检查,责任在你。

限制是什么?最后拿到的是什么?

一次一个文件,10 分钟、50 MB 以内。拿到的是两个 44.1 kHz 16 位立体声 WAV——人声和伴奏——两者逐样本相加正好等于原曲。它们只存在这个标签页里,刷新就没了,因为任何地方都没有存。