def test_raises_when_scale_factors_is_not_a_collection_or_float(self): sr = SR22050() band = FrequencyBand(1, sr.nyquist) scale = MelScale(band, 512) scale_factors = object() self.assertRaises( TypeError, lambda: morlet_filter_bank(sr, 512, scale, scale_factors))
def test_raises_when_scale_factors_length_does_not_match_scale(self): sr = SR22050() band = FrequencyBand(1, sr.nyquist) scale = MelScale(band, 512) scale_factors = np.linspace(0.1, 1.0, len(scale) // 2) self.assertRaises( ValueError, lambda: morlet_filter_bank(sr, 512, scale, scale_factors))
def test_dimensions_are_correct(self): sr = SR22050() band = FrequencyBand(1, sr.nyquist) scale = MelScale(band, 128) scale_factors = np.linspace(0.1, 1.0, len(scale)) filter_bank = morlet_filter_bank(sr, 512, scale, scale_factors) self.assertEqual((128, 512), filter_bank.shape) expected_freq_dimension = FrequencyDimension(scale) expected_time_dimension = TimeDimension(*sr) self.assertEqual(expected_freq_dimension, filter_bank.dimensions[0]) self.assertEqual(expected_time_dimension, filter_bank.dimensions[1])
def test_filters_are_normalized(self): sr = SR22050() band = FrequencyBand(1, sr.nyquist) scale = MelScale(band, 128) scale_factors = np.linspace(0.1, 1.0, len(scale)) filter_bank = morlet_filter_bank(sr, 512, scale, scale_factors, normalize=True) norms = np.linalg.norm(filter_bank, axis=-1) np.testing.assert_allclose(norms, 1.0, rtol=1e-6)