poledf#

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

See this page for details.

Parameters:
filter_orderint >= 0

The order of the filter, \(M\).

frame_periodint >= 1

The frame period in samples, \(P\).

ignore_gainbool

If True, perform filtering without the 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: Tensor, a: Tensor) Tensor[source]#

Apply an all-pole digital filter.

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

The excitation signal.

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

The filter coefficients.

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

The 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: Tensor, a: Tensor, frame_period: int = 80, ignore_gain: bool = False) Tensor[source]#

Apply an all-pole digital filter.

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

The excitation signal.

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

The filter coefficients.

frame_periodint >= 1

The frame period in samples, \(P\).

ignore_gainbool

If True, perform filtering without the gain.

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

The output signal.

See also

linear_intpl lpc