Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import torch
import torch.nn as nn
from .enc_dec import Filterbank
class FreeFB(Filterbank):
""" Free filterbank without any constraints. Equivalent to
:class:`nn.Conv1d`.
Args:
n_filters (int): Number of filters.
kernel_size (int): Length of the filters.
stride (int, optional): Stride of the convolution.
If None (default), set to ``kernel_size // 2``.
Attributes:
n_feats_out (int): Number of output filters.
References:
[1] : "Filterbank design for end-to-end speech separation".
Submitted to ICASSP 2020. Manuel Pariente, Samuele Cornell,
Antoine Deleforge, Emmanuel Vincent.
import numpy as np
import torch
import torch.nn as nn
import warnings
from .enc_dec import Filterbank
class ParamSincFB(Filterbank):
"""Extension of the parameterized filterbank from [1] proposed in [2].
Modified and extended from from ``__
Args:
n_filters (int): Number of filters. Half of `n_filters` (the real
parts) will have parameters, the other half will correspond to the
imaginary parts. `n_filters` should be even.
kernel_size (int): Length of the filters.
stride (int, optional): Stride of the convolution. If None (default),
set to ``kernel_size // 2``.
sample_rate (int, optional): The sample rate (used for initialization).
min_low_hz (int, optional): Lowest low frequency allowed (Hz).
min_band_hz (int, optional): Lowest band frequency allowed (Hz).
Attributes:
n_feats_out (int): Number of output filters.
import torch
import numpy as np
from .enc_dec import Filterbank
class STFTFB(Filterbank):
""" STFT filterbank.
Args:
n_filters (int): Number of filters. Determines the length of the STFT
filters before windowing.
kernel_size (int): Length of the filters (i.e the window).
stride (int, optional): Stride of the convolution (hop size). If None
(default), set to ``kernel_size // 2``.
window (:class:`numpy.ndarray`, optional): If None, defaults to
``np.sqrt(np.hanning())``.
Attributes:
n_feats_out (int): Number of output filters.
"""
def __init__(self, n_filters, kernel_size, stride=None, window=None,
**kwargs):
def __init__(self, n_filters, kernel_size, stride=None):
super(Filterbank, self).__init__()
self.n_filters = n_filters
self.kernel_size = kernel_size
self.stride = stride if stride else self.kernel_size // 2
# If not specified otherwise in the filterbank's init, output
# number of features is equal to number of required filters.
self.n_feats_out = n_filters
import torch
import torch.nn as nn
import numpy as np
import warnings
from .enc_dec import Filterbank
class AnalyticFreeFB(Filterbank):
""" Free analytic (fully learned with analycity constraints) filterbank.
For more details, see [1].
Args:
n_filters (int): Number of filters. Half of `n_filters` will
have parameters, the other half will be the hilbert transforms.
`n_filters` should be even.
kernel_size (int): Length of the filters.
stride (int, optional): Stride of the convolution.
If None (default), set to ``kernel_size // 2``.
Attributes:
n_feats_out (int): Number of output filters.
References:
[1] : "Filterbank design for end-to-end speech separation".
def pinv_of(cls, filterbank):
""" Returns an Decoder, pseudo inverse of a filterbank or Encoder."""
if isinstance(filterbank, Filterbank):
return cls(filterbank, is_pinv=True)
elif isinstance(filterbank, Encoder):
return cls(filterbank.filterbank, is_pinv=True)