in denoiser/enhance.py [0:0]
def enhance(args, model=None, local_out_dir=None):
# Load model
if not model:
model = pretrained.get_model(args).to(args.device)
model.eval()
if local_out_dir:
out_dir = local_out_dir
else:
out_dir = args.out_dir
dset = get_dataset(args, model.sample_rate, model.chin)
if dset is None:
return
loader = distrib.loader(dset, batch_size=1)
if distrib.rank == 0:
os.makedirs(out_dir, exist_ok=True)
distrib.barrier()
with ProcessPoolExecutor(args.num_workers) as pool:
iterator = LogProgress(logger, loader, name="Generate enhanced files")
pendings = []
for data in iterator:
# Get batch data
noisy_signals, filenames = data
noisy_signals = noisy_signals.to(args.device)
if args.device == 'cpu' and args.num_workers > 1:
pendings.append(
pool.submit(_estimate_and_save,
model, noisy_signals, filenames, out_dir, args))
else:
# Forward
estimate = get_estimate(model, noisy_signals, args)
save_wavs(estimate, noisy_signals, filenames, out_dir, sr=model.sample_rate)
if pendings:
print('Waiting for pending jobs...')
for pending in LogProgress(logger, pendings, updates=5, name="Generate enhanced files"):
pending.result()