Files
Athena-Deck/separator_worker.py

18 lines
965 B
Python

"""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))