mdst#

diffsptk.MDST#

alias of ModifiedDiscreteSineTransform

class diffsptk.ModifiedDiscreteSineTransform(frame_length: int, window: str = 'sine', learnable: bool | list[str] = False)[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”.

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