code: def log_mel_spectrogram(
      data,
      audio_sample_rate=8000,
      log_offset=0.0,
      window_length_secs=0.025,
      hop_length_secs=0.010,
      **kwargs,
  ):
      """Convert waveform to a log magnitude mel-frequency spectrogram.
  
      Args:
        data: 1D np.array of waveform data.
        audio_sample_rate: The sampling rate of data.
        log_offset: Add this to values when taking log to avoid -Infs.
        window_length_secs: Duration of each window to analyze.
        hop_length_secs: Advance between successive analysis windows.
        **kwargs: Additional arguments to pass to spectrogram_to_mel_matrix.
  
      Returns:
        2D np.array of (num_frames, num_mel_bins) consisting of log mel filterbank
        magnitudes for successive frames.
      """
      window_length_samples = int(
          round(audio_sample_rate * window_length_secs)
      )
      hop_length_samples = int(
          round(audio_sample_rate * hop_length_secs)
      )
      fft_length = 2 ** int(
          np.ceil(np.log(window_length_samples) / np.log(2.0))
      )
      spectrogram = stft_magnitude(
          data,
          fft_length=fft_length,
          hop_length=hop_length_samples,
          window_length=window_length_samples,
      )
      mel_spectrogram = np.dot(
          spectrogram,
          spectrogram_to_mel_matrix(
              num_spectrogram_bins=spectrogram.shape[1],
              audio_sample_rate=audio_sample_rate,
              **kwargs,
          ),
      )
      return np.log(mel_spectrogram + log_offset)
  
imports: import numpy
label_desc: Use image node_id 6 for calling a global function with example usage: log_mel_spectrogram(data, audio_sample_rate, log_offset, window_length_secs, hop_length_secs) and returns: np