Spaces:
No application file
No application file
| import gc | |
| import os.path | |
| import diffusers | |
| import torch.cuda | |
| import transformers | |
| import librosa | |
| model: diffusers.AudioLDM2Pipeline = None | |
| loaded = False | |
| device: str = None | |
| models = ['cvssp/audioldm2', 'cvssp/audioldm2-large', 'cvssp/audioldm2-music'] | |
| def create_model(pretrained='cvssp/audioldm2', map_device='cuda' if torch.cuda.is_available() else 'cpu'): | |
| if is_loaded(): | |
| delete_model() | |
| global model, loaded, device | |
| try: | |
| cache_dir = os.path.join('data', 'models', 'audioldm') | |
| model = diffusers.AudioLDM2Pipeline.from_pretrained(pretrained, cache_dir=cache_dir).to(map_device) | |
| device = map_device | |
| loaded = True | |
| except: | |
| pass | |
| def is_loaded(): | |
| return loaded | |
| def delete_model(): | |
| global model, loaded, clap_model, processor, device | |
| try: | |
| del model | |
| gc.collect() | |
| torch.cuda.empty_cache() | |
| loaded = False | |
| device = None | |
| except: | |
| pass | |
| def generate(prompt='', negative_prompt='', steps=10, duration=5.0, cfg=2.5, seed=-1, callback=None): | |
| if is_loaded(): | |
| try: | |
| sample_rate = 16000 | |
| seed = seed if seed >= 0 else torch.seed() | |
| torch.manual_seed(seed) | |
| output = model(prompt=prompt, negative_prompt=negative_prompt, audio_length_in_s=duration, num_inference_steps=steps, guidance_scale=cfg, callback=callback) | |
| waveforms = output.audios | |
| waveform = waveforms[0] | |
| return seed, (sample_rate, waveform) | |
| except Exception as e: | |
| return f'An exception occurred: {str(e)}' | |
| return 'No model loaded! Please load a model first.' | |