mglsadf#
- diffsptk.MLSA#
alias of
PseudoMGLSADigitalFilter
- class diffsptk.PseudoMGLSADigitalFilter(filter_order, alpha=0, gamma=0, c=None, frame_period=1, ignore_gain=False, phase='minimum', cascade=True, **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).
References
[1]T. Yoshimura et al., “Embedding a differentiable mel-cepstral synthesis filter to a neural speech synthesis system,” arXiv:2211.11222, 2022.
- forward(x, mc)[source]#
Apply an MGLSA digital filter.
- Parameters:
- xTensor [shape=(…, T)]
Excitation signal.
- mcTensor [shape=(…, T/P, M+1)]
Mel-generalized cepstrum, not MLSA digital filter coefficients.
- Returns:
- yTensor [shape=(…, T)]
Output signal.
Examples
>>> M = 4 >>> x = diffsptk.step(3) >>> mc = torch.randn(2, M + 1) >>> mc tensor([[-0.9134, -0.5774, -0.4567, 0.7423, -0.5782], [ 0.6904, 0.5175, 0.8765, 0.1677, 2.4624]]) >>> mglsadf = diffsptk.PseudoMGLSADigitalFilter(M, frame_period=2) >>> y = mglsadf(x.view(1, -1), mc.view(1, 2, M + 1)) >>> y tensor([[0.4011, 0.8760, 3.5677, 4.8725]])