Spaces:
Running on Zero
Running on Zero
| import torch | |
| import lightning as L | |
| import config as cfg | |
| from loader import load_model | |
| from utils.audio import load_audio, save_audio | |
| """ | |
| REQUIREMENTS: | |
| weights/ | |
| - encodec_32khz.pt | |
| - lm-small-weights.pt in | |
| checkpoints/ | |
| - stage-drums-ckp1.pt | |
| - stage-bass-ckp1.pt | |
| """ | |
| #%% Load model | |
| INSTRUMENT = "drums" | |
| checkpoint_path = cfg.CKP_DIR / f"stage-{INSTRUMENT}.safetensors" | |
| model = load_model(checkpoint_path) | |
| #%% Load conditioning, generate and save | |
| # load context audio, description | |
| SAMPLE = "sample2" | |
| SEED = 42 | |
| # load description if present | |
| desc_path = cfg.AUDIO_DIR / INSTRUMENT / f"{SAMPLE}-desc.txt" | |
| desc = desc_path.read_text().strip() if desc_path.exists() else None | |
| # load audio context | |
| wav = load_audio(cfg.AUDIO_DIR / INSTRUMENT / f"{SAMPLE}.wav").to(model.device) | |
| # generate | |
| L.seed_everything(SEED) | |
| out = model.generate(n_samples=1, | |
| gen_seconds=10, | |
| prompt=None, | |
| context=wav, | |
| style=None, | |
| beat=None, | |
| description=[desc], | |
| prog_bar=True) | |
| # save output and mix | |
| save_audio(out, cfg.AUDIO_DIR / "gen" / f"{SAMPLE}_{INSTRUMENT}_{SEED}.wav") | |
| padded_wav = torch.nn.functional.pad(wav, | |
| tuple((0, out.shape[-1] - wav.shape[-1])), | |
| value=0) | |
| mix = out + padded_wav | |
| save_audio(mix, cfg.AUDIO_DIR / "gen" / f"{SAMPLE}_{INSTRUMENT}_{SEED}_mix.wav") | |