“再多看一眼就会爆炸,再靠近点就快被融化”到底是个什么感觉?
(这是一句《只因你太美》中的歌词)
(资料图片)
下面的音乐或许能让你体会到这种“从来未有”的feel,坤坤听了都会直呼内行。
这段音乐来自Meta最新推出的文生音乐工具MusicGen。
只需要输入一段文字 ,点击生成按钮就能得到一段最长30秒的音乐,而且支持中文。
不懂乐理也没关系,MusicGen还可以 上传已有的音乐 作为参照。
比如上面这段音乐就是结合了原曲旋律重新生成的。
如果你实在不知道怎么prompt,也可以像这位网友一样问问ChatGPT:
无论是国风还是摇滚风都能轻松驾驭,甚至是两者结合。
哪怕国风伴奏也难不倒MusicGen。
测试结果显示,MusicGen的综合评分比谷歌的MusicLM高出了5.36%。
有网友给出了详细的测评体验:
这个模型似乎没有专门针对乐队名称进行训练,但用已有的风格生成音乐时表现非常好。
…… 尽管(项目)网站中的示例是(开发者)挑选过的,但这并不能否定它可以生成好的作品。
如何实现
音乐的合成涉及多段旋律以及多种音色(乐器)之间的协调。
而不同于语音合成,人类对音乐之中的不和谐因素更为敏感。
那么MusicGen是如何完成这一复杂任务的呢?
我们先来看看它的训练数据。
Meta团队一共使用了两万小时的音乐。
这之中包括一万条内部搜集的高质量音轨以及ShutterStock和Pond5素材库中的数据。
来自后两者的数据量分别为2.5万和36.5万。
这些音乐数据在32kHz下被重新采样,都配有流派、BPM等基本信息和复杂一些的文字说明。
除了上述训练数据,Meta团队还准备了评价数据集MusicCaps。
MusicCaps由5500条专业作曲家谱写的10秒长的音乐构成,其中包括一千条平衡各个音乐流派的子集。
说完训练数据,我们来具体看看MusicGen的工作流程。
第一步是将声音信息转化为token。
这一步使用的是Meta去年研发的卷积网络编码器EnCodec。
至于编码方式,Meta团队通过实验对四种不同的方式进行了测试。
最终,团队选择了延时模式(下图右下)并进行了精准建模。
最核心的Transformer部分,团队训练了300M、1.5B、3.3B三个不同参数量的自回归式Transformer。
在混合精度下,训练上述三个参数量的Transformer分别使用了32、64和96块GPU。
对于文字处理,在评估了多个前人成果后Meta团队最终选用了Google团队2020年提出的T5模型。
对于音乐旋律的调整,团队选用了无监督的方式进行,规避了监督数据不佳导致的过拟合问题。
最终,Transformer输出的数据被转换为对数形式,然后根据编码本生成最终的成品。
体验方式
目前,想要体验MusicGen,一共有三种方式。
第一种方式是 直接用官方在Hugging Face发布的DEMO 。
(传送门见文末)
这种方法操作最为简单,点进链接就能用。
缺点是得排队,有时候还会赶上服务器被挤爆、重新building等情况。
第二种是 通过谷歌Colab 搭建。
比第一种多了个一键部署的步骤,不过也比较简单,官方已经把部署要用的代码准备好了。
(传送门见文末)
进入之后,点击左上角的运行按钮即可完成一键部署,然后会得到一个专属链接,点进去就可以体验了。
不过这种操作方式需要谷歌账号才能用。
第三种方式则是 自行部署 。
你需要有足够性能的GPU,且已经安装了PyTorch2.0或以上版本。
使用下面的命令即可完成安装:
#Besttomakesureyouhavetorchinstalledfirst,inparticularbeforeinstallingxformers.
#Don"trunthisifyoualreadyhavePyTorchinstalled.pipinstall"torch>=2.0"#Thenproceedtooneofthefollowingpipinstall-Uaudiocraft#stablereleasepipinstall-Ugit+https://git@github.com/facebookresearch/audiocraft#egg=audiocraft#bleedingedgepipinstall-e.#orifyouclonedtherepolocally安装好后,使用【python app.py】命令即可运行。