簡潔な答え
stft 計算で使用されるパラメーターを変更することで、長さの変更を指定できます。次のコードは、出力のサイズを 2 倍にします (20 x 113658)。
data = librosa.feature.mfcc(y=y, sr=sr, n_fft=1012, hop_length=256, n_mfcc=20)
長い答え
Librosa のlibrosa.feature.mfcc()
関数は実際には、librosa のlibrosa.feature.melspectrogram()
関数 ( librosa.core.stft
andlibrosa.filters.mel
関数のラッパー) のラッパーとして機能します。
オーディオ信号のセグメンテーションに関連するすべてのパラメーター (フレーム値とオーバーラップ値) は、メル スケール パワー スペクトログラム関数で使用されるように指定されています (ネストされたコア関数に指定された他の調整可能なパラメーターと共に)。これらのパラメーターは、関数でキーワード引数として指定しますlibrosa.feature.mfcc()
。
すべての追加**kwargs
パラメータはlibrosa.feature.melspectrogram()
、その後に渡されますlibrosa.filters.mel()
デフォルトでは、メル スケールのパワー スペクトログラム ウィンドウとホップ長は次のとおりです。
n_fft=2048
hop_length=512
したがって、既定のサンプル レート ( sr=22050
) を使用すると仮定すると、mfcc 関数の出力は次のようになります。
出力長 = (秒) * (サンプルレート) / (hop_length)
(1319) * (22050) / (512) = 56804サンプル
調整できるパラメータは次のとおりです。
Melspectrogram Parameters
-------------------------
y : np.ndarray [shape=(n,)] or None
audio time-series
sr : number > 0 [scalar]
sampling rate of `y`
S : np.ndarray [shape=(d, t)]
power spectrogram
n_fft : int > 0 [scalar]
length of the FFT window
hop_length : int > 0 [scalar]
number of samples between successive frames.
See `librosa.core.stft`
kwargs : additional keyword arguments
Mel filter bank parameters.
See `librosa.filters.mel` for details.
メル スケール パワー スペクトログラムの定義に使用されるメル フィルターバンクの特性をさらに指定する場合は、次のように調整できます。
Mel Frequency Parameters
------------------------
sr : number > 0 [scalar]
sampling rate of the incoming signal
n_fft : int > 0 [scalar]
number of FFT components
n_mels : int > 0 [scalar]
number of Mel bands to generate
fmin : float >= 0 [scalar]
lowest frequency (in Hz)
fmax : float >= 0 [scalar]
highest frequency (in Hz).
If `None`, use `fmax = sr / 2.0`
htk : bool [scalar]
use HTK formula instead of Slaney
Librosa のドキュメント:
librosa.feature.melspectrogram
librosa.filters.mel
librosa.core.stft