Spaces:
Building
Building
from batch_processing import Batch | |
import argparse | |
import sys | |
from pathlib import Path | |
from gyraudio.audio_separation.properties import CLEAN, NOISY, MIXED, PATHS, BUFFERS, NAME, SAMPLING_RATE | |
from gyraudio.io.audio import load_audio_tensor | |
def parse_command_line_audio_load() -> argparse.ArgumentParser: | |
parser = argparse.ArgumentParser(description='Batch audio processing', | |
formatter_class=argparse.ArgumentDefaultsHelpFormatter) | |
parser.add_argument("-preload", "--preload", action="store_true", help="Preload audio files") | |
return parser | |
def outp(path: Path, suffix: str, extension=".wav"): | |
return (path.parent / (path.stem + suffix)).with_suffix(extension) | |
def load_buffers(signal: dict, device="cpu") -> None: | |
clean_signal, sampling_rate = load_audio_tensor(signal[PATHS][CLEAN], device=device) | |
noisy_signal, sampling_rate = load_audio_tensor(signal[PATHS][NOISY], device=device) | |
mixed_signal, sampling_rate = load_audio_tensor(signal[PATHS][MIXED], device=device) | |
signal[BUFFERS] = { | |
CLEAN: clean_signal, | |
NOISY: noisy_signal, | |
MIXED: mixed_signal | |
} | |
signal[SAMPLING_RATE] = sampling_rate | |
def audio_loading(input: Path, preload: bool) -> dict: | |
name = input.name | |
clean_audio_path = input/"voice.wav" | |
noisy_audio_path = input/"noise.wav" | |
mixed_audio_path = list(input.glob("mix*.wav"))[0] | |
signal = { | |
NAME: name, | |
PATHS: { | |
CLEAN: clean_audio_path, | |
NOISY: noisy_audio_path, | |
MIXED: mixed_audio_path | |
} | |
} | |
signal["premixed_snr"] = float(mixed_audio_path.stem.split("_")[-1]) | |
if preload: | |
load_buffers(signal) | |
return signal | |
def audio_loading_batch(input: Path, args: argparse.Namespace) -> dict: | |
"""Wrapper to load audio files from a directory using batch_processing | |
""" | |
return audio_loading(input, preload=args.preload) | |
def main(argv): | |
batch = Batch(argv) | |
batch.set_io_description( | |
input_help='input audio files', | |
output_help=argparse.SUPPRESS | |
) | |
parser = parse_command_line_audio_load() | |
batch.parse_args(parser) | |
all_signals = batch.run(audio_loading_batch) | |
return all_signals | |
if __name__ == "__main__": | |
main(sys.argv[1:]) | |