def __test_pseudo_cqt(pad_mode): D1 = librosa.pseudo_cqt(y, pad_mode='reflect') D2 = librosa.pseudo_cqt(y, pad_mode=pad_mode) assert D1.shape == D2.shape if pad_mode != 'reflect': assert not np.allclose(D1, D2) else: assert np.allclose(D1, D2)
def CQT_transform(data, sr): CQT = abs( pseudo_cqt(data, sr, fmin=A1, n_bins=60, bins_per_octave=12, sparsity=.95, window=('kaiser', 10))) N_CQT = normalize(CQT, norm='l1', axis=0) return N_CQT
hcqt = librosa.hybrid_cqt(y=y, sr=sr) hcqt = np.abs(hcqt) hcqt = hcqt.astype(np.float32) print(hcqt.shape, hcqt.dtype) d_hcqt = librosa.amplitude_to_db(hcqt, ref=np.max) librosa.display.specshow(d_hcqt, y_axis='log', x_axis='time', sr=sr, cmap='viridis') plt.colorbar(format='%+2.0f dB') plt.title('hybrid-cqt-spectrogram') plt.show() ### pseudo-cqt-spectrogram (伪常量Q变换) (*84, t) *n_bins pcqt = librosa.pseudo_cqt(y=y, sr=sr) pcqt = np.abs(pcqt) pcqt = pcqt.astype(np.float32) print(pcqt.shape, pcqt.dtype) d_pcqt = librosa.amplitude_to_db(pcqt, ref=np.max) librosa.display.specshow(d_pcqt, y_axis='log', x_axis='time', sr=sr, cmap='viridis') plt.colorbar(format='%+2.0f dB') plt.title('hybrid-cqt-spectrogram') plt.show() ### mel-spectrogram (*128, t) *n_mels mel = librosa.feature.melspectrogram(y=y, sr=sr) #, n_mels=256