class_docstr: Use MFCCs as latent variables, distribute across timesteps.
code: def __init__(
      self,
      rnn_channels=512,
      rnn_type="gru",
      z_dims=32,
      z_time_steps=250,
      **kwargs,
  ):
      super().__init__(**kwargs)
      if z_time_steps not in [63, 125, 250, 500, 1000]:
          raise ValueError(
              "`z_time_steps` currently limited to 63,125,250,500 and 1000"
          )
      self.z_audio_spec = {
          "63": {"fft_size": 2048, "overlap": 0.5},
          "125": {"fft_size": 1024, "overlap": 0.5},
          "250": {"fft_size": 1024, "overlap": 0.75},
          "500": {"fft_size": 512, "overlap": 0.75},
          "1000": {"fft_size": 256, "overlap": 0.75},
      }
      self.fft_size = self.z_audio_spec[str(z_time_steps)]["fft_size"]
      self.overlap = self.z_audio_spec[str(z_time_steps)]["overlap"]
  
      # Layers.
      self.z_norm = nn.Normalize("instance")
      self.rnn = nn.Rnn(rnn_channels, rnn_type)
      self.dense_out = tfkl.Dense(z_dims)
  
imports: import ddsp
  from ddsp import spectral_ops
  from ddsp.training import nn
  import gin
  import tensorflow.compat.v2
label_desc: Use image node_id 1 to create a new MfccTimeDistributedRnnEncoder object from inherited base classes: ZEncoder with example: obj = MfccTimeDistributedRnnEncoder(rnn_channels, rnn_type, z_dims, z_time_steps)