code: def _get_mel_fbank_matrix(
      list_mel_points: torch.Tensor,
      num_filter_bands: int,
      num_fft_points: int,
      sampling_rate_in_hz: int,
  ) -> torch.Tensor:
      num_ess_fft_points = get_non_symmetric_length(num_fft_points)
      freq_scale = (num_fft_points + 1) / sampling_rate_in_hz
      freq_bins_on_mel_scale = torch.floor(
          freq_scale * _convert_mel_to_hz(list_mel_points)
      )
      mel_scaled_fbank = torch.zeros(
          (num_filter_bands, num_ess_fft_points),
          dtype=torch.float32,
          device=list_mel_points.device,
      )
      for filt_idx in range(num_filter_bands):
          start_bin_freq = freq_bins_on_mel_scale[filt_idx]
          middle_bin_freq = freq_bins_on_mel_scale[filt_idx + 1]
          end_bin_freq = freq_bins_on_mel_scale[filt_idx + 2]
          mel_scaled_fbank[filt_idx] = _create_triangular_filter(
              start_bin_freq,
              middle_bin_freq,
              end_bin_freq,
              num_ess_fft_points,
          )
      return mel_scaled_fbank
  
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 11 for calling a global function with example usage: _get_mel_fbank_matrix(list_mel_points, num_filter_bands, num_fft_points, sampling_rate_in_hz) and returns: mel_scaled_fbank