code: def get_mel(
      sr,
      n_fft,
      n_mels=128,
      fmin=0.0,
      fmax=None,
      htk=False,
      norm=1,
      dtype=np.float32,
  ):
      """
      This function is cloned from librosa 0.7.
      Please refer to the original
      `documentation <https://librosa.org/doc/latest/generated/librosa.filters.mel.html>`__
      for more info.
      Create a Filterbank matrix to combine FFT bins into Mel-frequency bins
  
  
      Parameters
      ----------
      sr        : number > 0 [scalar]
          sampling rate of the incoming signal
      n_fft     : int > 0 [scalar]
          number of FFT components
      n_mels    : int > 0 [scalar]
          number of Mel bands to generate
      fmin      : float >= 0 [scalar]
          lowest frequency (in Hz)
      fmax      : float >= 0 [scalar]
          highest frequency (in Hz).
          If `None`, use `fmax = sr / 2.0`
      htk       : bool [scalar]
          use HTK formula instead of Slaney
      norm : {None, 1, np.inf} [scalar]
          if 1, divide the triangular mel weights by the width of the mel band
          (area normalization).  Otherwise, leave all the triangles aiming for
          a peak value of 1.0
      dtype : np.dtype
          The data type of the output basis.
          By default, uses 32-bit (single-precision) floating point.
  
      Returns
      -------
      M         : np.ndarray [shape=(n_mels, 1 + n_fft/2)]
          Mel transform matrix
  
      Notes
      -----
      This function caches at level 10.
  
      Examples
      --------
      >>> melfb = librosa.filters.mel(22050, 2048)
      >>> melfb
      array([[ 0.   ,  0.016, ...,  0.   ,  0.   ],
             [ 0.   ,  0.   , ...,  0.   ,  0.   ],
             ...,
             [ 0.   ,  0.   , ...,  0.   ,  0.   ],
             [ 0.   ,  0.   , ...,  0.   ,  0.   ]])
      Clip the maximum frequency to 8KHz
      >>> librosa.filters.mel(22050, 2048, fmax=8000)
      array([[ 0.  ,  0.02, ...,  0.  ,  0.  ],
             [ 0.  ,  0.  , ...,  0.  ,  0.  ],
             ...,
             [ 0.  ,  0.  , ...,  0.  ,  0.  ],
             [ 0.  ,  0.  , ...,  0.  ,  0.  ]])
      >>> import matplotlib.pyplot as plt
      >>> plt.figure()
      >>> librosa.display.specshow(melfb, x_axis='linear')
      >>> plt.ylabel('Mel filter')
      >>> plt.title('Mel filter bank')
      >>> plt.colorbar()
      >>> plt.tight_layout()
      >>> plt.show()
      """
  
      if fmax is None:
          fmax = float(sr) / 2
  
      if norm is not None and norm != 1 and norm != np.inf:
          raise ParameterError(
              "Unsupported norm: {}".format(repr(norm))
          )
  
      # Initialize the weights
      n_mels = int(n_mels)
      weights = np.zeros((n_mels, int(1 + n_fft // 2)), dtype=dtype)
  
      # Center freqs of each FFT bin
      fftfreqs = fft_frequencies(sr=sr, n_fft=n_fft)
  
      # 'Center freqs' of mel bands - uniformly spaced between limits
      mel_f = mel_frequencies(n_mels + 2, fmin=fmin, fmax=fmax, htk=htk)
  
      fdiff = np.diff(mel_f)
      ramps = np.subtract.outer(mel_f, fftfreqs)
  
      for i in range(n_mels):
          # lower and upper slopes for all bins
          lower = -ramps[i] / fdiff[i]
          upper = ramps[i + 2] / fdiff[i + 1]
  
          # .. then intersect them with each other and zero
          weights[i] = np.maximum(0, np.minimum(lower, upper))
  
      if norm == 1:
          # Slaney-style mel is scaled to be approx constant energy per channel
          enorm = 2.0 / (mel_f[2 : n_mels + 2] - mel_f[:n_mels])
          weights *= enorm[:, np.newaxis]
  
      # Only check weights if f_mel[0] is positive
      if not np.all((mel_f[:-2] == 0) | (weights.max(axis=1) > 0)):
          # This means we have an empty channel somewhere
          warnings.warn(
              "Empty filters detected in mel frequency basis. "
              "Some channels will produce empty responses. "
              "Try increasing your sampling rate (and fmax) or "
              "reducing n_mels."
          )
  
      return weights
  
file_path: nnAudio/Installation/nnAudio/librosa_functions.py
imports: import numpy
  import warnings
label_desc: Use image node_id 7 for calling a global function with example usage: get_mel(sr, n_fft, n_mels, fmin, fmax, htk, norm, dtype) and returns: weights