Project Icon

python_audio_loading_benchmark

Python音频库加载性能基准测试

该项目评估了多个Python音频库的加载性能,包括scipy、soundfile和pydub等。测试比较了各库将不同格式音频文件加载为numpy、PyTorch和TensorFlow张量的速度,以及音频元数据获取效率。这项基准测试为机器学习模型开发者提供了宝贵参考,特别是在处理原始音频数据时。项目展示了详细的测试结果,并提供了运行基准测试的指导。

Python音频加载基准测试

本仓库旨在评估从Python接口调用的各种音频I/O包的加载性能。

这对于当今经常处理原始(时域)音频并即时组装批次的机器学习模型来说很重要。因此,尽可能快速地加载音频变得至关重要。同时,理想情况下,一个库应该支持各种未压缩和压缩的音频格式,并且能够只加载音频的部分内容(定位)。后者对于那些无法轻松处理可变长度样本的模型(如卷积网络)尤为重要。

测试的库

版本简称/代码输出类型支持的编解码器摘录/定位
scipy.io.wavfile1.9.3scipyNumpyPCM(仅16位)
scipy.io.wavfile memmap1.9.3scipy_mmapNumpyPCM(仅16位)
soundfile (libsndfile)0.12.1soundfileNumpyPCM, Ogg, Flac, MP3
pydub0.25.1pydubPython数组PCM, MP3, OGG或其他FFMPEG/libav支持的编解码器
aubio0.4.9aubioNumpy数组PCM, MP3, OGG或其他avconv支持的编码
audioread (FFMPEG)2.1.9ar_ffmpegNumpy数组FFMPEG支持的所有格式
librosa0.10.0librosaNumpy数组soundfile支持的所有格式
tensorflow tf.io.audio.decode_wav2.11.0tf_decode_wavTensorflow张量PCM(仅16位)
tensorflow-io from_audio0.30.0tfio_fromaudioTensorflow张量PCM, Ogg, Flac
torchaudio (sox_io)0.13.1torchaudioPyTorch张量Sox支持的所有编解码器
torchaudio (soundfile)0.13.1torchaudioPyTorch张量Soundfile支持的所有编解码器
soxbindings0.9.0soxbindingsNumpy张量Soundfile支持的所有编解码器
stempeg0.2.3stempegNumpy张量FFMPEG支持的所有编解码器

未包含的库

结果

基准测试加载了不同长度(1到151秒之间)的多个(单声道)音频文件,并测量了将音频转换为张量所需的时间。根据目标张量类型(numpypytorchtensorflow),比较了不同数量的库。例如,当输出类型为numpy且目标张量类型为tensorflow时,加载时间包括了转换为目标张量的操作。此外,数据加载器的多进程功能被禁用。因此,特别是对于深度学习应用,加载速度并不一定代表批次加载速度。

以下显示的所有结果都以秒**为单位表示加载时间。

加载到Numpy张量

加载到PyTorch张量

加载到Tensorflow张量

获取元数据信息

除了加载文件外,还可能需要提取元数据。为了对此进行基准测试,我们要求每个文件提供_采样率_、声道数、_样本数_和_持续时间_的元数据。这些都是连续调用的,这意味着不允许一次性打开文件并提取所有元数据。请注意,我们已经从元数据的基准测试结果中排除了pydub,因为它明显比其他工具慢得多。

运行基准测试

生成样本数据

为了测试加载速度,我们生成不同时长的随机(噪声)音频数据,并将其编码为PCM 16位WAVMP3 CBRMP4格式。 数据是通过使用shell脚本生成的。要在AUDIO文件夹中生成数据,请运行

generate_audio.sh

使用Docker设置

使用以下命令构建Docker容器

docker build -t audio_benchmark .

它会安装所有音频库所需的所有包依赖。 之后,将数据目录挂载到Docker容器中,并在容器内运行run.sh,例如:

docker run -v /home/user/repos/python_audio_loading_benchmark/:/app \
    -it audio_benchmark:latest /bin/bash run.sh

在虚拟环境中设置

创建虚拟环境,安装必要的依赖项并运行基准测试:

virtualenv --python=/usr/bin/python3 --no-site-packages _env
source _env/bin/activate
pip install -r requirements.txt
pip install git+https://github.com/pytorch/audio.git

进行基准测试

运行基准测试:

bash run.sh

并使用以下命令绘制结果:

python plot.py

这将在results文件夹中生成PNG文件。 数据是通过使用shell脚本生成的。要在AUDIO文件夹中生成数据,请运行generate_audio.sh

作者

@faroit, @hagenw

贡献

我们鼓励感兴趣的用户通过问题区和拉取请求为这个仓库做出贡献。特别感兴趣的是有关新工具和现有包新版本的通知。由于基准测试具有主观性,我(@faroit)将在我们的服务器上重新运行基准测试。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号