class_docstr: speaker task test
class_docstr_tok: ["speaker","task","test"]
docstr: test generate cmvn
docstr_tok: ["test","generate","cmvn"]
code: def test_generate_cmvn(self):
      """test generate cmvn"""
      tmp = tempfile.mktemp(suffix="cmvn.npy")
      self.config["data"]["task"]["audio"]["cmvn_path"] = tmp
  
      self.config["data"]["task"]["suffix"] = ".wav"
      self.config["data"]["task"]["stride"] = 1.0
      paths = self.config["data"][utils.TRAIN]["paths"]
      self.config["data"][utils.INFER]["paths"] = paths
  
      task_name = self.config["data"]["task"]["name"]
      task_class = registers.task[task_name]
  
      task = task_class(self.config, utils.INFER)
      task.generate_cmvn(dry_run=False)
  
      self.assertTrue(
          os.path.exists(
              self.config["data"]["task"]["audio"]["cmvn_path"]
          )
      )
      cmvn = np.load(self.config["data"]["task"]["audio"]["cmvn_path"])
      self.assertEqual(cmvn.ndim, 4)
  
imports: import os
  import tempfile
  from pathlib import Path
  import numpy
  import delta.compat
  from absl import logging
  from delta import utils
  from delta.utils.register import registers
  from delta.utils.register import import_all_modules_for_register
  from delta.utils.kaldi import kaldi_dir_utils
label_desc: Use image node_id 4 for calling the SpeakerClsTaskTest obj's underlying member method code with example usage: obj.test_generate_cmvn() without return types