Spaces:
Running
Running
import os | |
import json | |
from torch.utils.data import DataLoader | |
import soundfile as sf | |
import tqdm | |
from dataloader import DelimitValidDataset | |
def main(): | |
# Parameters | |
data_path = "/path/to/musdb18hq" | |
save_path = ( | |
"/path/to/musdb18hq_custom_limiter_fixed_attack" | |
) | |
batch_size = 1 | |
num_workers = 1 | |
sr = 44100 | |
# Dataset | |
dataset = DelimitValidDataset( | |
root=data_path, use_custom_limiter=True, custom_limiter_attack_range=[2.0, 2.0] | |
) | |
data_loader = DataLoader( | |
dataset, batch_size=batch_size, num_workers=num_workers, shuffle=False | |
) | |
dict_valid_loudness = {} | |
dict_limiter_params = {} | |
# Preprocessing | |
for ( | |
limited_audio, | |
orig_audio, | |
audio_name, | |
loudness, | |
custom_attack, | |
custom_release, | |
) in tqdm.tqdm(data_loader): | |
audio_name = audio_name[0] | |
limited_audio = limited_audio[0].numpy() | |
loudness = float(loudness[0].numpy()) | |
dict_valid_loudness[audio_name] = loudness | |
dict_limiter_params[audio_name] = { | |
"attack_ms": float(custom_attack[0].numpy()), | |
"release_ms": float(custom_release[0].numpy()), | |
} | |
# Save audio | |
os.makedirs(os.path.join(save_path, "valid"), exist_ok=True) | |
audio_path = os.path.join(save_path, "valid", audio_name) | |
sf.write(f"{audio_path}.wav", limited_audio.T, sr) | |
# write json write code | |
with open(os.path.join(save_path, "valid_loudness.json"), "w") as f: | |
json.dump(dict_valid_loudness, f, indent=4) | |
with open(os.path.join(save_path, "valid_limiter_params.json"), "w") as f: | |
json.dump(dict_limiter_params, f, indent=4) | |
if __name__ == "__main__": | |
main() | |