Download third_party/DiffSynth-Studio/diffsynth/utils/demucs/__init__.py from ouzhang57/VGen: direct link, hf CLI and curl.
- Browser
- Download file 1.08 kB
-
https://huggingface.co/ouzhang57/VGen/resolve/main/third_party/DiffSynth-Studio/diffsynth/utils/demucs/__init__.py
- Command line
-
hf download hf://ouzhang57/VGen/third_party/DiffSynth-Studio/diffsynth/utils/demucs/__init__.py
-
curl -L -o __init__.py https://huggingface.co/ouzhang57/VGen/resolve/main/third_party/DiffSynth-Studio/diffsynth/utils/demucs/__init__.py
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) | |
| 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 | |