cqt#
- diffsptk.CQT#
alias of
ConstantQTransform
- class diffsptk.ConstantQTransform(frame_period, sample_rate, *, f_min=32.7, n_bin=84, n_bin_per_octave=12, tuning=0, filter_scale=1, norm=1, sparsity=0.01, window='hann', scale=True, res_type='kaiser_best', **kwargs)[source]#
Perform constant-Q transform based on the librosa implementation.
- Parameters:
- frame_periodint >= 1
The frame period in samples, \(P\).
- sample_rateint >= 1
The sample rate in Hz.
- f_minfloat > 0
The minimum center frequency in Hz.
- n_binint >= 1
The number of CQ-bins, \(K\).
- n_bin_per_octaveint >= 1
The number of bins per octave, \(B\).
- tuningfloat
The tuning offset in fractions of a bin.
- filter_scalefloat > 0
The filter scale factor.
- normfloat
The type of norm used in the basis function normalization.
- sparsityfloat in [0, 1)
The sparsification factor.
- windowstr
The window function for the basis.
- scalebool
If True, scale the CQT response by the length of the filter.
- res_type[‘kaiser_best’, ‘kaiser_fast’] or None
The resampling type.
- **kwargsadditional keyword arguments
- forward(x)[source]#
Compute constant-Q transform.
- Parameters:
- xTensor [shape=(…, T)]
The input waveform.
- Returns:
- outTensor [shape=(…, T/P, K)]
The CQT complex output.
Examples
>>> x = diffsptk.sin(99) >>> cqt = diffsptk.CQT(100, 8000, n_bin=4) >>> c = cqt(x).abs() >>> c tensor([[1.1259, 1.2069, 1.3008, 1.3885]])