ouzhang57's picture
Upload folder using huggingface_hub (part 10)
4e2a1b3 verified
Raw
History Blame Contribute Delete
1.08 kB
import torch, torchaudio
from diffsynth import load_model, ModelConfig
from diffsynth.models.demucs import HTDemucs
class AudioTrackSeparator(torch.nn.Module):
def __init__(self, torch_dtype=torch.float32, device="cuda", model_config=ModelConfig(model_id="DiffSynth-Studio/Demucs-Repackage", origin_file_pattern="model.safetensors")):
super().__init__()
model_config.download_if_necessary()
self.model = load_model(HTDemucs, model_config.path, torch_dtype=torch_dtype, device=device)
@torch.no_grad()
def __call__(self, audio, target_sample_rate=48000, **kwargs):
if isinstance(audio, str):
audio, sample_rate = torchaudio.load(audio)
else:
audio, sample_rate = audio
audio = audio.to(dtype=next(iter(self.model.parameters())).dtype, device=next(iter(self.model.parameters())).device)
vocals = self.model.extract_track(audio, sample_rate)
if target_sample_rate != 44100:
vocals = torchaudio.functional.resample(vocals, 44100, target_sample_rate)
return vocals