Pythonでlibrosaパッケージを用いてmfccフィーチャーパラメータ抽出を行う
Pythonには既存のパッケージがたくさんありますが、このブログではlibrosaパッケージのmfccフィーチャー関数の使用について紹介します.
1、パソコン環境
コンピュータ環境:Windows 10教育版
Python:python3.6
2、知りたいこと
librosaパッケージの紹介とインストールはブロガーの別のブログを参照してください.https://blog.csdn.net/qq_39516859/article/details/80333431メル逆スペクトル係数(mfcc)の紹介はブロガーの別のブログを参照してください.https://blog.csdn.net/qq_39516859/article/details/80505981
3、librosa.feature.mfccの紹介
y:np.ndarray[shape=(n,)]またはNoneオーディオ時系列
Sr:number>0[scalar]yのサンプリングレート
S:np.ndarray[shape=(d,t)]or None対数機能メルスペクトル
n_mfcc:int>0[scalar]戻るMFCC数
dct_type:None,or{1,2,3}離散コサイン変換(DCT)タイプ.デフォルトでは、DCTタイプ2が使用されます.
norm:None or‘ortho’仕様.dct_の場合typeが2または3の場合、norm='ortho'を設定して直交DCTベースを使用します.標準化ではdct_はサポートされていませんtype = 1.
kwargs:追加のキーパラメータmelspectrogram、時系列で操作を入力すると
戻り:M:np.ndarray[shape=(n_mfcc,t)]MFCCシーケンス
4、librosa.feature.mfccの使用
librosa.feature.mfcc関数紹介GitHub:http://librosa.github.io/librosa/generated/librosa.feature.mfcc.html#librosa.feature.mfcc ソース:http://librosa.github.io/librosa/_modules/librosa/feature/spectral.html#mfcc
1、パソコン環境
コンピュータ環境:Windows 10教育版
Python:python3.6
2、知りたいこと
librosaパッケージの紹介とインストールはブロガーの別のブログを参照してください.https://blog.csdn.net/qq_39516859/article/details/80333431メル逆スペクトル係数(mfcc)の紹介はブロガーの別のブログを参照してください.https://blog.csdn.net/qq_39516859/article/details/80505981
3、librosa.feature.mfccの紹介
librosa.feature.mfcc(y=None, sr=22050, S=None, n_mfcc=20, dct_type=2, norm='ortho', **kwargs)
パラメータ:y:np.ndarray[shape=(n,)]またはNoneオーディオ時系列
Sr:number>0[scalar]yのサンプリングレート
S:np.ndarray[shape=(d,t)]or None対数機能メルスペクトル
n_mfcc:int>0[scalar]戻るMFCC数
dct_type:None,or{1,2,3}離散コサイン変換(DCT)タイプ.デフォルトでは、DCTタイプ2が使用されます.
norm:None or‘ortho’仕様.dct_の場合typeが2または3の場合、norm='ortho'を設定して直交DCTベースを使用します.標準化ではdct_はサポートされていませんtype = 1.
kwargs:追加のキーパラメータmelspectrogram、時系列で操作を入力すると
戻り:M:np.ndarray[shape=(n_mfcc,t)]MFCCシーケンス
4、librosa.feature.mfccの使用
import librosa
y, sr = librosa.load('i1.wav',sr=None)
mfccs = librosa.feature.mfcc(y=y, sr=sr,n_mfcc=24)
librosa.feature.mfccという関数の内部は次のようになっています.# -- Mel spectrogram and MFCCs -- #
def mfcc(y=None, sr=22050, S=None, n_mfcc=20, **kwargs):
if S is None:
S = logamplitude(melspectrogram(y=y, sr=sr, **kwargs))
return np.dot(filters.dct(n_mfcc, S.shape[0]), S)
元の時間領域信号(すなわちSパラメータNone)のみが与えられると、librosaはmelspectrogram()関数により時間領域信号yのメルスペクトルを先に抽出し、Sに格納し、filters.dct()関数によりdct変換してyのメル逆スペクトル係数を得ることがわかる.librosa.feature.mfcc関数紹介GitHub:http://librosa.github.io/librosa/generated/librosa.feature.mfcc.html#librosa.feature.mfcc ソース:http://librosa.github.io/librosa/_modules/librosa/feature/spectral.html#mfcc