import demucs.separate import shutil import argparse import shutil from log import log_step from genericpath import exists try: # Create the parser parser = argparse.ArgumentParser(description="dubstudio audio separator tool (v1.0) - V. BOULANGER - 2025") # Options definition parser.add_argument('-a', '--audio', help='Audio file to process', default='audio.wav') parser.add_argument('-f', '--folder', help="Output folder name where the WAV audio files will be stored", default='artifacts') parser.add_argument('-m', '--model', help="Separation model to use for processing the audio", default='htdemucs') # Options analyzing args = parser.parse_args() log_step('start', 100, { "audioFile": args.audio, "outputFolder": args.folder, "model": args.model, }) # Separate vocals with progress demucs.separate.main([ "--two-stems", "vocals", "--filename", "{stem}.wav", "-n", args.model, "--float32", "--out", args.folder, args.audio ]) except KeyboardInterrupt: # Delete the output folder log_step("exit", 100, "program exit") except Exception as e: log_step("error", 100, str(e))