AI搞说唱:双押算什么,我还会4押
<p style="margin:20px 0px">AI 搞说唱:双押算什么,我还会 4 押 | ACL 2021</p><p style="margin:20px 0px">下面这段歌词是 AI 生成的,你敢信?</p><p style="margin:20px 0px">第一段句尾单字押韵,第二段双押,第三段甚至能三押,层层递进。</p><p style="margin:20px 0px">甚至表达出了强烈的情绪,从对长大的地方的回忆讲起,用简朴的菜表现简朴的爱,最后讲到对外婆的思念。</p><p style="margin:20px 0px">我看哭了,你呢?</p><p style="margin:20px 0px">这首歌词的作者是一个叫<strong>DeepRapper</strong> ( 深度说唱 ) 的 AI,由香港科技大学、南京理工、清华、复旦和微软亚洲研究院的研究人员合力打造。</p><p style="margin:20px 0px">为什么叫 Rapper?因为歌词里甚至还考虑到了<strong>速度</strong>和<strong>节奏</strong>。</p><p style="margin:20px 0px">像下图中,括号里是时间戳,标星号的地方就代表重音。</p><p style="margin:20px 0px">生成一篇这样的说唱歌词,只需要给出开头第一句,剩下的都交给 DeepRapper 就行了。</p><p style="margin:20px 0px">这么神奇?</p><p style="margin:20px 0px">毕竟语言生成还好说,基于 Transformer 的语言模型现在已经很成熟了。</p><p style="margin:20px 0px">但是如何让 Transformer 掌握节奏感?</p><p style="margin:20px 0px">研究团队的思路很巧妙,Transformer 擅长的就是对序列进行预测。</p><p style="margin:20px 0px">歌词的文本是一个<strong>序列</strong>,节奏在时间轴上其实也可以编码成一个序列。</p><p style="margin:20px 0px">歌词倒着写,双押也不难</p><p style="margin:20px 0px">押韵的原理其实很简单,用拼音来表示汉字,约束韵母部分就可以了。</p><p style="margin:20px 0px">但说唱的特点是每句歌词在句尾押韵,每句的长短不定。</p><p style="margin:20px 0px">按照传统的方法,在训练中还得额外标记哪一步到句尾了,需要添加约束。</p><p style="margin:20px 0px">DeepRapper 的办法是把每一句歌词倒过来,从右向左生成。</p><p style="margin:20px 0px">这样句尾变成句头,位置编码是 0 的就需要押韵,想双押就约束 0 和 1,甚至隔行 4 押也不难实现。</p><p style="margin:20px 0px">对于节奏问题,研究团队设计了一个指标:总字数与节拍数的比值。</p><p style="margin:20px 0px">把说唱歌曲按这个指标做统计,然后把比值为 3 的定义为中速,小于 3 的是快速,大于 3 的就是慢速。</p><p style="margin:20px 0px">这样就可以计算出应该在哪里添加节拍标记。</p><p style="margin:20px 0px">最终,整个网络架构的设计是这样的:</p><p style="margin:20px 0px">缺少数据集,那就自己建</p><p style="margin:20px 0px">这篇论文除了训练出 DeepRapper 之外,还有一个成果——</p><p style="margin:20px 0px">第一个兼顾了歌词与节奏编码的<strong>中文饶舌数据集 D-RAP</strong>。</p><p style="margin:20px 0px">先收集大量说唱歌曲,把歌词信息和节拍信息分别在时间轴上编码,再汇合在一起。</p><p style="margin:20px 0px">等一下,还有一个问题。</p><p style="margin:20px 0px">尽管说唱近几年很火,但中文说唱歌曲总数量还是太少了,根本喂不饱需要大量训练数据的 Transformer。</p><p style="margin:20px 0px">针对这个问题,研究团队又想出一个好主意:其他流派的歌曲其实也会押韵,甚至还没人唱过的填词都可以加进来。</p><p style="margin:20px 0px">最后收集到了 1.6 万首说唱,5 万多首其他歌曲,和 27 万篇没有节拍信息的纯歌词。</p><p style="margin:20px 0px">用更多歌词和诗的数据集做<strong>预训练</strong>,最后用说唱数据集<strong>微调</strong>,就解决了。</p><p style="margin:20px 0px">还要自己唱,以后会开源</p><p style="margin:20px 0px">论文中提到,相关代码未来会发在 Github 上。</p><p style="margin:20px 0px">下一步改进的方向有扩大数据集,进一步挖掘预训练语言模型的潜力。以及如何避免数据集中的 Bias 被带到模型中。</p><p style="margin:20px 0px">还要扩展多语言能力,毕竟 Rap 起源于国外,要是歌词中时不时加点英语,就更对味了。</p><p style="margin:20px 0px">不止于此,让 AI 合成语音直接唱出来也在计划中。</p><p style="margin:20px 0px">最后,再欣赏一篇 DeepRapper 创作的歌词吧。</p><p style="margin:20px 0px">更多歌词示例:</p><p style="margin:20px 0px">https://deeprapper.github.io</p><p style="margin:20px 0px">论文地址:</p><p style="margin:20px 0px">https://arxiv.org/abs/2107.01875</p><br>免责声明:如果本文章内容侵犯了您的权益,请联系我们,我们会及时处理,谢谢合作!
页:
[1]