code: def testSyntheticVibrato(self):
      fs = 100  # Hz
      f0 = 100  # Hz
      extent = 5  # Hz
      vibrato = 5  # Hz
  
      x = [f0] * 1024 + extent * sin(
          2 * pi * vibrato * arange(1024) / fs
      )
  
      vibratoEst, extentEst = Vibrato(sampleRate=fs)(x.astype(float32))
  
      self.assertAlmostEqual(vibrato, mean(vibratoEst[3:-3]), 1)
  
      extentCents = 1200 * log2((f0 + extent) / float(f0 - extent))
      self.assertAlmostEqual(extentCents, mean(extentEst[3:-3]), 1e-1)
  
file_path: essentia/test/src/unittests/tonal/test_vibrato.py
imports: from essentia_test import *
  from numpy import sin, float32, pi, arange, mean, log2, floor, ceil
label_desc: Use image node_id 6 for calling the TestVibrato obj's underlying member method code with example usage: obj.testSyntheticVibrato() without return types