def test_item_noise_not_applied_in_valid(audio): add_noise = AddNoise(p=1.0) test_aud = AudioTensor(torch.ones_like(audio), 16000) train_out = add_noise(test_aud.clone(), split_idx=0) val_out = add_noise(test_aud.clone(), split_idx=1) _test_ne(test_aud, train_out) _test_eq(test_aud, val_out)
def test_crop_time_after_padding(): sg_orig = test_audio_tensor() a2s = AudioToSpec.from_cfg(AudioConfig.Voice()) sg = a2s(sg_orig) crop_time = CropTime((sg.duration + 5) * 1000, pad_mode=AudioPadType.Zeros_After) inp, out = apply_transform(crop_time, sg.clone()) _test_ne(sg.duration, sg_orig.duration)
def test_padding_after_resize(audio): "Padding is added to the end but not the beginning" new_duration = (audio.duration + 1) * 1000 cropsig_pad_after = ResizeSignal(new_duration, pad_mode=AudioPadType.Zeros_After) # generate a random input signal that is 3s long inp, out = apply_transform(cropsig_pad_after, audio) # test end of signal is padded with zeros _test_eq(out[:, -10:], torch.zeros_like(out)[:, -10:]) # test front of signal is not padded with zeros _test_ne(out[:, 0:10], out[:, -10:])
def test_crop_time_repeat_padding(): "Test that repeat padding works when cropping time" repeat = 3 audio = test_audio_tensor() crop_12000ms_repeat = CropTime(repeat * 1000 * audio.duration, pad_mode=AudioPadType.Repeat) a2s = AudioToSpec.from_cfg(AudioConfig.Voice()) sg = a2s(audio) inp, out = apply_transform(crop_12000ms_repeat, sg) _test_eq(inp.width, sg.width) _test_ne(sg.width, out.width)
def test_delta_channels(): " nchannels for a spectrogram is how many channels its original audio had " delta = Delta() audio = test_audio_tensor(channels=1) a2s = AudioToSpec.from_cfg(AudioConfig.Voice()) sg = a2s(audio) inp, out = apply_transform(delta, sg) _test_eq(out.nchannels, inp.nchannels * 3) _test_eq(out.shape[1:], inp.shape[1:]) _test_ne(out[0], out[1])
def test_signal_cutout(): c, s = 2, 16000 min_cut_pct, max_cut_pct = 0.10, 0.15 # Create tensor with no zeros audio = AudioTensor(torch.rand([c, s]), sr=16000) * 0.9 + 0.1 cutout = SignalCutoutGPU(p=1.0, min_cut_pct=min_cut_pct, max_cut_pct=max_cut_pct) inp, out = apply_transform(cutout, audio) _test_ne(inp.data, out.data) num_zeros = (out == 0).sum() assert min_cut_pct * s * c <= num_zeros <= max_cut_pct * s * c, num_zeros
def test_signal_loss(audio): signalloss = SignalLossGPU(1) inp, out = apply_transform(signalloss, audio) _test_ne(inp.data, out.data)
def test_change_volume(audio): changevol = ChangeVolumeGPU(1) inp, out = apply_transform(changevol, audio) _test_ne(inp.data, out.data)
def test_noise_non_white(audio): # White noise uses a different method to other noises, so test both. addnoise = AddNoiseGPU(color=NoiseColor.Pink, p=1.0, min_level=0.1, max_level=0.2) inp, out = apply_transform(addnoise, audio) _test_ne(inp.data, out.data)
def test_noise_white(audio): addnoise = AddNoiseGPU(color=NoiseColor.White, p=1.0, min_level=0.1, max_level=0.2) inp, out = apply_transform(addnoise, audio) _test_ne(inp.data, out.data)
def test_signal_cutout(audio): cutout = SignalCutout(1) inp, out = apply_transform(cutout, audio) _test_ne(inp.data, out.data)
def test_noise_non_white(audio): addnoise = AddNoise(color=NoiseColor.Pink) inp, out = apply_transform(addnoise, audio) _test_ne(inp.data, out.data)
def test_sg_roll(): roll = SGRoll() audio = test_audio_tensor() a2s = AudioToSpec.from_cfg(AudioConfig.BasicSpectrogram()) inp, out = apply_transform(roll, a2s(audio)) _test_ne(inp, out)
def test_signal_shift_on_sg(): audio = test_audio_tensor() a2s = AudioToSpec.from_cfg(AudioConfig.BasicSpectrogram()) shifter = SignalShifter(1, 1) inp, out = apply_transform(shifter, a2s(audio)) _test_ne(inp, out)