【librosa】音頻特征提取


參考

log-spectrogram

計算log-scaled spectrogram,librosa庫中並沒有現成的函數,需要自行計算。

計算步驟:

  • load -> stft -> abs -> power -> log
y = librosa.load('test.wav', sr = sr)
ft = librosa.stft(y, n_fft=512, hop_length=256)
log_spec = librosa.power_to_db(np.abs(ft)**2)

melspectrogram

計算mel-scaled spectrogram。

源碼中:melspectrogram = _spectrogram + Mel filters [np.dot]
並且:_spectrogram = stft + abs + power(default 1)
melspectrogram 源碼中,default power = 2

源碼參考,使用方式如下:
librosa.feature.melspectrogram(y=None, sr=22050, S=None, n_fft=2048, hop_length=512, win_length=None, window='hann', center=True, pad_mode='reflect', power=2.0, **kwargs)
輸出:【S】【Mel spectrogram】np.ndarray [shape=(n_mels, t)]

mfcc

計算Mel-frequency cepstral coefficients (MFCCs)。

基本步驟:

  • 預處理(預加重-分幀加窗)
  • 逐幀:fft -> 功率譜 -> mel濾波器組-> 對數功率 -> DCT -> mfccs

源碼中:mfcc = melspectrogram + power_to_db + dct
power_to_db:Convert a power spectrogram (amplitude squared) to decibel (dB) units,10 * log10(S / ref)

源碼參考,使用方式如下:
librosa.feature.mfcc(y=None, sr=22050, S=None, n_mfcc=20, dct_type=2, norm='ortho', lifter=0, **kwargs)
輸出:【M】【MFCC sequence】np.ndarray [shape=(n_mfcc, t)]

chroma_stft

Compute a chromagram from a waveform or power spectrogram.

源碼中:chroma_stft = _spectrogram + estimate_tuning + chroma(np.dot) + normalize
bins_per_octave = n_chroma

源碼參考,使用方式如下:
librosa.feature.chroma_stft(y=None, sr=22050, S=None, norm=inf, n_fft=2048, hop_length=512, win_length=None, window='hann', center=True, pad_mode='reflect', tuning=None, n_chroma=12, **kwargs)
輸出:【chromagram】【Normalized energy for each chroma bin at each frame.】np.ndarray [shape=(n_chroma, t)]

chroma_cqt

計算Constant-Q變換的色譜圖。

源碼中:chroma_cqt = cqt + abs + cqt_to_chroma(dot) + normalize

源碼參考,使用方式如下:
librosa.feature.chroma_cqt(y=None, sr=22050, C=None, hop_length=512, fmin=None, norm=inf, threshold=0.0, tuning=None, n_chroma=12, n_octaves=7, window=None, bins_per_octave=36, cqt_mode='full')
輸出:【chromagram】np.ndarray [shape=(n_chroma, t)]

delta

特征的動態信息。The derivatives of features provides the information of dynamics of features over the time(相當於在時間軸上的斜率).
Compute delta features: local estimate of the derivative of the input data along the selected axis. Delta features are computed Savitsky-Golay filtering.
其中,SD濾波器是一種基於卷積計算的低通平滑濾波器(在時域內基於多項式,通過移動窗口利用最小二乘法進行最佳擬合,即對一定長度窗口內的數據點進行k階多項式擬合),是移動平滑算法的改進。SD filter可以提高光譜的平滑性,並降低噪音的干擾。
python代碼使用以及源碼參考:scipy.signal.savgol_filter
更多可參考:【Savitzky-Golay平滑去噪】和【Python 生成曲線進行快速平滑處理】。

delta在librosa中的源碼參考: librosa.feature.delta,使用方式如下:
librosa.feature.delta(data, width=9, order=1, axis=-1, mode='interp', **kwargs)
The default axis along which to compute deltas is -1 (columns).
輸出delta matrix of data at specified order:【delta_data】np.ndarray [shape=(d, t)]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM