我正在尝试使用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
秒的时间
答案 0 :(得分:2)
因此,警告提示了它。 Librosa开发人员在this GitHub question中提出了类似的问题:
由于libsndfile加载mp3时,始终会出现此警告 目前尚不支持mp3格式。天秤座试图使用 首先是libsndfile,如果失败,它将退回到 audioread程序包,它速度较慢且较脆,但是 支持更多格式。
这在Librosa-code中得到了确认:try ... except RuntimeError ...
因此,在这种情况下,您可以执行直接使用load()
的{{1}}来避免在audioread
的第一块中浪费时间,或者您可以使用pydub之类的其他库。另外,您可以在加载它们之前使用ffmpeg至convert your mp3 to wave。