前段时间开源了一个关于音频特征提取和剖析的小项目,自己是 AI 音频领域方向的,但受限于对音频特征的了解,做研究时总感觉缺少“底料”,所以当做是学习练手做了这个小东西。

虽然是学习练手的小项目,但也信心满满,由于核心算法大部分都是 C 完成和 Python 包装的,想着怎么着也比纯 Python 完成的库快些,然后和其它相关 Python 库也做了简略的性能比对,成果确实是比较快,但没想到后边翻车了!!!

两周前收到用户提的一个 issue “Speed is slow, am I miss something? ”,定眼一看心惊胆战,成果上我的库是最慢的,赶紧自己电脑上跑下,没想到比用户给出的成果还要难看,这车翻得有些大了!!! 这是相关 issue 地址:github.com/libAudioFlu…

后边仔细剖析发现,我当时测试数据样本尺度太小,样本尺度大时就慢了,性能首要卡在矩阵相乘上,后续优化后相比其它库都快不少,但相比 PyTorch 官方的 torchaudio 库仍是存在一定的性能差距。

想着认命吧,谁叫人家是 torchaudio 呢,最终通过一周的熬战,尝试 OpenBLAS ,Eigen ,MKL ,FFTW ,SIMD ,并行计算等等各种技术优化点后,详细测试了不同样本尺度大小数据,在不同 CPU 和不同体系渠道的性能对比如下图:

音频处理库性能大比拼:哪个库在计算mel频谱方面更胜一筹?
音频处理库性能大比拼:哪个库在计算mel频谱方面更胜一筹?

图依次为 Linux/AMD ,macOS/Intel 下的评测成果。
这是详细的测评报告:github.com/libAudioFlu…

归纳来看,

  • 在 linux/amd 处理器上,audioflux 比 torchaudio 稍快,但在 linux/intel 上稍慢。
  • 在 macOS 体系上,对于大尺度样本数据,audioflux 比 torchaudio 快,intel 比 m1 显着; 对于小尺度样本数据,torchaudio 比 audioflux 更快。

通过各种艰苦的优化,比之前版别仍是其它相关库都快不少,性能优化上我该做的、能做的都做了,但相比 torchaudio 仍是不能完胜,希望大家点赞重视赐予我力量,期待后续性能上完胜 torchaudio !!!

感兴趣的请给个 Star

项目地址:github.com/libAudioFlu…