次のPythonコードを使用してlibrosa
ライブラリを使用してmp3ファイルをサンプリング(アナログからデジタルに変換)しようとしていますが、時間がかかりすぎます(1つのファイルで約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."
明らかに、これは実際のアプリケーションには時間がかかりすぎます。これのより良い代替策があるかどうか知りたいですか?
比較すると、同じサイズのwav
コンバージョンを10回サンプリングするのにかかった時間は、合計で約1.2
秒でした
したがって、警告はそれをほのめかします。 Librosa開発者は このGitHubの質問 で同様の質問に対処しました:
Libsndfileは(まだ/現在のところ)mp3形式をサポートしていないため、mp3のロード時にこの警告が常に発生します。 Librosaは最初にlibsndfileを使用しようとしますが、それが失敗した場合、それはaudioreadパッケージにフォールバックします。これは少し遅くて壊れやすいですが、より多くのフォーマットをサポートします。
これは Librosa-code で確認されています:_try ... except RuntimeError ...
_
したがって、この場合にできることは、load()
の最初のブロックで無駄になる時間を回避するためにaudioread
を直接使用する独自のlibrosa.load()
を実装するか、または pydub などの別のライブラリを使用します。あるいは、それらをロードする前に ffmpeg to convert your mp3 to wave を使用できます。