写了一个纯 C 语言版本的 Spleeter 人声、伴奏分离命令行程序,绿色软件直接运行,不需要 Python

2021-05-13 08:51:42 +08:00
 wudicgi

Spleeter 是 2019 年底 Deezer 公司开源的一个可以分离人声和背景音乐的程序 (也可分离出鼓、贝斯和钢琴),效果拔群。售价 400 刀的 RX 8 软件中的 Music Rebalance 功能,用的就是 Spleeter 的模型。

一年多过去了,现在 Github 上的 Spleeter 程序,包括官方原版程序,基本还都是需要有 Python 环境或者内部包含了一个 Python 的。C++ 的几个静态库和命令行程序,不是用了 CMake 就是只支持 Linux 系统。对 Windows 平台开发者不太友好,如果是一般用户想直接使用就更不方便了。

我之前为了将 Spleeter 的功能引入到我自己的 BeatShow 程序中,写了一些代码。最近将这部分代码整理了一下,形成了一个独立的纯 C 语言编写的 Spleeter 命令行程序。

开发环境是 Visual Studio, 编译完就是一个 exe 程序,其余 dll 文件是 TensorFlow C API 和 FFmpeg 的动态库。

Github 项目地址是 https://github.com/wudicgi/SpleeterMsvcExe

根据说明直接下载 release 文件就好。models 文件比较大,如果下载速度不给力可以试试 https://ghproxy.com/

4577 次点击
所在节点    分享创造
29 条回复
wudicgi
2021-05-19 10:10:05 +08:00
@monkeyNik Github 上有一个 SpleeterRT 项目, https://github.com/james34602/SpleeterRT
我没有试过,看 release 里的说明,延迟还是有点大了

Intrinsic latency of algorithm with STFT scheme:
256 -> ((F / Lap) * T * BufFactor) / Fs -> ((4096 / 4) * 256 * 2) / 44100 -> 11.8886 secs
128 -> ((F / Lap) * T * BufFactor) / Fs -> ((4096 / 4) * 128 * 2) / 44100 -> 5.9443 secs
64 -> ((F / Lap) * T * BufFactor) / Fs -> ((4096 / 4) * 64 * 2) / 44100 -> 2.9721 secs

虽然这个项目的作者说这已经是他见过深度学习类型算法中很低的延迟了

2.9721 secs latency would be the lowest latency deep learning model-based monaural source separation algorithm I've ever seen!
wudicgi
2021-05-19 10:16:58 +08:00
@monkeyNik 而且 Spleeter 这个模型的用途不是去除噪音,它训练时候使用的数据集是 musDB
https://sigsep.github.io/datasets/musdb.html

数据集中每个音频文件都有这些音轨

0 - The mixture,
1 - The drums,
2 - The bass,
3 - The rest of the accompaniment,
4 - The vocals.

所以 Spleeter 模型只能把 mixture 分离为单独的 drums, bass, vocals 这些音轨

你倒是可以试试用自己的 语音-噪声 数据集训练,我在这方面了解不多,感觉降噪应该用不到这么复杂的模型
longbye0
2021-05-26 00:32:42 +08:00
@monkeyNik rnnoise
siknet
2022-06-20 16:42:10 +08:00
不错,试了下歌曲,效果很棒
chasb
2022-06-21 23:36:58 +08:00
@wudicgi audio engineer in LA.... Nice done!
badboy200600
15 天前
这个部署需要 GPU 么 GPU 的服务器可是很贵的...
wudicgi
14 天前
@badboy200600 项目自带的 tensorflow dll 是纯 CPU 的
tensorflow 有可以用 GPU 的 dll, 但在我的 5900X + RTX4070 的主机上, 用 CPU 比 GPU 还快
badboy200600
13 天前
大佬 有办法在手机本地运行么? 比如 ios 安卓 本地跑
wudicgi
12 天前
@badboy200600 这些平台你可以试试 github 上的其他项目

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/776618

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX