Python の楽曲解析モジュール LibROSA が 2020年7月22日に ver. 0.8.0 に更新されていました。
Changelog — librosa 0.10.0 documentation
インストール方法
python -m pip install librosa=0.8.0
気になる変更点として、基本周波数推定アルゴリズムとして有名なYINと、確率的YINアルゴリズムが追加されたようです。
これまでのlibrosa
には基本周波数推定用モジュールがなかったので、非常にありがたいです。。
librosa.yin — librosa 0.10.0 documentation
librosa.pyin — librosa 0.10.0 documentation
以下、サンプルコードを書いてみました。
サンプルコード
import librosa import matplotlib.pyplot as plt filepath = "audio/vcl_speech_database.wav" # your audiofile sr = 16000 y, sr = librosa.load(filepath, sr=sr, mono=True) fmin, fmax = 180, 520 fo_yin = librosa.yin(y, fmin, fmax) fo_pyin, voiced_flag, voiced_prob = librosa.pyin(y, fmin, fmax) plt.subplot(2,1,1) plt.plot(fo_yin, label="YIN", alpha=0.75) plt.plot(fo_pyin, label="pYIN", alpha=0.75) plt.legend(loc='upper right') plt.title("Estimated Fo") plt.subplot(2,1,2) plt.plot(voiced_flag, label="voiced_flag") plt.plot(voiced_prob, label="voiced_prob") plt.title("Voiced flag and prob. by pYIN") plt.legend(loc='upper right') plt.tight_layout() plt.show()