mdst#

diffsptk.MDST#

alias of ModifiedDiscreteSineTransform

class diffsptk.ModifiedDiscreteSineTransform(frame_length: int, window: str = 'sine', learnable: bool | list[str] = False, device: device | None = None, dtype: dtype | None = None)[source]#

This module is a simple cascade of framing, windowing, and modified DST.

Parameters:
frame_lengthint >= 2

The frame length, \(L\).

window[‘sine’, ‘vorbis’, ‘kbd’, ‘rectangular’]

The window type.

learnablebool or list[str]

Indicates whether the parameters are learnable. If a boolean, it specifies whether all parameters are learnable. If a list, it contains the keys of the learnable parameters, which can only be “basis” and “window”.

devicetorch.device or None

The device of this module.

dtypetorch.dtype or None

The data type of this module.

forward(x: Tensor) Tensor[source]#

Compute modified discrete sine transform.

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

The input waveform.

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

The spectrum.

Examples

>>> x = diffsptk.ramp(3)
>>> x
tensor([0., 1., 2., 3.])
>>> mdst = diffsptk.MDST(frame_length=4)
>>> y = mdst(x)
>>> y
tensor([[-0.2071, -0.5000],
        [ 1.5858,  0.4142],
        [ 4.6213, -1.9142]])
diffsptk.functional.mdst(x: Tensor, frame_length: int = 400, window: str = 'sine') Tensor[source]#

Compute modified discrete sine transform.

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

The input waveform.

frame_lengthint >= 2

The frame length, \(L\).

window[‘sine’, ‘vorbis’, ‘kbd’, ‘rectangular’]

The window type.

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

The spectrum.

See also

frame window imdst