code: def __init__(
      self,
      sample_rate=16000,
      window_size=0.02,
      window_stride=0.01,
      window="hann",
      normalize="per_feature",
      n_fft=None,
      pad_amount=0,
      preemph=0.97,
      nfilt=64,
      lowfreq=0,
      highfreq=None,
      log=True,
      frame_splicing_stack=1,
      frame_splicing_subsample=1,
  ):
      self.win_length = int(sample_rate * window_size)
      self.hop_length = int(sample_rate * window_stride)
      self.n_fft = n_fft or 2 ** math.ceil(math.log2(self.win_length))
  
      self.normalize = normalize
      self.log = log
      self.frame_splicing_stack = frame_splicing_stack
      self.frame_splicing_subsample = frame_splicing_subsample
      self.nfilt = nfilt
      self.pad_amount = pad_amount
      self.preemph = preemph
      window_fn = torch_windows.get(window, None)
      self.window = (
          window_fn(self.win_length, periodic=False)
          if window_fn
          else None
      )
      filters = librosa.filters.mel(
          sr=sample_rate,
          n_fft=self.n_fft,
          n_mels=nfilt,
          fmin=lowfreq,
          fmax=highfreq,
      )
      self.fb = torch.tensor(filters, dtype=torch.float).unsqueeze(0)
  
imports: import nose_utils
  import nvidia.dali.fn
  from nvidia.dali import pipeline_def
  import nvidia.dali.types
  from test_utils import get_files, to_array
  import numpy
  import librosa
  import torch
  import math
  import random
  import os
  from nose.tools import nottest
label_desc: Use image node_id 1 to create a new FilterbankFeatures object  with example: obj = FilterbankFeatures(sample_rate, window_size, window_stride, window, normalize, n_fft, pad_amount, preemph, nfilt, lowfreq, highfreq, log, frame_splicing_stack, frame_splicing_subsample)