def test_forward(): layer = LogMel(n_fft=16, n_mels=2) x = torch.randn(2, 4, 9) y, _ = layer(x) assert y.shape == (2, 4, 2) y, ylen = layer(x, torch.tensor([4, 2], dtype=torch.long)) assert (ylen == torch.tensor((4, 2), dtype=torch.long)).all()
def __init__( self, fs: Union[int, str] = 16000, n_fft: int = 512, win_length: int = None, hop_length: int = 128, window: Optional[str] = "hann", center: bool = True, normalized: bool = False, onesided: bool = True, n_mels: int = 80, fmin: int = None, fmax: int = None, htk: bool = False, frontend_conf: Optional[dict] = get_default_kwargs(Frontend), apply_stft: bool = True, ): assert check_argument_types() super().__init__() if isinstance(fs, str): fs = humanfriendly.parse_size(fs) # Deepcopy (In general, dict shouldn't be used as default arg) frontend_conf = copy.deepcopy(frontend_conf) self.hop_length = hop_length if apply_stft: self.stft = Stft( n_fft=n_fft, win_length=win_length, hop_length=hop_length, center=center, window=window, normalized=normalized, onesided=onesided, ) else: self.stft = None self.apply_stft = apply_stft if frontend_conf is not None: self.frontend = Frontend(idim=n_fft // 2 + 1, **frontend_conf) else: self.frontend = None self.logmel = LogMel( fs=fs, n_fft=n_fft, n_mels=n_mels, fmin=fmin, fmax=fmax, htk=htk, ) self.n_mels = n_mels self.frontend_type = "default"
def __init__( self, fs: Union[int, str] = 16000, n_fft: int = 1024, win_length: int = None, hop_length: int = 256, window: Optional[str] = "hann", center: bool = True, pad_mode: str = "reflect", normalized: bool = False, onesided: bool = True, n_mels: int = 80, fmin: Optional[int] = 80, fmax: Optional[int] = 7600, htk: bool = False, ): assert check_argument_types() super().__init__() if isinstance(fs, str): fs = humanfriendly.parse_size(fs) self.fs = fs self.n_mels = n_mels self.n_fft = n_fft self.hop_length = hop_length self.win_length = win_length self.window = window self.fmin = fmin self.fmax = fmax self.stft = Stft( n_fft=n_fft, win_length=win_length, hop_length=hop_length, window=window, center=center, pad_mode=pad_mode, normalized=normalized, onesided=onesided, ) self.logmel = LogMel( fs=fs, n_fft=n_fft, n_mels=n_mels, fmin=fmin, fmax=fmax, htk=htk, log_base=10.0, )
def test_repr(): print(LogMel())
def test_backward_not_leaf_in(): layer = LogMel(n_fft=16, n_mels=2) x = torch.randn(2, 4, 9, requires_grad=True) x = x + 2 y, _ = layer(x) y.sum().backward()