code: def __init__(
      self,
      # Mel options,
      fs: int = 16000,
      n_fft: int = 512,
      n_mels: int = 80,
      fmin: float = 0.0,
      fmax: float = None,
      # Normalization
      stats_file: str = None,
      apply_uttmvn: bool = True,
      uttmvn_norm_means: bool = True,
      uttmvn_norm_vars: bool = False,
  ):
      super().__init__()
      self.apply_uttmvn = apply_uttmvn
  
      self.logmel = LogMel(
          fs=fs, n_fft=n_fft, n_mels=n_mels, fmin=fmin, fmax=fmax
      )
      self.stats_file = stats_file
      if stats_file is not None:
          self.global_mvn = GlobalMVN(stats_file)
      else:
          self.global_mvn = None
  
      if self.apply_uttmvn is not None:
          self.uttmvn = UtteranceMVN(
              norm_means=uttmvn_norm_means, norm_vars=uttmvn_norm_vars
          )
      else:
          self.uttmvn = None
  
imports: from typing import List, Tuple, Union
  import librosa
  import numpy
  import torch
  from torch_complex.tensor import ComplexTensor
  from espnet.nets.pytorch_backend.nets_utils import make_pad_mask
label_desc: Use image node_id 1 to create a new FeatureTransform object from inherited base classes: torch.nn with example: obj = FeatureTransform(fs, n_fft, n_mels, fmin, fmax, stats_file, apply_uttmvn, uttmvn_norm_means, uttmvn_norm_vars)