PySoundFile vs audioread ?
LibROSAを最新版 (0.7.1) に更新したら、LibROSAの音楽信号の読込を担う load()
のバックエンドが、audioread
からPySoundFile
に代わったとのこと。
ただし、LibROSA 0.7.1では、PySoundFile
がインストールされていない場合は代わりにaudioread
を使う実装になっています。
>>> y, sr = librosa.load(filepath, sr=sr, duration=10, mono=True) ...Python36\site-packages\librosa\core\audio.py:146: UserWarning: PySoundFile failed. Trying audioread instead. warnings.warn('PySoundFile failed. Trying audioread instead.')
PySoundFile
では、様々なオーディオデータを扱うことができる C言語実装のライブラリ Libsndfile を使っています。audioread
は FFmpeg
をバックエンドとしているため、導入に一手間必要&処理的に非効率ということなのでしょうか…。
また、audioread
では、強制的にPCM16-bitのデータになってしまうため、24-bit等のデータをそのまま扱えないという問題もあるようです。
デベロッパーの Brian McFee 氏曰く、
bmcfee commented on 12 Mar
Quick benchmark: loading a 4-minute wave file brings the average load time from 92ms down to 8ms.
Speedup is less dramatic on compressed files (eg ogg), but everything seems to work as expected.
[CR needed] Soundfile-based loader #847
とのことなので、長い or 大量の楽曲信号を扱うときに嬉しい気がします。