人工智能也能玩音乐游戏,自动学习编曲变身劲舞大师
jopen 8年前
<p><a href="/misc/goto?guid=4958190462259388048" title="程序员"><img alt="人工智能也能玩音乐游戏,自动学习编曲变身劲舞大师" src="https://simg.open-open.com/show/a08e318ff2ebc4ad30d5e6ff0cd93701.jpg" /></a></p> <p>Dance Dance Revolution(国内译为劲舞革命)是一个风靡全球的节奏类音乐游戏。大家应该都曾经玩过,或者在商场的游戏厅中见到过它,现在,人工智能也可以玩这款游戏了!</p> <p>据雷锋网,游戏规则是玩家在跳舞台上按照屏幕上的脚步指示图案调整脚步,根据音乐的节奏在特定的时间点上踩在指定的舞台按钮上。最终根据是否在正确的时间踩在了正确的按钮上来决定得分的多少。不同难度的游戏,脚步指示图案也不同,难度越高,指示图案越多,而且有更复杂的顺序。跳舞台有上下左右四个箭头按键,每个按键有四种状态:开,关,保持,释放。四个箭头按键可以各自独立的激活或释放,所以总共有 256 中可能的脚步组合。</p> <p>屏幕上的舞步指示是根据音乐结构制作的,不同的音乐节奏或旋律对应不同的舞步。虽然 DDR 相当流行,但是玩家也有一些抱怨:比如曲库是有限的,玩家有时候并不能跳他们最喜欢的音乐的舞蹈,或者即使有这个音乐,但是玩家并不喜欢设定好的舞步。为了解决这个问题,DDR 公司开源了一些工具,使得玩家们可以自己为音乐编舞。但实际上,自己编舞的过程是很痛苦的,并且需要很多专业的知识。下图为示例的编排过程。</p> <p style="text-align:center"><img alt="人工智能也能玩音乐游戏,自动学习编曲变身劲舞大师" src="https://simg.open-open.com/show/6536c480006eeb266e82d6903b6fe645.jpg" /></p> <p>日前,加州大学圣地亚哥分校的研究者使用了一种方法可以自动生成舞步,可以从原始的音频中直接生成脚步指示图案,以此来学习编舞。这种方法通过模仿人制作的脚步指示图案的语义信息来学习。这个问题可以被分解为两个子任务:</p> <ol> <li> <p><strong>舞步放置</strong>,在歌曲中应该放置舞步的位置放置一系列的时间戳。这个过程根据玩家选择的难度的不同而产生不同的结果。</p> </li> <li> <p><strong>舞步选择</strong>,选择在时间戳上面放置哪种舞步(上下左右)。</p> </li> </ol> <p>按顺序运行这两个步骤,会产生一个可玩的舞步指示图案。过程如下图。</p> <p style="text-align:center"><img alt="人工智能也能玩音乐游戏,自动学习编曲变身劲舞大师" src="https://simg.open-open.com/show/63bfef7f44d0ba77aa64d217d95dbb5d.jpg" /></p> <p>对 Knife Party feat 这首歌的其中四秒进行舞步编排的流程,从上到下分别是人工编排的舞步,舞步选择预测,舞步放置预测,音频特征。</p> <p>学习编舞的过程主要是音乐信息检索(music information retrieval, MIR)。放置舞步的过程与起始点检测(onset detection)很相似。Onset detection 的目标是确定音乐上突出事件的时间点,例如音符或者鼓点。在编舞的任务中,并不是所有的音乐中的所有 onset 都对应 DDR 的舞步,但 DDR 的舞步一定对应着一个 onset。</p> <p>在数据方面,研究者们使用了 DDR 公司的标注好的数据:Stepmania Online,它用于超过 100k 首的歌曲,总共 350Gb 的数据。此外,研究者还收集整理了另外其他作者所创作的两个高质量的数据集。</p> <p>在舞步放置阶段,研究者采用了卷积神经网络结构。整个模型包含了两个卷积层和两个全连接层。为了提高 CNN 的性能,研究者又加入了C-LSTM 模型,将卷积编码与 RNN 结合,以达到整合更长时间窗口信息的目的。网络结构见下图:</p> <p style="text-align:center"><img alt="人工智能也能玩音乐游戏,自动学习编曲变身劲舞大师" src="https://simg.open-open.com/show/2f654f3b0e808b4a4a7d050d094898ca.jpg" /></p> <p>在舞步选择阶段,研究者将舞步选择视为序列生成问题。他们使用了在处理语言模型中很常用的 RNN 模型,因为 RNN 能更好的捕捉长距离的上下文关系。</p> <p>网络结构见下图:</p> <p style="text-align:center"><img alt="人工智能也能玩音乐游戏,自动学习编曲变身劲舞大师" src="https://simg.open-open.com/show/33e394761c6cc31a454f1c204fad1b48.jpg" /></p> <p>本篇论文提供了一个 Demo,感兴趣的可以自己尝试一下:<a href="/misc/goto?guid=4959004756942499099" rel="nofollow">http://deepx.ucsd.edu/ddc</a></p> <p>也可以在 油Tube 上观看官方给出的演示视频:<a href="/misc/goto?guid=4959004757034656662" rel="nofollow">https://youtu.be/yUc3O237p9M</a></p> <p>更多的实现细节请参考原论文:<a href="/misc/goto?guid=4959004757132529414" rel="nofollow">Dance Dance Convolution</a></p> <p>来自: <a href="/misc/goto?guid=4959004757223346533" id="link_source2">雷锋网</a></p>