from pathlib import Path
import argparse
import torch
import torchaudio
from sam_audio import SAMAudio,SAMAudioProcessor
p=argparse.ArgumentParser();p.add_argument('--model',default='facebook/sam-audio-small');p.add_argument('--input',default='input.wav');p.add_argument('--description',default='bell ringing');p.add_argument('--output',default='model-output');a=p.parse_args()
root=Path(__file__).resolve().parent
model=SAMAudio.from_pretrained(a.model).eval().cuda()
processor=SAMAudioProcessor.from_pretrained(a.model)
batch=processor(audios=[str((root/a.input).resolve())],descriptions=[a.description]).to('cuda')
with torch.inference_mode():result=model.separate(batch,predict_spans=False,reranking_candidates=1)
out=root/a.output;out.mkdir(parents=True,exist_ok=True)
torchaudio.save(str(out/'target.wav'),result.target.cpu(),processor.audio_sampling_rate)
torchaudio.save(str(out/'residual.wav'),result.residual.cpu(),processor.audio_sampling_rate)
print(out)
