写了一个纯 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/

4095 次点击
所在节点    分享创造
25 条回复
AllenHua
2021-05-13 08:57:33 +08:00
赞👍🏻
towser
2021-05-13 09:04:36 +08:00
很帅气,已 star
bbtjym
2021-05-13 10:25:16 +08:00
czfandyslash
2021-05-13 10:40:21 +08:00
牛蛙!楼主是做音乐科技相关的工作吗?
wupher
2021-05-13 11:10:23 +08:00
赞!
loginv2
2021-05-13 11:35:52 +08:00
D:\SpleeterMsvcExe-1.0>D:\SpleeterMsvcExe-1.0\Spleeter.exe -m 2stems 123.mp3
Input file:
123.mp3

Output files:
123.vocals.mp3
123.accompaniment.mp3

[ 1.00%] Reading audio samples, 4814255/9628417
[ 2.00%] Reading audio samples, 9626427/9626427
[ 2.00%] Loading spleeter model, 0/1
2021-05-13 11:35:24.347021: I tensorflow/cc/saved_model/reader.cc:31] Reading SavedModel from: D:\SpleeterMsvcExe-1.0\models\2stems
2021-05-13 11:35:24.350276: I tensorflow/cc/saved_model/loader.cc:311] SavedModel load for tags { serve }; Status: fail. Took 3174 microseconds.

D:\SpleeterMsvcExe-1.0>
loginv2
2021-05-13 11:37:13 +08:00
解决了,是我用法问题
wudicgi
2021-05-13 12:03:16 +08:00
@czfandyslash 这个是业余爱好哈,工作是嵌入式开发,在 V2 貌似属于劝退专业

业余项目 (就是上边提到的那个 BeatShow) 正好非常需要 Spleeter 的这个功能,加上音轨分离做预处理后,效果好了非常多
wudicgi
2021-05-13 12:06:35 +08:00
@loginv2 因为软件更新的频率应该会大于 TensorFlow 模型文件的更新频率,所以发 release 时就单独发的
下载会麻烦一点,不过模型文件实在是太大了
bing0
2021-05-13 12:17:12 +08:00
卧槽,学好 C 真的是走遍天下。sault
czfandyslash
2021-05-13 14:24:09 +08:00
@wudicgi 好棒~ Beatshow 的软硬结合的开发也很吸引人,以前见这些 beat tracking 的方法用在 VJ 或者其他多媒体艺术中会比较多~
azenk
2021-05-13 14:54:35 +08:00
同嵌入式劝退行业,帮顶
ldm0
2021-05-13 18:04:24 +08:00
很强!可以二次开发嘛(
bagheer
2021-05-13 18:14:58 +08:00
有一个人, 也用这个,开发了个网站, 不但不开源,还收费, 一首歌 6 元钱
网址是 https://dango.ai/
bagheer
2021-05-13 18:16:59 +08:00
@bagheer 噢,看了一下,Spleeter 是 MIT 协议的,没事了.
wudicgi
2021-05-13 18:18:40 +08:00
@ldm0 用的和 spleeter 官方项目一样的 MIT 协议,应该都比较宽松了
wudicgi
2021-05-13 18:20:15 +08:00
@bagheer 用 Spleeter 做这类的服务的站点不少,GitHub 上开源了的 Web 服务类型的项目都有
有人愿意付费应该还是网站做的比较易用了
xwhxbg
2021-05-13 18:41:57 +08:00
这个理论上不是 fft 一发,然后对比已有 sample 的峰值,然后过滤再 ifft 回来就行吗?理论上 MATLAB 就能做了
monkeyNik
2021-05-18 18:32:53 +08:00
已 star
我是这方面小白,顺便问下这个东西有可能做到在实时语音中分离背景噪音吗
hanguofu
2021-05-19 01:23:30 +08:00
有意思 :)嵌入式码农的知识面就是广 !

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

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

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

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

© 2021 V2EX