imglsadf#

diffsptk.IMLSA#

alias of PseudoInverseMGLSADigitalFilter

class diffsptk.PseudoInverseMGLSADigitalFilter(filter_order, **kwargs)[source]#

See this page for details.

Parameters:
filter_orderint >= 0 [scalar]

Order of filter coefficients, \(M\).

alphafloat [-1 < alpha < 1]

Frequency warping factor, \(\alpha\).

gammafloat [-1 <= gamma <= 1]

Gamma, \(\gamma\).

cint >= 1 [scalar]

Number of stages.

frame_periodint >= 1 [scalar]

Frame period, \(P\).

ignore_gainbool [scalar]

If True, perform filtering without gain.

phase[‘minimum’, ‘maximum’, ‘zero’]

Filter type.

cascadebool [scalar]

If True, use multi-stage FIR filter.

cep_orderint >= 0 [scalar]

Order of linear cepstrum (valid only if cascade is True).

taylor_orderint >= 0 [scalar]

Order of Taylor series expansion (valid only if cascade is True).

impulse_response_lengthint >= 1 [scalar]

Length of impulse response (valid only if cascade is False).

n_fftint >= 1 [scalar]

Number of FFT bins for conversion (valid only if cascade is False).

forward(y, mc)[source]#

Apply an inverse MGLSA digital filter.

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

Audio signal.

mcTensor [shape=(…, T/P, M+1)]

Mel-generalized cepstrum, not MLSA digital filter coefficients.

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

Residual signal.

Examples

>>> M = 4
>>> y = diffsptk.step(3)
>>> mc = torch.randn(2, M + 1)
>>> mc
tensor([[ 0.8457,  1.5812,  0.1379,  1.6558,  1.4591],
        [-1.3714, -0.9669, -1.2025, -1.3683, -0.2352]])
>>> imglsadf = diffsptk.PseudoInverseMGLSADigitalFilter(M, frame_period=2)
>>> x = imglsadf(y.view(1, -1), mc.view(1, 2, M + 1))
>>> x
tensor([[ 0.4293,  1.0592,  7.9349, 14.9794]])

See also

mgcep mglsadf