Views
No views yet
python -m demos.musicgen_app --share, or through a MusicGen Colab.demos/musicgen_demo.ipynb locally (if you have a GPU).1import torchaudio
2from audiocraft.models import MusicGen, MultiBandDiffusion
3from audiocraft.data.audio import audio_write
4
5model = MusicGen.get_pretrained('facebook/musicgen-melody')
6mbd = MultiBandDiffusion.get_mbd_musicgen()
7model.set_generation_params(duration=8) # generate 8 seconds.
8wav, tokens = model.generate_unconditional(4, return_tokens=True) # generates 4 unconditional audio samples and keep the tokens for MBD generation
9descriptions = ['happy rock', 'energetic EDM', 'sad jazz']
10wav_diffusion = mbd.tokens_to_wav(tokens)
11wav, tokens = model.generate(descriptions, return_tokens=True) # generates 3 samples and keep the tokens.
12wav_diffusion = mbd.tokens_to_wav(tokens)
13melody, sr = torchaudio.load('./assets/bach.mp3')
14# Generates using the melody from the given audio and the provided descriptions, returns audio and audio tokens.
15wav, tokens = model.generate_with_chroma(descriptions, melody[None].expand(3, -1, -1), sr, return_tokens=True)
16wav_diffusion = mbd.tokens_to_wav(tokens)
17
18for idx, one_wav in enumerate(wav):
19 # Will save under {idx}.wav and {idx}_diffusion.wav, with loudness normalization at -14 db LUFS for comparing the methods.
20 audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)
21 audio_write(f'{idx}_diffusion', wav_diffusion[idx].cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)1import torch
2from audiocraft.models import MultiBandDiffusion
3from encodec import EncodecModel
4from audiocraft.data.audio import audio_read, audio_write
5
6bandwidth = 3.0 # 1.5, 3.0, 6.0
7mbd = MultiBandDiffusion.get_mbd_24khz(bw=bandwidth)
8encodec = EncodecModel.get_encodec_24khz()
9
10somepath = ''
11wav, sr = audio_read(somepath)
12with torch.no_grad():
13 compressed_encodec = encodec(wav)
14 compressed_diffusion = mbd.regenerate(wav, sample_rate=sr)
15
16audio_write('sample_encodec', compressed_encodec.squeeze(0).cpu(), mbd.sample_rate, strategy="loudness", loudness_compressor=True)
17audio_write('sample_diffusion', compressed_diffusion.squeeze(0).cpu(), mbd.sample_rate, strategy="loudness", loudness_compressor=True)1# 4 bands MBD trainning
2dora grid diffusion.4_bands_base_32khz@article{sanroman2023fromdi,
title={From Discrete Tokens to High-Fidelity Audio Using Multi-Band Diffusion},
author={San Roman, Robin and Adi, Yossi and Deleforge, Antoine and Serizel, Romain and Synnaeve, Gabriel and Défossez, Alexandre},
journal={arXiv preprint arXiv:},
year={2023}
}