code: def logmel2linear(
      lmspc: np.ndarray,
      fs: int,
      n_fft: int,
      n_mels: int,
      fmin: int = None,
      fmax: int = None,
  ) -> np.ndarray:
      """Convert log Mel filterbank to linear spectrogram.
  
      Args:
          lmspc: Log Mel filterbank (T, n_mels).
          fs: Sampling frequency.
          n_fft: The number of FFT points.
          n_mels: The number of mel basis.
          f_min: Minimum frequency to analyze.
          f_max: Maximum frequency to analyze.
  
      Returns:
          Linear spectrogram (T, n_fft // 2 + 1).
  
      """
      assert lmspc.shape[1] == n_mels
      fmin = 0 if fmin is None else fmin
      fmax = fs / 2 if fmax is None else fmax
      mspc = np.power(10.0, lmspc)
      mel_basis = librosa.filters.mel(
          sr=fs, n_fft=n_fft, n_mels=n_mels, fmin=fmin, fmax=fmax
      )
      inv_mel_basis = np.linalg.pinv(mel_basis)
      return np.maximum(EPS, np.dot(inv_mel_basis, mspc.T).T)
  
file_path: espnet/espnet2/utils/griffin_lim.py
imports: import logging
  from functools import partial
  from typing import Optional
  import librosa
  import numpy
  import torch
  from packaging.version import parse
  from typeguard import check_argument_types
label_desc: Use image node_id 1 for calling a global function with example usage: logmel2linear(lmspc, fs, n_fft, n_mels, fmin, fmax) and returns: np