code: def testSilentFrames(self):
      input = [0] * 1024 * 3  # 3 frames of 1024
      gen = VectorInput(input)
      pool = Pool()
      expectedFrames = 5
  
      # adding noise
      frameCutter = es.FrameCutter(
          frameSize=1024,
          hopSize=512,
          startFromZero=True,
          silentFrames="noise",
      )
  
      gen.data >> frameCutter.signal
      frameCutter.frame >> (pool, "frames")
      run(gen)
      self.assertEqual(len(pool["frames"]), expectedFrames)
      energy = std.Energy()
      for f in pool["frames"]:
          self.assertTrue(essentia._essentia.isSilent(f))
          self.assertTrue(energy(f) != 0)
  
      pool.remove("frames")
      reset(gen)
  
      # keep silent frames
      frameCutter.configure(
          frameSize=1024,
          hopSize=512,
          startFromZero=True,
          silentFrames="keep",
      )
  
      run(gen)
  
      self.assertEqual(len(pool["frames"]), expectedFrames)
      energy = std.Energy()
      for f in pool["frames"]:
          self.assertTrue(essentia._essentia.isSilent(f))
          self.assertTrue(energy(f) == 0)
  
      pool.remove("frames")
      reset(gen)
  
      # drop silent frames
      frameCutter.configure(
          frameSize=1024,
          hopSize=512,
          startFromZero=True,
          silentFrames="drop",
      )
  
      run(gen)
      self.assertTrue(len(pool.descriptorNames()) == 0)
  
imports: from essentia_test import *
  import essentia
  import essentia.streaming
  import essentia.standard
label_desc: Use image node_id 31 for calling the TestFrameCutter_Streaming obj's underlying member method code with example usage: obj.testSilentFrames() without return types