API details.
Some audio data urls:
URLs.AUDIOMDPI = 'https://zenodo.org/record/3562442'
URLs.MARCO = URLs.AUDIOMDPI # just a shorthand alias I'm more likely to remember
URLs.SIGNALTRAIN_LA2A_1_1 = 'https://zenodo.org/record/3824876'
URLs.SIGNALTRAIN_LA2A_REDUCED = 'http://hedges.belmont.edu/data/SignalTrain_LA2A_Reduced.tgz'
print(URLs.MARCO)
print(zenodo_url_to_data_url(URLs.MARCO))
print(URLs.SIGNALTRAIN_LA2A_1_1)
print(zenodo_url_to_data_url(URLs.SIGNALTRAIN_LA2A_1_1))
Try downloading a sample .tgz file
path_st = get_audio_data(URLs.SIGNALTRAIN_LA2A_REDUCED)
path_st
And try downloading from a Zenodo URL:
path_audiomdpi = get_audio_data(URLs.MARCO)
path_audiomdpi
Let's use this data as an example and take a look at it:
path_audiomdpi.ls()
We'll grab the LeslieHorn
subset
horn = path_audiomdpi / "LeslieHorn"; horn.ls()
path_dry = horn /'dry'
#path_trem = horn / 'tremolo'
audio_extensions = ['.m3u', '.ram', '.au', '.snd', '.mp3','.wav']
fnames_dry = get_files(path_dry, extensions=audio_extensions)
waveform, sample_rate = torchaudio.load(fnames_dry[0])
Let's take a look at it:
show_audio(waveform, sample_rate)
show_audio(waveform, sample_rate, info=False, play=False, plots=['melspec'], ref=1)
num_channels = 5
n = waveform.shape[-1]*3
waveform2 = torch.zeros((num_channels,n))
for c in range(num_channels):
start = int(np.random.rand()*waveform.shape[-1]*(2))
this_waveform, _ = torchaudio.load(fnames_dry[c])
waveform2[c, start:start+waveform.shape[-1]] = this_waveform
show_audio(waveform2, sample_rate)
Tests for that:
fn_list = ['input_21-0_.wav', 'input_21-1_.wav', 'input_21-hey_.wav', 'input_22_.wav', 'input_23_.wav', 'input_23-toms_.wav', 'input_24-0_.wav', 'input_24-kick_.wav']
print(fn_list)
track = fn_list[1]
print("getting matching tracks for ",track)
tracks = get_accompanying_tracks(fn_list[1], fn_list, remove=True)
print("Accompanying tracks are: ",tracks)
print("new list = ",fn_list) # should have the extra 21- tracks removed.