class_docstr: Speech Emotion Solver base on Estimator
class_docstr_tok: ["Speech","Emotion","Solver","base","on","Estimator"]
docstr: preprocess config 
docstr_tok: ["preprocess","config"]
code: def process_config(self, config):
      """preprocess config"""
      data_conf = config["data"]
      class_vocab = data_conf["task"]["classes"]["vocab"]
      assert len(class_vocab) == data_conf["task"]["classes"]["num"]
  
      # add revere_vocab, positive_id
      reverse_vocab = {val: key for key, val in class_vocab.items()}
      data_conf["task"]["classes"]["reverse_vocab"] = reverse_vocab
  
      # binary class
      pos_id = config["solver"]["metrics"]["pos_label"]
      data_conf["task"]["classes"]["positive_id"] = pos_id
      data_conf["task"]["classes"]["positive"] = reverse_vocab[pos_id]
  
      # add feature shape, withoud batch_size
      if data_conf["task"]["suffix"] == ".npy":
          input_channels = (
              3 if data_conf["task"]["audio"]["add_delta_deltas"] else 1
          )
          nframe = librosa.time_to_frames(
              data_conf["task"]["audio"]["clip_size"],
              sr=data_conf["task"]["audio"]["sr"],
              hop_length=data_conf["task"]["audio"]["winstep"]
              * data_conf["task"]["audio"]["sr"],
          )
          feature_shape = [
              nframe,
              data_conf["task"]["audio"]["feature_size"],
              input_channels,
          ]
      else:
          feature_shape = [
              data_conf["task"]["audio"]["sr"]
              * data_conf["task"]["audio"]["clip_size"]
          ]
      data_conf["task"]["audio"]["feature_shape"] = feature_shape
      return config
  
imports: import librosa
  from absl import logging
  import delta.compat
  from tensorflow.keras import backend
  from tensorflow.python.keras.utils import losses_utils
  from delta import utils
  from delta.utils.solver.estimator_solver import EstimatorSolver
  from delta.utils.solver.utils.callbacks import ClassReportCallBack
  from delta.utils.solver.asr_solver import AsrSolver
  from delta.utils.register import registers
label_desc: Use image node_id 2 for calling the EmotionSolver obj's underlying member method code with example usage: obj.process_config(config) and returns: config