class_docstr: ASR Task 
class_docstr_tok: ["ASR","Task"]
code: def __init__(self, config, mode):
      super().__init__(config, mode)
      self.dummy = config["data"]["task"]["dummy"]
      self.batch_mode = config["data"]["task"]["batch_mode"]
      self.batch_size = config["solver"]["optimizer"]["batch_size"]
      self._shuffle_buffer_size = config["data"]["task"][
          "shuffle_buffer_size"
      ]
      self._need_shuffle = (
          config["data"]["task"]["need_shuffle"] and mode == utils.TRAIN
      )
      # get batches form data path
      if self.dummy:
          self._feat_shape = [40]
          logging.info("Dummy data: feat {}".format(self.feat_shape))
          self._vocab_size = 100
      else:
          data_metas = espnet_utils.get_batches(self.config, mode)
          self.batches = data_metas["data"]
          self.n_utts = data_metas["n_utts"]
          logging.info("utts: {}".format(self.n_utts))
          # [nframe, feat_shape, ...]
          self._feat_shape = self.batches[0][0][1]["input"][0]["shape"][
              1:
          ]
          # [tgt_len, vocab_size]
          self._vocab_size = self.batches[0][0][1]["output"][0][
              "shape"
          ][1]
      logging.info("#input feat shape: " + str(self.feat_shape))
      logging.info("#output dims: " + str(self.vocab_size))
  
      self._converter = espnet_utils.ASRConverter(self.config)
      self.on_epoch_end()
  
imports: import numpy
  import delta.compat
  from absl import logging
  from delta import utils
  from delta.data.utils import espnet_utils
  from delta.utils.register import registers
  from delta.data.task.base_speech_task import SpeechTask
label_desc: Use image node_id 1 to create a new AsrSeqTask object from inherited base classes: SpeechTask, tf.keras.utils with example: obj = AsrSeqTask(config, mode)