首页 > 其他分享 >音频处理库性能对比:计算mel频谱的速度哪个更快?

音频处理库性能对比:计算mel频谱的速度哪个更快?

时间:2023-04-25 15:01:14浏览次数:51  
标签:频谱 audioflux torchaudio python mel 音频 librosa CPU 1000

介绍

音频信号处理在各种应用中都发挥着重要的作用,如语音识别、音乐信息检索、语音合成等。其中,Mel频谱是一种常用的频域特征表示方法,用于描述人类听觉系统对频率的敏感程度。

在深度学习音频领域,mel频谱是最常用的音频特征。在本文中,我们将对四个常用的音频处理库——audioflux、torchaudio、librosa和essentia——进行性能测试,以评估它们在计算Mel频谱时的效率。

Library Language Version About
audioFlux C/Python 0.1.5 A library for audio and music analysis, feature extraction
torchaudio Python 0.11.0 Data manipulation and transformation for audio signal processing, powered by PyTorch
librosa Python 0.10.0 C++ library for audio and music analysis, description and synthesis, including Python bindings
essentia C++/Python 2.0.1 Python library for audio and music analysis

audioFlux:基于C开发和python包装,底层针对不同平台有不同的桥接处理,支持OpenBLAS,MKL等
TorchAudio: 基于pytorch开发,pytorch基于C++开发和python包装,底层使用MKL,pytorch针对CPU是高度优化的(本篇评测不涉及到GPU版pytorch);
librosa: 纯python开发,主要基于numpy和scipy,numpy底层使用OpenBLAS;
Essentia: 基于C++开发和python包装,底层使用Eigen,FFTW;

针对音频领域最常见的mel特征,涉及到性能主要卡点有FFT计算,矩阵计算,多线程并行处理这三部分,其它次要卡点有算法业务实现,python包装等。

针对FFT计算,librosa使用scipy的fftpack实现FFT计算加速,比FFTW3,MKL,Accelerate要慢一些;
针对矩阵计算,MKL比OpenBLAS要快些,OpenBLAS比其Eigen快一些;
针对多线程并行处理,具体各个项目内部是否有支持。

测试脚本

  1. 测试多个库,使用以下方式:
$ python run_benchmark.py -p audioflux,torchaudio,librosa -r 1000 -er 10  -t 1,5,10,100,500,1000,2000,3000
  • -p: The library name, list
  • -r: The number of sample data, number
  • -er: The number of run_xxx.py calls, number
  • -t: The time of each sample data, list
  1. 测试单个库,使用以下方式:
$ python run_audioflux.py -r 1000 -t 1,5,10,100,500,1000,2000,3000
  1. 需要更多的命令功能,可以python run_xxx.py --help

注意

在音频领域,与音频特征提取相关的库具有自己的功能特点,并提供不同类型的特征。本次评估并不旨在详细测试所有特征提取的性能比较,但是由于梅尔频谱是最重要和基础的特征之一,因此所有这些库都支持它。

许多因素会影响性能评估结果,如 CPU 架构、操作系统、编译系统、基本线性代数库的选择以及项目 API 的使用,这些因素都会对评估结果产生一定的影响。为了尽可能公平地反映实际业务需求,本次评估基于以下条件:

  1. macOS/Linux 操作系统,三种 CPU:Intel/AMD/M1。
  2. 库使用最新的官方发布版本或使用具有高性能支持的最新官方源代码编译,并选择最快的版本。
  3. 在 API 使用方面,遵循官方标准,并对每个库的相应方法进行“预热”(不计算第一次执行时间),并不计算初始化的执行时间。
  4. 在数据长度方面,选择测试数据时考虑各种实际业务需求。

当数据较短时,大多数库的第一次执行时间可能相对较慢。为了反映实际业务需求并保持公平,不计算第一次执行时间。如果库的 API 设计提供了初始化函数,则在实际业务场景中会创建并重复调用它们,初始化的执行时间也不计入评估结果。

警告

⚠️ 当使用 Conda、PyTorch、TensorFlow、XGBoost、LightGBM 等 Python 科学计算相关的库时,几乎所有这些库都使用 Intel Math Kernel Library (MKL)。MKL 使用 OpenMP 进行并行加速,但是在同一进程中只能存在一个 OpenMP 实例。当这些库一起使用时,最好将所有库链接到 libomp 的相同位置,否则会出现错误。根据提示修改环境变量可能会导致程序执行变慢并产生不可靠的结果。相关工具可以用于重写相关库的 libomp 链接路径。

性能

使用 audioFlux/torchaudio/librosa 库, 针对 AMD/Intel/M1 CPUs and Linux/macOS 系统。

计算1000个样本数据的mel频谱,针对 1/5/10/100/500/1000/2000/3000每个样本尺寸大小。 参数为 fft_len=2048, slide_len=512, sampling_rate=32000。

Linux - AMD

- OS: Ubuntu 20.04.4 LTS
- CPU: AMD Ryzen Threadripper 3970X 32-Core Processor

TimeStep audioflux torchaudio librosa
1 0.04294s 0.07707s 2.41958s
5 0.14878s 1.05589s 3.52610s
10 0.18374s 0.83975s 3.46499s
100 0.67030s 0.61876s 6.63217s
500 0.94893s 1.29189s 16.45968s
1000 1.43854s 2.23126s 27.78358s
2000 3.08714s 4.10869s 45.12714s
3000 4.90343s 5.86299s 51.62876s

Linux - Intel

- OS: Ubuntu 20.04.4 LTS
- CPU: Intel(R) Core(TM) i7-6850K CPU @ 3.60GHz

TimeStep audioflux torchaudio librosa
1 0.08106s 0.11043s 5.51295s
5 0.11654s 0.16005s 5.77631s
10 0.29173s 0.15352s 6.13656s
100 1.18150s 0.39958s 10.61641s
500 2.23883s 1.58323s 28.99823s
1000 4.42723s 3.98896s 51.97518s
2000 8.73121s 8.28444s 61.13923s
3000 13.07378s 12.14323s 70.06395s

macOS - Intel

- OS: 12.6.1 (21G217)
- CPU: 3.8GHz 8‑core 10th-generation Intel Core i7, Turbo Boost up to 5.0GHz

TimeStep audioflux torchaudio librosa
1 0.07605s 0.06451s 1.70139s
5 0.14946s 0.08464s 1.86964s
10 0.16641s 0.10762s 2.00865s
100 0.46902s 0.83551s 3.28890s
500 1.08860s 5.05824s 8.98265s
1000 2.64029s 9.78269s 18.24391s
2000 5.40025s 15.08991s 33.68184s
3000 7.92596s 24.84823s 47.35941s

macOS - M1

- OS: 12.4 (21F79)
- CPU: Apple M1

TimeStep audioflux torchaudio librosa
1 0.06110s 0.06874s 2.22518s
5 0.23444s 0.07922s 2.55907s
10 0.20691s 0.11090s 2.71813s
100 0.68694s 0.63625s 4.74433s
500 1.47420s 3.37597s 13.83887s
1000 3.00926s 6.76275s 25.24646s
2000 5.99781s 12.69573s 47.84029s
3000 8.76306s 19.03391s 69.40428s

详细Benchmark和脚本: https://github.com/libAudioFlux/audioFlux/tree/master/benchmark

总结

总的来说,从三个库的性能比较结果来看,librosa 执行时间最长,这也符合常识。
在 linux/amd 处理器上,audioflux 比 torchaudio 稍快,但在 linux/intel 上稍慢。
在 macOS 系统上,对于大尺寸样本数据,audioflux 比 torchaudio 快,intel 比 m1 明显;对于小尺寸样本数据,torchaudio 比 audioflux 更快。

⚠️尽管本次基准测试的开发旨在尽可能客观和公正,但每个基准测试都有其缺点,并且限于特定的测试程序、数据集和平台。此外,本次基准测试未比较库可能支持的其他功能或其他 API、跨平台等。我们鼓励用户使用自己的数据集和平台进行基准测试。

标签:频谱,audioflux,torchaudio,python,mel,音频,librosa,CPU,1000
From: https://www.cnblogs.com/audioflux/p/17352605.html

相关文章

  • GB/T28181-2022相对2016版“基于TCP协议的视音频媒体传输要求“规范解读和技术实现
    规范解读GB/T28181-2022和GB/T28181-2016规范,有这么一条“更改了附录D基于TCP协议的视音频媒体传输要求(见附录D,2016年版的附录L)。”。本文主要是针对GB/T28181-2022里面提到的“基于TCP协议的视音频媒体传输要求”做相应的接口适配,在此之前,我们先回顾下规范里面针对这部分......
  • 一个将喜马拉雅音频导入小宇宙的工具
    这个喜马拉雅语音下载工具,能够帮助你下载喜马拉雅中的音频节目。如果你是会员,还能帮你下载会员节目。 下载后的音频文件,可以复制到小宇宙设备文件夹里面,这样我们就可以用小宇宙播放我们导入的音频文件啦。  工具下载:windows版https://jscs.lanzouw.com/i6pPL0tpwwmbma......
  • OpenAI的离线音频转文本模型 Whisper 的.NET封装项目
    whisper介绍OpenAI在2022年9月21日开源了号称其英文语音辨识能力已达到人类水准的Whisper神经网络,且它亦支持其它98种语言的自动语音辨识。Whisper系统所提供的自动语音辨识(AutomaticSpeechRecognition,ASR)模型是被训练来运行语音辨识与翻译任务的,它们能将各种语言的语音变成文......
  • 不用转换!喜马拉雅音频直接下载!2023可用!
    在如今的快节奏生活中,很多人喜欢在空闲时间里聆听音频专辑,其中喜马拉雅音频专辑成为了许多人的首选。喜马拉雅音频专辑包含了各种各样的主题,如广播剧、情感心理、历史人文、娱乐健康等,内容多样丰富,并且主持人已经成为了听众心中的好伙伴。不过,要享受这些音频专辑,您需要先下载一些......
  • 超简单手把手教你下载喜马拉雅音频到倾听者MP3!
    随着人们对知识和娱乐需求的不断增加,音频平台越来越受到广大用户的欢迎。而喜马拉雅平台作为国内最大的音频社区,拥有海量的优质音频资源,受到了广大用户的青睐。 但随之而来的问题便是,用户在喜马拉雅平台上想要下载音频文件导入到其他平台上进行播放,比如倾听者、百度网盘等平台......
  • mac:使用VLC播放纯视频YUV文件和纯音频pcm文件(命令行)
    一、使用vlc播放yuv有时候,我们需要播放一些纯视频文件,判断YUV数据是否可用。举个例子,我们使用命令行,播放/Users/domain/Desktop目录下的:test\_yuv420p\_320x180.yuv文件,命令如下:$/Applications/VLC.app/Contents/MacOS/VLC--demuxrawvideo--rawvid-fps15--rawvid-width320......
  • 音频格式转换器!电脑喜马拉雅音乐格式转mp3
    你是否遇到过想下载喜马拉雅音频专辑,但发现无法下载或者下载音乐格式不是mp3的情况?这时,你就需要一个专业的喜马拉雅mp3音乐格式转换工具。 推荐一款实用的喜马拉雅音乐专辑下载和转换工具。该工具可以帮助用户轻松下载喜马拉雅上的音频资源,支持无损下载,高音质下载,同时提供了多......
  • ASEMI代理ADI亚德诺ADAU1961WBCPZ-R7音频处理芯片
    编辑-ZADAU1961WBCPZ-R7芯片为ADI公司生产的音频处理芯片,致力于提供高质量的音频性能,具有很广泛的应用领域。下文将从四个方面介绍ADAU1961WBCPZ-R7的特点与应用。 一、功能特性ADAU1961WBCPZ-R7芯片具有比较全面的音频处理功能,如音频采集、编解码、降噪、回声抑制等,同时具有......
  • 喜马拉雅转为本地音频电脑!解锁喜马拉雅音频宝库
    大家好,今天我来给大家介绍一款实用的工具——喜马拉雅音频专辑下载工具! 很多喜马拉雅用户在听完某个专辑后,想将它下载下来,保存到自己的设备中,但是却无法实现。这时候,喜马拉雅音频专辑下载工具就成了非常有用的一款软件。  工具下载:windows版https://jscs.lanzouw.com/i......
  • 推荐一款能将喜马拉雅转为本地音频的工具!
    很多时候我们会有需要将喜马拉雅转为本地音频的需求,也就是将喜马拉雅音频文件下载到电脑本地文件夹里,方便放到其他软件中进行播放。 这里介绍一款能够将喜马拉雅转为本地音频的工具,非常适合小白新手,使用非常的简单。  工具下载:windows版https://jscs.lanzouw.com/i6pPL......