| import argparse |
| from pathlib import Path |
| import warnings |
|
|
| from pydub import AudioSegment |
|
|
| from app.service.vocal_remover.runner import load_model, separate |
| from app.service.demucs_runner import separator |
|
|
| warnings.simplefilter("ignore", UserWarning) |
| warnings.simplefilter("ignore", FutureWarning) |
| warnings.filterwarnings("ignore", module="streamlit") |
|
|
|
|
| def convert_to_mp3(input_file, output_file): |
| audio = AudioSegment.from_file(input_file) |
| audio.export(output_file, format="mp3") |
|
|
|
|
| def main(): |
| p = argparse.ArgumentParser() |
| p.add_argument("--gpu", "-g", type=int, default=-1) |
| p.add_argument("--pretrained_model", "-P", type=str, default="baseline.pth") |
| p.add_argument("--input", "-i", required=True) |
| p.add_argument("--output_dir", "-o", type=str, default="") |
| p.add_argument("--full_mode", "-n", default=False) |
| args = p.parse_args() |
| print(args) |
| input_file = args.input |
| full_mode = bool(args.full_mode) |
| model, device = load_model(pretrained_model=args.pretrained_model) |
|
|
| if full_mode: |
| separate( |
| input=input_file, |
| model=model, |
| device=device, |
| output_dir=args.output_dir, |
| ) |
| for stem, model_name in [("vocals", "htdemucs"), (None, "htdemucs"), (None, "htdemucs_6s")]: |
| separator( |
| tracks=[Path(input_file)], |
| out=Path(args.output_dir), |
| model=model_name, |
| shifts=1, |
| overlap=0.5, |
| stem=stem, |
| int24=False, |
| float32=False, |
| clip_mode="rescale", |
| mp3=True, |
| mp3_bitrate=320, |
| verbose=False, |
| ) |
| else: |
| separate( |
| input=input_file, |
| model=model, |
| device=device, |
| output_dir=args.output_dir, |
| only_no_vocals=True, |
| ) |
| convert_to_mp3(input_file, input_file) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|