前段时间开源了一个关于音频特征提取和分析的小项目,自己是 AI 音频领域方向的,但受限于对音频特征的理解,做研究时总感觉缺乏“底料”,所以当做是学习练手做了这个小东西。
虽然是学习练手的小项目,但也信心满满,因为核心算法大部分都是 C 实现和 Python 包装的,想着怎么着也比纯 Python 实现的库快些,然后和其它相关 Python 库也做了简单的性能比对,结果确实是比较快,但没想到后面翻车了!!!
两周前收到用户提的一个 issue “Speed is slow, am I miss something? ”,定眼一看大惊失色,结果上我的库是最慢的,赶紧自己电脑上跑下,没想到比用户给出的结果还要难看,这车翻得有些大了!!! 这是相关 issue 地址: https://github.com/libAudioFlux/audioFlux/issues/18#issuecomment-1498371872
后面仔细分析发现,我当时测试数据样本尺寸太小,样本尺寸大时就慢了,性能主要卡在矩阵相乘上,后续优化后相比其它库都快不少,但相比 PyTorch 官方的 torchaudio 库还是存在一定的性能差距。
想着认命吧,谁叫人家是 torchaudio 呢,最后经过一周的熬战,尝试 OpenBLAS ,Eigen ,MKL ,FFTW ,SIMD ,并行计算等等各种技术优化点后,详细测试了不同样本尺寸大小数据,在不同 CPU 和不同系统平台的性能对比如下图:
图依次为 Linux/AMD ,macOS/Intel 下的评测结果。
这是详细的测评报告: https://github.com/libAudioFlux/audioFlux/tree/master/benchmark
综合来看,
经过各种艰辛的优化,比之前版本还是其它相关库都快不少,性能优化上我该做的、能做的都做了,但相比 torchaudio 还是不能完胜,希望大家点赞关注赐予我力量,期待后续性能上完胜 torchaudio !!!
1
chatWell1 2023-04-25 10:16:36 +08:00
不错哦,图很漂亮
|
2
dark009 2023-04-25 10:25:30 +08:00
大佬,怎么没有看到关于 essentia 的对比图呢?
|
3
xbcslzy 2023-04-25 10:39:16 +08:00 via iPhone
强 已 star
|
5
CMLab 2023-04-25 10:42:15 +08:00
project:audioflux-0.1.5
runtimes:1 time_steps:1,5,10,100,500,1000,2000,3000 feature_name:mel radix2_exp:11 slide_length:512 ---------- audioflux mel 1 0.23315906 audioflux mel 5 0.18369913 audioflux mel 10 0.19328594 audioflux mel 100 0.59645653 audioflux mel 500 1.74749613 audioflux mel 1000 3.57704639 audioflux mel 2000 6.67310715 audioflux mel 3000 9.54481602 ========== project:torchaudio-0.13.1/torch-1.13.1 runtimes:1 time_steps:1,5,10,100,500,1000,2000,3000 feature_name:mel radix2_exp:11 slide_length:512 ---------- torchaudio mel 1 0.13180018 torchaudio mel 5 0.14314651 torchaudio mel 10 0.17399549 torchaudio mel 100 1.42241955 torchaudio mel 500 9.03672457 torchaudio mel 1000 16.18315935 torchaudio mel 2000 17.63835192 torchaudio mel 3000 28.65790367 ========== project:librosa-0.8.0 runtimes:1 time_steps:1,5,10,100,500,1000,2000,3000 feature_name:mel radix2_exp:11 slide_length:512 ---------- librosa mel 1 2.81565189 librosa mel 5 2.44408846 librosa mel 10 2.65174866 librosa mel 100 4.51287270 librosa mel 500 12.60835171 librosa mel 1000 23.84555340 librosa mel 2000 36.47141218 librosa mel 3000 49.74691391 ========== |
7
ppxiale 2023-04-25 10:49:50 +08:00
大佬牛啊,继续加油,看到了未来音频方面国产之光,小项目也有大潜力
|
10
829939 OP @CMLab 正常,验证了我这个结论
在 macOS 系统上,对于大尺寸样本数据,audioflux 比 torchaudio 快,intel 比 m1 明显; 对于小尺寸样本数据,torchaudio 比 audioflux 更快。 |
12
stonepy 2023-04-25 11:42:03 +08:00
最近正好在批量提取 mel 特征数据,用这个效率直接翻倍哇
|
13
fanjk 2023-04-25 11:46:05 +08:00
恭喜,竞争力进一步加强,期待后续更新迭代能有更好的表现
|
14
thorneLiu 2023-04-25 12:16:51 +08:00 via Android
使用一些 SIMD 的指令会不会有提升空间
|
15
CrazyRundong 2023-04-25 12:45:53 +08:00 via iPhone
已 start ,待会儿仔细学习下怎么优化的。另外,项目的 logo 做的非常漂亮啊!
|
16
collinmehle 2023-04-25 15:51:36 +08:00
加油,干爆 torchaudio
|
17
loopp 2023-04-25 16:13:06 +08:00
已 star
|
18
amrice 2023-04-25 16:14:02 +08:00
卧槽,1.5K 的 star ,大佬大佬
|
19
james0517 2023-04-25 16:15:37 +08:00
性能优化是一个不断迭代的过程,现在看来大尺寸样本数据的对比情况已经相当不错了。
虽然和 torchaudio 相比还有一些差距,但是它已经比大多数相关库都要快了。 加油继续优化 |
20
Aloento 2023-04-25 16:22:50 +08:00
大佬加油,已经在用了
|
21
ManxCat 2023-04-25 16:23:39 +08:00
真正的大佬 不明觉厉
|
23
CMLab 2023-04-25 16:54:56 +08:00
|
25
chesha1 2023-04-25 22:34:25 +08:00
好厉害的大佬,开源的小项目也能有上千的 star
不过 pytorch 底层不也是 C/C++写的吗,所以想要性能比他们好还是有点困难? |
26
chatWell1 2023-04-25 23:47:03 +08:00
确实有困难,听闻 pytorch 用的 Intel 定制版的 MKL 线代库,matlab 貌似也是,这个比 OpenBLAS 要快
|
28
olderwang 2023-04-26 10:10:24 +08:00
已 star ,收藏待用
|
30
xbcslzy 2023-04-26 10:41:24 +08:00
试了一下, 确实提升很大
|
31
SteveDoyle2 2023-04-26 10:46:05 +08:00
不明觉厉,只能 star 一下了。
|