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, **kwargs)[source]#

Perform constant-Q transform based on the librosa implementation.

Parameters:
frame_peirodint >= 1

Frame period in samples, \(P\).

sample_rateint >= 1

Sample rate in Hz.

f_minfloat > 0

Minimum center frequency in Hz.

n_binint >= 1

Number of CQ-bins, \(K\).

n_bin_per_octaveint >= 1

number of bins per octave, \(B\).

tuningfloat

Tuning offset in fractions of a bin.

filter_scalefloat > 0

Filter scale factor.

normfloat

Type of norm used in basis function normalization.

sparsityfloat in [0, 1)

Sparsification factor.

windowstr

Window function for the basis.

scalebool

If True, scale the CQT responce by the length of filter.

**kwargsadditional keyword arguments

See torchaudio.transforms.Resample.

forward(x)[source]#

Compute constant-Q transform.

Parameters:
xTensor [shape=(…, T)]

Waveform.

Returns:
outTensor [shape=(…, T/P, K)]

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]])

See also

icqt stft