"""One native separation process; exact pinned package, no arbitrary model code.""" import json,sys from pathlib import Path from audio_separator.separator import Separator import torch model_dir,model,input_file,output_dir=sys.argv[1:] if not torch.cuda.is_available():raise RuntimeError('CUDA nicht verfügbar; kein stiller CPU-Fallback.') separator=Separator(model_file_dir=model_dir,output_dir=output_dir,output_format='WAV',use_soundfile=True,mdxc_params={'segment_size':256,'override_model_segment_size':False,'batch_size':1,'overlap':2,'pitch_shift':0}) separator.load_model(model) files=separator.separate(input_file) root=Path(output_dir).resolve();names=[] for name in files: path=(root/name).resolve() if path.parent!=root or not path.is_file() or path.suffix.lower()!='.wav':raise RuntimeError('Ungültige Ausgabe.') names.append(path.name) if not names:raise RuntimeError('Keine Spuren erzeugt.') (root/'results.json').write_text(json.dumps(names))