librosa.load()花费的时间太长,无法加载(采样)mp3文件

时间:2020-01-22 07:19:13

标签: python-3.x audio mp3 sampling librosa

我正在尝试使用librosa库通过以下Python代码对mp3文件进行采样(将模拟转换为数字),但是这会花费太多时间(一个文件大约需要4秒)。我怀疑这是因为librosa不支持mp3,因此使用较慢的audioread来采样mp3

代码:

import time
import librosa

s = time.time()
for i in mp3_list[:10]: # list of mp3 file paths, doing for 10 files
    y, sr = librosa.load(i)

print('time taken =', time.time() - s)

time taken = 36.55561399459839

我也收到此警告:

UserWarning: "PySoundFile failed. Trying audioread instead."

显然,对于任何实际应用而言,这都是太多时间。我想知道是否还有更好的替代方法?

为进行比较,抽样10个相同大小的1.2转换仅花费了wav秒的时间

1 个答案:

答案 0 :(得分:2)

因此,警告提示了它。 Librosa开发人员在this GitHub question中提出了类似的问题:

由于libsndfile加载mp3时,始终会出现此警告 目前尚不支持mp3格式。天秤座试图使用 首先是libsndfile,如果失败,它将退回到 audioread程序包,它速度较慢且较脆,但是 支持更多格式。

这在Librosa-code中得到了确认:try ... except RuntimeError ...

因此,在这种情况下,您可以执行直接使用load()的{​​{1}}来避免在audioread的第一块中浪费时间,或者您可以使用pydub之类的其他库。另外,您可以在加载它们之前使用ffmpegconvert your mp3 to wave