Caution
You're reading an old version of this documentation. If you want up-to-date information, please have a look at 0.9.1.
librosa.feature.chroma_cens¶
- librosa.feature.chroma_cens(y=None, sr=22050, C=None, hop_length=512, fmin=None, tuning=None, n_chroma=12, n_octaves=7, bins_per_octave=None, cqt_mode='full', window=None, norm=2, win_len_smooth=41, smoothing_window='hann')[source]¶
Computes the chroma variant “Chroma Energy Normalized” (CENS), following [1].
To compute CENS features, following steps are taken after obtaining chroma vectors using
chroma_cqt
: 1. L-1 normalization of each chroma vector 2. Quantization of amplitude based on “log-like” amplitude thresholds 3. (optional) Smoothing with sliding window. Default window length = 41 frames 4. (not implemented) DownsamplingCENS features are robust to dynamics, timbre and articulation, thus these are commonly used in audio matching and retrieval applications.
- 1
Meinard Müller and Sebastian Ewert “Chroma Toolbox: MATLAB implementations for extracting variants of chroma-based audio features” In Proceedings of the International Conference on Music Information Retrieval (ISMIR), 2011.
- Parameters
- ynp.ndarray [shape=(n,)]
audio time series
- srnumber > 0
sampling rate of y
- Cnp.ndarray [shape=(d, t)] [Optional]
a pre-computed constant-Q spectrogram
- hop_lengthint > 0
number of samples between successive chroma frames
- fminfloat > 0
minimum frequency to analyze in the CQT. Default: ‘C1’ ~= 32.7 Hz
- normint > 0, +-np.inf, or None
Column-wise normalization of the chromagram.
- tuningfloat
Deviation (in fractions of a CQT bin) from A440 tuning
- n_chromaint > 0
Number of chroma bins to produce
- n_octavesint > 0
Number of octaves to analyze above fmin
- windowNone or np.ndarray
Optional window parameter to filters.cq_to_chroma
- bins_per_octaveint > 0
Number of bins per octave in the CQT. Default: matches n_chroma
- cqt_mode[‘full’, ‘hybrid’]
Constant-Q transform mode
- win_len_smoothint > 0 or None
Length of temporal smoothing window. None disables temporal smoothing. Default: 41
- smoothing_windowstr, float or tuple
Type of window function for temporal smoothing. See filters.get_window for possible inputs. Default: ‘hann’
- Returns
- chroma_censnp.ndarray [shape=(n_chroma, t)]
The output cens-chromagram
See also
chroma_cqt
Compute a chromagram from a constant-Q transform.
chroma_stft
Compute a chromagram from an STFT spectrogram or waveform.
filters.get_window
Compute a window function.
Examples
Compare standard cqt chroma to CENS.
>>> y, sr = librosa.load(librosa.util.example_audio_file(), ... offset=10, duration=15) >>> chroma_cens = librosa.feature.chroma_cens(y=y, sr=sr) >>> chroma_cq = librosa.feature.chroma_cqt(y=y, sr=sr)
>>> import matplotlib.pyplot as plt >>> plt.figure() >>> plt.subplot(2,1,1) >>> librosa.display.specshow(chroma_cq, y_axis='chroma') >>> plt.title('chroma_cq') >>> plt.colorbar() >>> plt.subplot(2,1,2) >>> librosa.display.specshow(chroma_cens, y_axis='chroma', x_axis='time') >>> plt.title('chroma_cens') >>> plt.colorbar() >>> plt.tight_layout() >>> plt.show()