MusicGen音乐生成AI模型
你是否曾梦想过创作一首歌曲,但却没有足够的预算预订音乐工作室?那么,借助人工智能的力量,这个梦想可以变成现实。当我第一次发现 SunoAI(一种允许用户创作自己音乐的生成式AI工具)时,我对这项技术的强大功能着迷。这启发我探索生成式AI模型,并最终开发自己的AI音乐生成工具。
1、Facebook MusicGen
Facebook AI 推出了一个名为 facebook/musicgen-small
的开源预训练模型。该模型是一种称为 Transformer 的神经网络架构,擅长处理音乐等顺序数据。在训练过程中,该模型会接触到大量的音乐信息,从而学习音乐创作的复杂性。
我们将使用的“小型”版本在效率和能力之间取得了良好的平衡。还有“中型”和“大型”版本可供选择,它们可以创作出更加细微和复杂的音乐,但它们需要更多的计算资源才能运行。
2、Python 设置
Python 设置是一个相当大的挑战。为了能够生成音乐,我们需要 torchaudio、audiocraft 和 ipywidgets 等库。最好在虚拟环境中安装这些库,因为获取相互兼容的版本可能很复杂。我使用的是 Python 3.9,我的 requirements.txt
文件如下所示:
av
einops
flashy>=0.0.1
hydra-core>=1.1
hydra_colorlog
julius
num2words
numpy
sentencepiece
spacy>=3.6.1
torch==2.1.0
torchaudio>=2.0.0,<2.1.2
huggingface_hub
tqdm
transformers>=4.31.0
xformers<0.0.23
demucs
librosa
gradio
torchmetrics
encodec
protobuf
2.1 导入
首先,导入所需的库以及预先训练的 MusicGen 模型:
import audiocraft
from audiocraft.models import MusicGen
model = MusicGen.get_pretrained('facebook/musicgen-small')
通过提供文本提示,例如“古典摇滚”,我们可以引导这个强大的模型生成反映指定流派的独特音乐
本分步教程将指导你完成使用 Python 库通过预训练模型生成摇滚歌曲的过程。
2.2 配置模型参数
我们使用 model.set_generation_params(duration=10)
设置持续时间参数。这决定了生成的音乐的长度(以秒为单位)。你可以调整此值以尝试不同的音乐长度。
model.set_generation_params(duration=10)
2.3 生成
这是你指定要生成哪种音乐的步骤。从古典到流行,从嘻哈到摇滚,你可以指定任何流派,甚至可以指定简短的文字描述,以查看生成的音乐如何变化。该模型将使用其现有的音乐知识和提供的流派描述来创作独特的作品。
print("Generating music...")
results = model.generate(['classical rock'])
sampling_rate = model.sample_rate
2.4 保存音乐文件
最后,我们可以使用 scipy
库将生成的音乐保存为 .wav
文件。
from scipy.io.wavfile import write
write("rock.wav", sampling_rate, (results[0].numpy()).T)
这不是很酷吗?
3、未来的步骤
现在我已经发现了 MusicGen,我正在开发一个带有 GUI 的 Flask Web 应用程序,它允许用户输入提示并直接在浏览器中听到生成的音乐。你尝试过任何类似的有趣的 AI 模型吗?
原文链接:Generating Music using AI and Python!
汇智网翻译整理,转载请标明出处