2024-07-20 12:24:31 +01:00
|
|
|
import torchaudio
|
2024-07-20 16:28:16 +01:00
|
|
|
import time
|
2024-07-20 14:46:25 +01:00
|
|
|
from audiocraft.models.musicgen import MusicGen
|
2024-07-20 12:24:31 +01:00
|
|
|
from audiocraft.data.audio import audio_write
|
|
|
|
|
2024-07-20 14:46:25 +01:00
|
|
|
MODEL_NAME = "facebook/musicgen-large"
|
2024-07-20 16:28:16 +01:00
|
|
|
MUSIC_DURATION_SECONDS = 60
|
2024-07-20 12:24:31 +01:00
|
|
|
|
|
|
|
print(f"getting {MODEL_NAME}...")
|
|
|
|
|
2024-07-20 14:46:25 +01:00
|
|
|
model = MusicGen.get_pretrained(MODEL_NAME)
|
2024-07-20 16:28:16 +01:00
|
|
|
model.set_generation_params(duration=MUSIC_DURATION_SECONDS)
|
|
|
|
descriptions = [
|
|
|
|
"gentle, calming lo-fi beats that helps with studying and focusing",
|
|
|
|
"calm, piano lo-fi beats to help with studying and focusing",
|
|
|
|
"gentle lo-fi hip-hop to relax to",
|
|
|
|
"gentle, quiet synthwave lo-fi beats",
|
|
|
|
"morning lo-fi beats"
|
|
|
|
]
|
2024-07-20 12:24:31 +01:00
|
|
|
|
|
|
|
print("model obtained. generating wav files...")
|
|
|
|
|
2024-07-20 16:28:16 +01:00
|
|
|
a = time.time()
|
|
|
|
|
2024-07-20 12:24:31 +01:00
|
|
|
wav = model.generate(descriptions)
|
|
|
|
|
2024-07-20 16:28:16 +01:00
|
|
|
b = time.time()
|
|
|
|
|
|
|
|
print(f"{len(wav)} generated. took {b - a} seconds.")
|
2024-07-20 12:24:31 +01:00
|
|
|
|
|
|
|
for idx, one_wav in enumerate(wav):
|
|
|
|
# Will save under {idx}.wav, with loudness normalization at -14 db LUFS.
|
|
|
|
audio_write(
|
|
|
|
f"{idx}",
|
|
|
|
one_wav.cpu(),
|
|
|
|
model.sample_rate,
|
|
|
|
strategy="loudness",
|
|
|
|
loudness_compressor=True,
|
|
|
|
)
|