如何在 Python/Linux 中更快地加载和重新采样 (MP3) 音频文件?

tod*_*day 1 python audio mp3 audio-processing librosa

目前,我正在尝试在 Python 中加载 280,000 个 MP3 音频文件,其中文件的平均持续时间约为 5 秒。我将Librosa用于此目的以及后续阶段的进一步处理(例如计算频谱图)。

但是,我意识到加载文件非常慢,因为加载、解压缩和重新采样每个文件平均需要 370 毫秒。如果我关闭重新采样(即librosa.load(..., sr=None)),大约需要 200 毫秒,但考虑到我拥有的大量文件,这仍然不是很好。不出所料,无需重新采样即可加载 wav 文件非常快(< 1 ms);但是如果我们执行重新采样,大约需要 160 毫秒。

现在我想知道是否有任何更快的方法来做到这一点,无论是直接在 Python 中还是在 Linux 中使用外部工具,条件是我以后可以将结果加载回 Python。

顺便说一下,我尝试使用multiprocessing大小为 4 的池并实现了 2-3 倍的加速,但我正在寻找更多(最好 > 10 倍)。

注:原始文件为人声,采样率为48KHz,码率为64Kbps;我想将它们下采样到 16KHz。

hen*_*rik 7

你可以使用pysox

它是一个围绕SoX的薄 Python 包装器,“声音处理程序的瑞士军刀”。

注意:为了更快的处理(避免 exec 调用),您还可以安装和使用soxbindings。您需要做的就是更换

import sox
Run Code Online (Sandbox Code Playgroud)

import soxbindings as sox
Run Code Online (Sandbox Code Playgroud)