谷歌魔改「世上只有妈妈好」:随便你跑调,配不出BGM算我输
新智元报道
新智元报道
【新智元导读】再也不用害怕唱歌跑调了!(是调跑了。)
Google最近发布了一个全新的伴奏生成模型SingSong,用户先唱歌,再给你自动生成一个伴奏,这下不是跑调了,而是调跑了!
论文链接:https://arxiv.org/abs/2301.12662
演示链接:https://storage.googleapis.com/sing-song/index.html
拿一首Steven A. Clark的Bounty为例,先听一下从原曲中分离的人声。
再听听SingSong根据人声生成伴奏,感觉还挺和谐吧?
不过在原曲里,可以明显听出两首伴奏风格完全不同。
再上一个random生成的伴奏,就能对比出SingSong还是有点东西的。
即便对于非专业歌手演唱的歌曲,SingSong依然可以生成一个相对合理的伴奏,下面请欣赏「世上只有妈妈好」变调版。
SingSong的技术基础建立在与人声分离的伴奏以及音频生成模型,具体来说,就是在一个大规模的音乐音频语料库上用一个最先进的分离算法,获取对齐的伴奏和人声的训练语料。
然后将人声作为条件输入到AudioLM,在训练数据上完成训练后即可对新输入的人声进行生成,不过其中也有一些细节难题需要解决。
最后在人类听众的实验中,虽然SingSong生成的伴奏仍然比原曲的效果差,不过相比其他基线模型来说SingSong明显更受听众的欢迎。
让AI为你伴奏
让AI为你伴奏
唱歌基本算是一项「零门槛」参与音乐的途径,不管是否专门从事音乐行业的人都能来两嗓子(好不好听另说...)
一般放着伴奏唱歌,但要是根据唱出来的歌来生成伴奏,那岂不就是创造音乐了?
SingSong模型可以根据输入的人声来生成伴奏,以一种另类的方式让你不跑调。
SingSong模型主要包括两部分:音源分离和音频的生成模型。
根据现成的音源分离算法,将一个大规模且多样化的音乐语料库(包含100万条音频)分离成人声和伴奏的数据对,作为训练任务的平行语料。
然后使用音频生成模型AudioLM对输出的伴奏进行调整,以有监督的方式对分离出的源数据进行训练,使伴奏能够适用于给定的人声。
这项工作的一个关键难点在于:如何才能建立一个系统,使之能够从训练期间观察到的「与声源分离的人声输入」泛化为「现实世界的、孤立(isolated)的人声输入」,这也是用户使用该系统的目标场景,毕竟实际使用时也不可能放一个其他的伴奏再分离,不然唱的歌都跑偏了。
根据初步实验展现的结果,模型对从声源分离的人声中几乎听不到artifacts,但在输入孤立的人声时经常会生成无意义的输出。
为了提高模型的泛化性,研究人员为输入的人声提出了两种特征化策略:
1. 在人声输入中加入噪声以掩盖artifacts;
2. 只使用AudioLM中最粗粒度(coarest)的中间表征作为条件输入。
对于目标,重新使用AudioLM的离散特征化方案,从预训练的w2v-BERT模型中提取语义编码,从预训练的SoundStream编解码器中提取粗略的声学编码,然后选择一个编码器-解码器Transformer模型T5进行训练以预测给定输入编码的目标编码。
在训练过程中,在离散的音频特征而非波形上计算损失。
在推理过程中,用该模型生成粗声码,然后用一个单独训练的模型生成更精细的声音编码,最后用SoundStream对二者进行解码。
实验部分
实验部分
数据集
SingSong的训练集由100万个纯音频源组成,包括4600小时的音乐,预处理时将音源重新采样到44.1kHz,并将立体声混音平均到单声道。
需要注意的是,预处理对于预训练SoundStream和w2v-BERT与训练SingSong是不同的。
对于SoundStream和w2v-BERT,将混音重新采样到16kHz,提取不重叠的30s片段,并对所有片段进行预训练。
训练SingSong时,进一步预处理,从每个混音中提取不重叠的10s片段,并将结果片段输入到MDXNet的声源分离算法(该算法在44.1kHz下运行)以提取人声。从原始混音中减去源分离的人声,得到相应的源分离的伴奏。
最后将人声和伴奏片段重新采样到16kHz,以符合SoundStream和w2v-BERT的采样率。
为了评估模型在隔离人声上的表现,研究人员使用了MUSDB18数据集,其中包含了10小时的专业工作室录制的隔离的人声和纯伴奏的150个混合源。
从每个混音中找出非重叠的10s片段,获得了1232个片段用于训练集,778个片段用于测试集。
实验结果
在定量评估中使用Frechet Audio Distance(FAD)评价指标,其中i代表独立的人声,s代表分离的人声。
由于FADi更符合预期的使用情况,而FADs则更接近于模型的训练方式,因此两者之间存在着泛化差距(∆)。
可以看到,在输入的人声中加入噪音(Noisy),去除人声声学编码(S-SA),以及增加模型大小(XL)都有助于改善对孤立的人声输入的生成(FADi)。
进一步,研究人员对输入的人声进行了不同的特征化实验以提高系统的泛化能力,从实验结果中可以发现:
Noisy在人声输入中加入白噪声可以以掩盖声源分离的缺陷;从默认的AudioLM featurization(SA-SA)中去除人声的声学编码可以产生了强大的泛化能力。
也就是说,当在MUSDB18-dev上评估孤立的和源分离的人声时,用这种特征化训练的结果可以产生几乎相同的FAD值。
听众研究
研究人员同样找了一些人类听众来评估模型的效果,每次向听众展示了两个具有相同人声的10秒伴奏,与其他基线的伴奏相比,听众对来自SingSong的乐器表现出明显的偏好。
此外,即使与歌曲原伴奏相比,也有34%的听众更喜欢SingSong生成的伴奏。
微信扫码关注该文公众号作者