code: def get_fbank(
      raw_data: torch.Tensor,
      sampling_rate_in_hz: int,
      window_length_in_s: float,
      window_shift_in_s: float,
      num_fft_points: int,
      window_type: str,
      num_filter_bands: int,
  ) -> torch.Tensor:
      stft = _get_stft(
          raw_data,
          sampling_rate_in_hz,
          window_length_in_s,
          window_shift_in_s,
          num_fft_points,
          window_type=window_type,
          zero_mean_offset=True,
      )
      stft_power = torch.abs(stft) ** 2
      upper_limit_freq = int(sampling_rate_in_hz / 2)
      upper_limit_mel = _convert_hz_to_mel(upper_limit_freq)
      lower_limit_mel = 0
      list_mel_points = torch.linspace(
          lower_limit_mel,
          upper_limit_mel,
          num_filter_bands + 2,
          device=raw_data.device,
      )
      mel_fbank_matrix = _get_mel_fbank_matrix(
          list_mel_points,
          num_filter_bands,
          num_fft_points,
          sampling_rate_in_hz,
      )
      mel_fbank_feature = torch.matmul(
          stft_power, torch.transpose(mel_fbank_matrix, 0, 1)
      )
      log_mel_fbank_feature = torch.log(mel_fbank_feature + 1.0e-10)
      return torch.transpose(log_mel_fbank_feature, 0, 1)
  
imports: import functools
  import logging
  from io import BytesIO
  from typing import Any, List, Optional, Union
  import torch
  import torch.nn.functional
  import torchaudio
  from packaging import version
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import DEFAULT_AUDIO_TENSOR_LENGTH
  from ludwig.utils.types import TorchAudioTuple
label_desc: Use image node_id 10 for calling a global function with example usage: get_fbank(raw_data, sampling_rate_in_hz, window_length_in_s, window_shift_in_s, num_fft_points, window_type, num_filter_bands) and returns: torch