def test_asig_astf(self):
     a = Ugen().square()
     a_stft = a.to_stft()
     a_sig_from_stft = a_stft.to_sig()
     self.assertIsInstance(a, Asig)
     self.assertIsInstance(a_stft, Astft)
     self.assertIsInstance(a_sig_from_stft, Asig)
 def test_asig_aspec(self):
     # Create a signale with 3 sine waves and gaps inbetween,
     # So that it will finds 3 events
     a = Ugen().sine()
     a_spec = a.to_spec()
     a_sig_from_aspec = a_spec.to_sig()
     self.assertIsInstance(a, Asig)
     self.assertIsInstance(a_spec, Aspec)
     self.assertIsInstance(a_sig_from_aspec, Asig)
Пример #3
0
 def test_magspec_pspec(self):
     # Magnitude spectrum
     sq = Ugen().square(freq=20, sr=8000, channels=1)
     frames = signal_to_frame(sq.sig, 400, 400)
     mag = magspec(frames, 512)
     self.assertEqual(mag.shape, (20, 257))
     self.assertTrue((mag >= 0.).all())  # All elements should be non-negative
     ps = powspec(frames, 512)
     self.assertEqual(ps.shape, (20, 257))
     self.assertTrue((ps >= 0.).all())  # All elements should be non-negative
Пример #4
0
class TestAstft(TestCase):
    def setUp(self):
        self.asig = Ugen().sine()
        self.asig2 = Ugen().sine(channels=2, cn=['a', 'b'])
        self.asig_no_name = Ugen().sine(channels=3)

    def tearDown(self):
        pass

    def test_input_as_asig(self):
        astft = self.asig.to_stft()
        self.assertEqual(astft.sr, 44100)
        astft = self.asig.to_stft(sr=2000)
        self.assertEqual(astft.sr, 2000)
        signal = self.asig2.sig

    def test_wrong_input_type(self):
        with self.assertRaises(TypeError):
            asig = Astft(x=3, sr=500)

    def test_multichannel_asig(self):
        # Test conversion of a multi channel asig's astft.
        asine = Ugen().sawtooth(channels=3, cn=['a', 'b', 'c'])
        astft = asine.to_stft()
        self.assertEqual(astft.channels, 3)
        self.assertEqual(len(astft.cn), 3)

    def test_input_as_stft(self):
        sr = 10e3
        N = 1e5
        amp = 2 * np.sqrt(2)
        noise_power = 0.01 * sr / 2
        time = np.arange(N) / float(sr)
        mod = 500 * np.cos(2 * np.pi * 0.25 * time)
        carrier = amp * np.sin(2 * np.pi * 3e3 * time + mod)
        noise = np.random.normal(scale=np.sqrt(noise_power), size=time.shape)
        noise *= np.exp(-time / 5)
        x = carrier + noise
        astft = Astft(x, sr, label="test")

    def test_plot(self):
        self.asig.to_stft().plot()
Пример #5
0
class TestAspec(TestCase):
    def setUp(self):
        self.asig = Ugen().sine()
        self.asig2 = Ugen().sine(channels=2, cn=['a', 'b'])
        self.asig_no_name = Ugen().sine(channels=3)

    def tearDown(self):
        pass

    def test_constructor(self):
        aspec = self.asig.to_spec()
        self.assertEqual(aspec.sr, 44100)
        aspec = self.asig2.to_spec()
        self.assertEqual(aspec.cn, self.asig2.cn)
        # The input can also be just an numpy array
        sig = Ugen().square().sig
        aspec = Aspec(sig, sr=400, label='square', cn=['a'])
        self.assertEqual(aspec.sr, 400)
        self.assertEqual(aspec.label, 'square')
        self.assertEqual(aspec.cn, ['a'])
        with self.assertRaises(TypeError):
            _ = Aspec(x=3)
        print(aspec)

    def test_plot(self):
        self.asig.to_spec().plot()
        self.asig.to_spec().plot(xlim=(0, 0.5), ylim=(0., 1.0))

    def test_cn_conflict(self):
        with warnings.catch_warnings(record=True):
            _ = Aspec(self.asig, cn=['jf', 'dj'])
Пример #6
0
 def test_constructor(self):
     aspec = self.asig.to_spec()
     self.assertEqual(aspec.sr, 44100)
     aspec = self.asig2.to_spec()
     self.assertEqual(aspec.cn, self.asig2.cn)
     # The input can also be just an numpy array
     sig = Ugen().square().sig
     aspec = Aspec(sig, sr=400, label='square', cn=['a'])
     self.assertEqual(aspec.sr, 400)
     self.assertEqual(aspec.label, 'square')
     self.assertEqual(aspec.cn, ['a'])
     with self.assertRaises(TypeError):
         _ = Aspec(x=3)
     print(aspec)
 def test_events(self):
     # Create a signale with 3 sine waves and
     # gaps inbetween, So that it will finds 3 events"""
     a = Ugen().sine()
     a.x[a.samples:] = Asig(0.2)
     a.x[a.samples:] = Ugen().sine(freq=200)
     a.x[a.samples:] = Asig(0.2)
     a.x[a.samples:] = Ugen().sine(freq=20)
     a.x[a.samples:] = Asig(0.2)
     a.find_events(sil_thr=-30, evt_min_dur=0.2, sil_min_dur=0.04)
     self.assertEqual(3, a._['events'].shape[0])
Пример #8
0
 def setUp(self):
     self.test_asig = Ugen().square(freq=20, sr=8000)
     self.test_sig = self.test_asig.sig
Пример #9
0
 def test_plot_with_multichannel(self):
     asig = Ugen().sine(channels=2)
     amfcc = asig.to_mfcc()
     with warnings.catch_warnings(record=True):
         amfcc.plot()
Пример #10
0
 def test_multichannel_asig(self):
     # Test conversion of a multi channel asig's astft.
     asine = Ugen().sawtooth(channels=3, cn=['a', 'b', 'c'])
     astft = asine.to_stft()
     self.assertEqual(astft.channels, 3)
     self.assertEqual(len(astft.cn), 3)
Пример #11
0
 def setUp(self):
     self.asig = Ugen().sine()
     self.asig2 = Ugen().sine(channels=2, cn=['a', 'b'])
     self.asig_no_name = Ugen().sine(channels=3)
Пример #12
0
 def test_signal_to_frame(self):
     sq = Ugen().square(freq=20, sr=8000, channels=1)
     frames = signal_to_frame(sq.sig, 400, 400)
     self.assertEqual(frames.shape, (20, 400))
     frames = signal_to_frame(sq.sig, 400, 200)
     self.assertEqual(frames.shape, (39, 400))