唱歌是一项非凡的人类技能。它需要能够形成词语,然后以一定的音高发声,最后能够将发声与音符同步。对许多人来说,这似乎是与生俱来的——人类似乎天生就会唱歌。
机器则不然。教电脑唱歌——将乐谱转化为歌声——结果却令人非常沮丧。
首先,这些设备必须掌握将文本转换为语音的能力,这本身就是计算机科学中一个持续的挑战。然后,它们必须在音节甚至音素的层面上将单词与音符匹配。最后,这些音素、音节和单词需要以正确的音高和持续时间进行发声。
这事实证明是很难的。世界各地的许多团队都尝试过,有时取得了令人印象深刻的成果。但在每种情况下,最终的输出都需要大量的调整才能达到任何程度的逼真。
唱歌机器人
多亏了微软亚洲技术中心的 Peiling Lu 和同事们的工作,这种情况可能会发生改变。该团队一直在努力让微软的聊天机器人 Xiaoice(发音为 Shao-ice)拥有唱歌的能力。新的唱歌机器人名为 XiaoiceSing,其结果令人印象深刻。
首先,一些背景知识。“歌声合成”的任务是将乐谱转化为听起来与人类演唱难以区分的歌声。Lu 和同事们指出,乐谱包含歌词、音符和音符时长。对专业人类歌手来说,将这些书面信息转化为歌曲是很直接的。
但对于计算机来说,这项任务首先是将乐谱转换为机器可读的格式。XiaoiceSing 通过将单词分成音素,然后为每个音素分配音高和时长来做到这一点。这可以表示为计算机可以“读取”的向量形式。
但这个转换过程很棘手。每个单词都由音节组成,而音节又由音素组成。例如,“sing”这个词是一个由三个音素组成的单音节词。
乐谱可能建议将整个单词唱几个拍子。但 XiaoiceSing 的问题在于如何将这些拍子分配给音素。它应该给每个音素相等的强调,还是更多地强调中间或最后的音素?
同样重要的是音符之间的停顿,这时什么声音都没有。人耳对这种模式非常敏感,它在唱歌的节奏中起着重要作用。这使得机器产生的小差异都变得过于明显。
然后是唱准音符的问题。当人唱歌时,声音由许多频率组成。频率的组合随着音符和音质的变化而变化——例如,在唱不同的音素时。
基频
一般来说,实际的音符是最低频率的声音——也就是基频。这往往是最响亮的,也是人耳最容易辨别的。但声音的质量由其他频率决定,这些频率围绕着基频形成一种包络。
为给定的音素和正确的音高产生正确的包络 far from easy。任何错误都会给人以跑调的印象。
Pu 和同事们使用各种机器学习技术来解决所有这些问题,并将它们应用于成熟的技术。例如,XiaoiceSing 使用了一个名为 FastSpeech 的文本转语音系统,这是该团队在微软开发的许多技术。
FastSpeech 的输出必须被解码和声码,或“vocoded”。为此,XiaoiceSing 使用了一个名为 WORLD 的语音合成声码器,它必须经过训练才能产生类似人类的声音。
所有这些训练都是使用一个包含 2,297 首普通话流行歌曲的数据集完成的,这些歌曲由一位女性专业歌手演唱,然后分成 10 秒的片段。机器基本上是通过将人声歌曲的光谱特征与机器可读的乐谱相关联来学习的,并在数据集的 10,000 多个样本中重复此过程。
然后,给定一个机器从未见过的乐谱,它就能产生类似人类的输出。
结果令人印象深刻。这是 由人类演唱的一小段歌曲。这是 由 XiaoiceSing 从乐谱生成的同一首歌曲。
不算差!而且,为了进行比较,该团队还输出了 使用更传统的机器学习技术的同一首歌曲。
请自行评判。但在他们自己的测试中,让听众选择他们更喜欢哪个机器演唱的版本,XiaoiceSing 反复名列前茅。 团队在这里有更多示例。
这预示着唱歌的未来将充满乐趣。完全由计算机生成角色演唱的歌曲已经是某些流行音乐场景的特色。但它们远非完美。XiaoiceSing 也不完美,但它是一个有趣的进步。一个有潜力的流行歌星正在崛起?
参考: XiaoiceSing: A High-Quality and Integrated Singing Voice Synthesis System arxiv.org/abs/2006.06261














