def test_mixer(feature_extractor, decimal, exception_expectation): # Treat it more like a test of "it runs" rather than "it works" sr = 8000 t = np.linspace(0, 1, 8000, dtype=np.float32) x1 = np.sin(440.0 * t).reshape(1, -1) x2 = np.sin(55.0 * t).reshape(1, -1) f1 = feature_extractor.extract(x1, sr) f2 = feature_extractor.extract(x2, sr) with exception_expectation: mixer = FeatureMixer( feature_extractor=feature_extractor, base_feats=f1, frame_shift=feature_extractor.frame_shift, ) mixer.add_to_mix(f2, sampling_rate=sr) fmix_feat = mixer.mixed_feats fmix_time = feature_extractor.extract(x1 + x2, sr) np.testing.assert_almost_equal(fmix_feat, fmix_time, decimal=decimal) assert mixer.unmixed_feats.shape == ( 2, 100, feature_extractor.feature_dim(sampling_rate=sr), )
def test_feature_mixer_handles_empty_array(): # Treat it more like a test of "it runs" rather than "it works" sr = 16000 t = np.linspace(0, 1, sr, dtype=np.float32) x1 = np.sin(440.0 * t).reshape(1, -1) fe = Fbank() f1 = fe.extract(x1, sr) mixer = FeatureMixer( feature_extractor=fe, base_feats=f1, frame_shift=fe.frame_shift, ) mixer.add_to_mix(np.array([]), sampling_rate=sr) fmix_feat = mixer.mixed_feats np.testing.assert_equal(fmix_feat, f1)
def test_feature_mixer_handles_empty_array_with_offset(): # Treat it more like a test of "it runs" rather than "it works" sr = 16000 t = np.linspace(0, 1, sr, dtype=np.float32) x1 = np.sin(440.0 * t).reshape(1, -1) fe = Fbank() f1 = fe.extract(x1, sr) mixer = FeatureMixer( feature_extractor=fe, base_feats=f1, frame_shift=fe.frame_shift, ) mixer.add_to_mix(np.array([]), sampling_rate=sr, offset=0.5) fmix_feat = mixer.mixed_feats # time 0s - 1s: identical values np.testing.assert_equal(fmix_feat[:100], f1) # time 1s - 1.5s: padding np.testing.assert_equal(fmix_feat[100:], -1000)