class_docstr: Compute MFCC from log-melspectrogram.
  
  It wraps `tf.signal.mfccs_from_log_mel_spectrogram()`, which performs DCT-II.
  
  Note:
      In librosa, the DCT-II scales by `sqrt(1/n)` where `n` is the bin index of MFCC as it uses
      scipy. This is the correct orthogonal DCT.
      In Tensorflow though, because it follows HTK, it scales by `(0.5 * sqrt(2/n))`. This results in
      `sqrt(2)` scale difference in the first MFCC bins (`n=1`).
  
      As long as all of your data in training / inference / deployment is consistent (i.e., do not
      mix librosa and kapre MFCC), it'll be fine!
  
  Args:
      n_mfccs (int): Number of MFCC
      data_format (str): `channels_first`, `channels_last`, or `default`
      **kwargs: optional keyword args for `tf.keras.layers.Layer()`
  
  Example:
      ::
  
          input_shape = (40, 128, 1)  # mono melspectrogram with 40 frames and n_mels=128
          model = Sequential()
          model.add(kapre.LogmelToMFCC(n_mfccs=20, input_shape=input_shape))
          # now the shape is (batch, time=40, n_mfccs=20, ch=1)
code: def __init__(self, n_mfccs=20, data_format="default", **kwargs):
      super(LogmelToMFCC, self).__init__(**kwargs)
      backend.validate_data_format_str(data_format)
  
      self.n_mfccs = n_mfccs
      if data_format == _CH_DEFAULT_STR:
          self.data_format = K.image_data_format()
      else:
          self.data_format = data_format
  
      if self.data_format == _CH_LAST_STR:
          self.permutation = (0, 1, 3, 2)
      else:
          self.permutation = None
  
imports: import tensorflow
  from tensorflow.keras.layers import Layer
  from tensorflow.keras import backend
  from .None import backend
  from .backend import _CH_FIRST_STR, _CH_LAST_STR, _CH_DEFAULT_STR
label_desc: Use image node_id 1 to create a new LogmelToMFCC object from inherited base classes: Layer with example: obj = LogmelToMFCC(n_mfccs, data_format)