class_docstr: test speech feat ops
class_docstr_tok: ["test","speech","feat","ops"]
docstr: test batch splice frame 
docstr_tok: ["test","batch","splice","frame"]
code: def test_splice(self):
      """test batch splice frame"""
      with self.cached_session(use_gpu=False, force_gpu=False):
          feat = tf.ones([1, 3, 2], dtype=tf.float32)
  
          for l_ctx in range(0, 4):
              for r_ctx in range(0, 4):
                  ctx = l_ctx + 1 + r_ctx
                  out = tffeat.splice(
                      feat, left_context=l_ctx, right_context=r_ctx
                  )
                  self.assertTupleEqual(
                      out.eval().shape, (1, 3, 2 * ctx)
                  )
                  self.assertAllEqual(out, tf.ones([1, 3, 2 * ctx]))
  
          with self.assertRaises(tf.errors.InvalidArgumentError):
              out = tffeat.splice(
                  feat, left_context=-2, right_context=-2
              ).eval()
  
          with self.assertRaises(tf.errors.InvalidArgumentError):
              out = tffeat.splice(
                  feat, left_context=2, right_context=-2
              ).eval()
  
          with self.assertRaises(tf.errors.InvalidArgumentError):
              out = tffeat.splice(
                  feat, left_context=-2, right_context=2
              ).eval()
  
file_path: delta/delta/data/feat/speech_ops_test.py
imports: import os
  from pathlib import Path
  import numpy
  import delta.compat
  from absl import logging
  from delta.data.feat.speech_feature import load_wav
  from delta.data.feat import speech_ops
  from delta import PACKAGE_ROOT_DIR
label_desc: Use image node_id 9 for calling the SpeechOpsFeatTest obj's underlying member method code with example usage: obj.test_splice() without return types