Skip to content

MagnitudeTorch

MagnitudePhaseTorch

A class for computing magnitudes using PyTorch.

Source code in src/libsegmenter/transforms/magnitude_phase/MagnitudePhaseTorch.py
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class MagnitudePhaseTorch:
    """A class for computing magnitudes using PyTorch."""

    def __init__(self, *args: Any, **kwargs: Any) -> None:
        """Initializes the MagnitudePhaseTorch instance."""
        self._spectrogram = SpectrogramTorch(*args, **kwargs)

    def forward(self, x: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]:
        """
        Converts segments into a magnitude.

        Args:
            x (Tensor): Segments as generated by a Segmenter object.

        Returns:
            Tensor: MagnitudePhase representation.

        """
        tensor = self._spectrogram.forward(x)
        return torch.abs(tensor), torch.angle(tensor)

    def inverse(self, magnitude: torch.Tensor, phase: torch.Tensor) -> torch.Tensor:
        """
        Converts magnitude / phase spectrogram into segments.

        Args:
            magnitude (Tensor): MagnitudePhase spectrogram resulting from a `forward`
                pass.
            phase (Tensor): Phase spectrogram resulting from a `forward` pass.

        """
        return self._spectrogram.inverse(
            torch.multiply(magnitude, torch.exp(1j * phase))
        )

__init__(*args, **kwargs)

Initializes the MagnitudePhaseTorch instance.

Source code in src/libsegmenter/transforms/magnitude_phase/MagnitudePhaseTorch.py
28
29
30
def __init__(self, *args: Any, **kwargs: Any) -> None:
    """Initializes the MagnitudePhaseTorch instance."""
    self._spectrogram = SpectrogramTorch(*args, **kwargs)

forward(x)

Converts segments into a magnitude.

Parameters:

Name Type Description Default
x Tensor

Segments as generated by a Segmenter object.

required

Returns:

Name Type Description
Tensor Tuple[Tensor, Tensor]

MagnitudePhase representation.

Source code in src/libsegmenter/transforms/magnitude_phase/MagnitudePhaseTorch.py
32
33
34
35
36
37
38
39
40
41
42
43
44
def forward(self, x: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]:
    """
    Converts segments into a magnitude.

    Args:
        x (Tensor): Segments as generated by a Segmenter object.

    Returns:
        Tensor: MagnitudePhase representation.

    """
    tensor = self._spectrogram.forward(x)
    return torch.abs(tensor), torch.angle(tensor)

inverse(magnitude, phase)

Converts magnitude / phase spectrogram into segments.

Parameters:

Name Type Description Default
magnitude Tensor

MagnitudePhase spectrogram resulting from a forward pass.

required
phase Tensor

Phase spectrogram resulting from a forward pass.

required
Source code in src/libsegmenter/transforms/magnitude_phase/MagnitudePhaseTorch.py
46
47
48
49
50
51
52
53
54
55
56
57
58
def inverse(self, magnitude: torch.Tensor, phase: torch.Tensor) -> torch.Tensor:
    """
    Converts magnitude / phase spectrogram into segments.

    Args:
        magnitude (Tensor): MagnitudePhase spectrogram resulting from a `forward`
            pass.
        phase (Tensor): Phase spectrogram resulting from a `forward` pass.

    """
    return self._spectrogram.inverse(
        torch.multiply(magnitude, torch.exp(1j * phase))
    )