poledf#

class diffsptk.AllPoleDigitalFilter(filter_order, frame_period, ignore_gain=False)[source]#

See this page for details.

Parameters:
filter_orderint >= 0

Order of filter coefficients, \(M\).

frame_periodint >= 1

Frame period, \(P\).

ignore_gainbool

If True, perform filtering without gain.

References

[1]

C.-Y. Yu et al., “Differentiable time-varying linear prediction in the context of end-to-end analysis-by-synthesis,” Proceedings of Interspeech, 2024.

forward(x, a)[source]#

Apply an all-pole digital filter.

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

Excitation signal.

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

Filter coefficients.

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

Output signal.

Examples

>>> x = diffsptk.step(4)
>>> a = diffsptk.ramp(4)
>>> poledf = diffsptk.AllPoleDigitalFilter(0, 1)
>>> y = poledf(x, a.view(-1, 1))
>>> y
tensor([[0., 1., 2., 3., 4.]])
diffsptk.functional.poledf(x, a, frame_period=80, ignore_gain=False)[source]#

Apply an all-pole digital filter.

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

Excitation signal.

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

Filter coefficients.

frame_periodint >= 1

Frame period, \(P\).

ignore_gainbool

If True, perform filtering without gain.

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

Output signal.

See also

linear_intpl lpc