code: def compute_fbank(
      wav_path,
      num_mel_bins=80,
      frame_length=25,
      frame_shift=10,
      dither=0.0,
  ):
      """Extract fbank.
  
      Simlilar to the one in wespeaker.dataset.processor,
      While integrating the wave reading and CMN.
      """
      waveform, sample_rate = torchaudio.load(wav_path)
      if sample_rate != 16000:
          waveform = torchaudio.functional.resample(
              waveform, sample_rate, 16000
          )
      waveform = waveform * (1 << 15)
      mat = kaldi.fbank(
          waveform,
          num_mel_bins=num_mel_bins,
          frame_length=frame_length,
          frame_shift=frame_shift,
          dither=dither,
          sample_frequency=sample_rate,
          window_type="hamming",
          use_energy=False,
      )
      # CMN, without CVN
      mat = mat - torch.mean(mat, dim=0)
      return mat
  
file_path: espnet/egs2/wsj0_2mix/tse1/local/prepare_spk_embs_scp.py
imports: from functools import partial
  from pathlib import Path
  import numpy
  import onnxruntime
  import torch
  import torchaudio
  import torchaudio.compliance.kaldi
  from tqdm.contrib.concurrent import thread_map
label_desc: Use image node_id 1 for calling a global function with example usage: compute_fbank(wav_path, num_mel_bins, frame_length, frame_shift, dither) and returns: mat