code: def mel_weight_matrix(
      num_mel_bins: int,
      dft_length: int,
      sample_rate: int,
      lower_edge_hertz: float = 125.0,
      upper_edge_hertz: float = 3000.0,
  ):
      lower_edge_hertz = np.array(lower_edge_hertz)
      upper_edge_hertz = np.array(upper_edge_hertz)
      zero = np.array(0.0)
  
      def hz_to_mel(f):
          return 2595 * np.log10(1 + f / 700)
  
      nyquist_hz = sample_rate / 2
      linear_freqs = np.linspace(
          0, nyquist_hz, dft_length, dtype=np.float32
      )[1:]
      spec_bin_mels = hz_to_mel(linear_freqs)[..., None]
      mel_edges = np.linspace(
          hz_to_mel(lower_edge_hertz),
          hz_to_mel(upper_edge_hertz),
          num_mel_bins + 2,
          dtype=np.float32,
      )
      mel_edges = np.stack(
          [mel_edges[i : i + 3] for i in range(num_mel_bins)]
      )
      lower_edge_mel, center_mel, upper_edge_mel = (
          t.reshape((1, num_mel_bins))
          for t in np.split(mel_edges, 3, axis=1)
      )
      lower_slopes = (spec_bin_mels - lower_edge_mel) / (
          center_mel - lower_edge_mel
      )
      upper_slopes = (upper_edge_mel - spec_bin_mels) / (
          upper_edge_mel - center_mel
      )
      mel_weights = np.maximum(
          zero, np.minimum(lower_slopes, upper_slopes)
      )
      return np.pad(mel_weights, [[1, 0], [0, 0]])
  
file_path: ivy/ivy/functional/backends/numpy/experimental/creation.py
imports: from typing import Optional, Tuple, Sequence, Union
  import numpy
  import ivy
label_desc: Use image node_id 10 for calling a global function with example usage: mel_weight_matrix(num_mel_bins, dft_length, sample_rate, lower_edge_hertz, upper_edge_hertz) and returns: np, unknown