librosa.load() takes too long to load(sample) mp3 files

白昼怎懂夜的黑 提交于 2020-06-16 02:16:27

问题


I am trying to sample (convert analog to digital) mp3 files via the following Python code using the librosa library, but it takes too much time (around 4 seconds for one file). I suspect this is because librosa doesn't support mp3 and hence uses the slower audioread to sample mp3

Code:

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

I also get this warning:

UserWarning: "PySoundFile failed. Trying audioread instead."

Obviously, this is too much time for any practical application. I want to know if there are better alternatives to this?

For comparison, it only took around 1.2 seconds total time to sample 10 same-sized wav conversions


回答1:


So the warning kind of hints it. The Librosa developers addressed a similar question in this GitHub question:

This warning will always occur when loading mp3 because libsndfile does not (yet/currently) support the mp3 format. Librosa tries to use libsndfile first, and if that fails, it will fall back on the audioread package, which is a bit slower and more brittle, but supports more formats.

This is confirmed in the Librosa-code: try ... except RuntimeError ...

So what you can do in this case is either implement your own load() that directly uses audioread to avoid the time wasted in the first block of librosa.load(), or you can use a different library such as pydub. Alternatively, you can use ffmpeg to convert your mp3 to wave before loading them.



来源:https://stackoverflow.com/questions/59854527/librosa-load-takes-too-long-to-loadsample-mp3-files

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!