class_docstr: Base class for speaker models.
class_docstr_tok: ["Base","class","for","speaker","models","."]
docstr: Speech preprocessing. 
docstr_tok: ["Speech","preprocessing","."]
code: def preprocess(self, inputs):
      """Speech preprocessing."""
      with tf.variable_scope("feature"):
          if self.input_type == "samples":
              # FIXME: stub
              feats = None
          else:
              if "cmvn_type" in self.audioconf:
                  cmvn_type = self.audioconf["cmvn_type"]
              else:
                  cmvn_type = "global"
              logging.info("cmvn_type: %s" % (cmvn_type))
              if cmvn_type == "global":
                  self.mean, self.std = utils.load_cmvn(
                      self.audioconf["cmvn_path"]
                  )
                  feats = utils.apply_cmvn(inputs, self.mean, self.std)
              elif cmvn_type == "local":
                  feats = utils.apply_local_cmvn(inputs)
              elif cmvn_type == "sliding":
                  raise ValueError(
                      "cmvn_type %s not implemented yet." % (cmvn_type)
                  )
              elif cmvn_type == "none":
                  feats = inputs
              else:
                  raise ValueError("Error cmvn_type %s." % (cmvn_type))
      return feats
  
imports: import math
  from absl import logging
  import delta.compat
  import tensorflow.keras.layers
  from delta import utils
  from delta.layers import common_layers
  from delta.models.base_model import RawModel
  from delta.utils.register import registers
  from delta.utils.loss.loss_utils import arcface_loss
  from delta.utils.hparam import HParams
label_desc: Use image node_id 2 for calling the SpeakerBaseRawModel obj's underlying member method code with example usage: obj.preprocess(inputs) and returns: feats