近期歌声合成论文总结 2020-8-7

本次总结以下三篇论文:

  • SEQUENCE-TO-SEQUENCE SINGING SYNTHESIS USING THE FEED-FORWARD TRANSFORMER (2019-10-22收录)Universitat Pompeu Fabra

  • ByteSing: A Chinese Singing Voice Synthesis System Using Duration Allocated Encoder-Decoder Acoustic Models and WaveRNN Vocoders(2020-04-23收录)ByteDance AI Lab

  • DeepSinger: Singing Voice Synthesis with Data Mined From the Web(2020-7-15收录)MicrosoftResearchAsia

第一篇来自庞培法布拉大学,作者已经发表过多篇关于歌声合成方面的论文,是歌声合成方向的先驱者。 后面简称为 S2S-Singing。
第二篇来自字节跳动AI Lab 放出的demo效果非常好 https://bytesings.github.io/
第三篇来自浙大与微软亚研,作者发表过多篇TTS方向的论文包括FastSpeech和FastSpeech2

概括介绍

先介绍一下各篇实验所用的数据量:
  • S2S-Singing 使用41首英文歌曲,由专业男性歌手演唱。其中35首(总长度约1小时26分)作为训练集,4首作为验证集,剩下两首作为测试集。
  • ByteSing 使用100首中文歌曲,由女性演唱。其中90首用作训练集(文中未说明长度,一般歌曲平均3分钟),10首用作测试集。
  • deepSinger 由于不用精细标注,所以使用的数据比较多,对于中文歌曲,使用了10893句总长27小时的歌声,分别来自30位不同的歌手。对于英文歌曲,使用了7205句总长12小时,来自32位歌手的歌曲。还有粤语歌曲,包含10000句总长25小时,分别来自30位歌手。 其中每种语言,对于每个歌手挑5首歌曲,从其中挑出10句作为测试集。然后用同样的方式也挑出50首验证集歌曲。其余的全部作为训练数据。
各篇提出模型的输入输出特征以及声码器:

注:此处写的是总体输入输出特征,实际上输入特征可能会先经过一个duration模型,再进入音色模型

  • S2S-Singing
    • 输入特征
      • 音素序列
      • 每个音的开始以及结束时间,每个音包含的音素
      • F0 (ground truth)
    • 输出特征
      • WORLD参数,分别是harmonic和aperiodic序列,concatenated。
    • 声码器
      • WORLD
  • ByteSing
    • 输入特征
      • 音素序列
      • 音高序列
      • 每个音的时长,每个音包含的音素
      • 音素类型
    • 输出特征
      • mel谱
    • 声码器
      • WaveRNN
  • DeepSinger
    • 输入特征
      • demo singing 音频
      • 音频对应歌词
    • 输出特征
      • 线性谱
    • 声码器
      • Griffin-Lim
各篇论文特点

S2S-Singing 是这三篇中收录最早的论文,借鉴了FastSpeech的思想,是首篇提出使用feed-forward Transformer模型进行歌声合成的论文,可以获得更快的inference速度,并且避免了传统autoregressive模型面临的exposure bias问题。使用WORLD声码器,不需要额外进行训练,适应性强,可控性也强,但是合成质量不及基于深度神经网络的声码器(Wavenet WaveRNN 等)。

文章提出只要输入序列与输出序列相对对齐,模型就可以进一步refine对齐关系,所以故意使用了一个简化的duration model来预测音素时长。

值得注意的是,这篇论文着重描述了音色模型,并且假设F0是已知的,实际应用中需要使用另外的模型通过音符序列来预测F0。

另外这篇论文的实验只用了35首歌进行训练,对于数据量要求低。

ByteSing 主要强调合成结果的自然度和表现力以及高保真,所以使用了90首标注良好,音色一致的数据,并使用了音素类型特征标注来获得更加准确的音素时长信息。声学模型采用类Tacotron结构,采用自回归的方式生成目标特征。为了良好的音质,文章采用WaveRNN结构作为声码器,需要进行训练来达到效果,适应性较弱。

文章从音高(Pitch),节奏(Rhythm),发音(Pronunciation),呼吸(Breath),表现力(Expressiveness)五个方面与自然歌声做了对比。都获得了很好的效果。其中节奏方面甚至超过了自然歌声。

DeepSinger 是一个多语言,多歌手的歌声合成系统,与另外两篇着重介绍歌声模型不同,文章介绍了从数据爬取,歌声伴奏分离,歌词与歌声对齐,数据过滤到歌唱模型的几大步骤。并且基于自动语音识别的架构提出了对齐模型,使得数据几乎不需要人工标注。

对于歌唱模型,文章同样使用feed-forward Transformer,但是不同于S2S-Singing直接使用F0作为特征,DeepSinger使用了音符音高+embedding。并且还加入了reference embedding用来描述歌手的音色特征从而区分不同歌手。

文中使用Griffin-Lim声码器,也不需要进行额外的训练,适应性强。

模型结构介绍

模型结构的细节以及公式就不再详细说明,具体可以查看原文。

  1. S2S-Singing

近期歌声合成论文总结 2020-8-7_第1张图片
左侧是模型是总体结构,右边是模型中用到的一些模块。其中Score数据原始形态为一个音符序列,每个音符包含开始时间持续时间,一个音节,以及对应的音素序列。文中定义音符的开始时间为元音的开始时间,音符的结束时间是下一个元音或者空白的开始时间。首先将音素序列通过一个embedding层,然后经过数个GLU Block,这样可以获取到每个音素的上下文信息,再加上来自residual shortcut 连接的信息,进入Aligner。Duration model根据音符的开始时间与时长信息预测每个音素的时长(单位是帧),然后给到Aligner,Aligner将处理过的音素信息根据每个音素的时长复制相应的帧数,加上处理过的F0信息与position信息一起进入Decoder。经过数层Attention Sub-Layer 和 GLU Sub-Layer,最终通过一个全连接层获得输出的特征。

  1. ByteSing

首先使用一个包含多层LSTM单元的双向RNN结构来做Duration model。它的输入特征是音素级序列,每个元素包含音素id(Ph),音素类型(Tp),以及音符时长(Du)。输出特征是帧级别的特征,每一帧包含的特征有音素id(Ph),音高(Pi),以及位置信息(Po)。
近期歌声合成论文总结 2020-8-7_第2张图片
有了帧级别序列后就可以作为声学模型的输入数据,音素和音高信息分别先经过一个embedding层,再经过一个卷积层,然后与经过全连接层的音高信息结合一同进入CBHG模块,然后将CBHG输出经过一个下采样的卷积,处理成与目标音频特征序列相同时间步的序列。使用attention机制来给decoder提供信息,由于前面使用了一个辅助的duration model,使得attention模块可以更快的收敛,还可以保持合成对齐的单调性和局部属性。同时,使用attention策略可以学习到目标特征和源特征的对齐关系,比传统的SPSS和SVS系统的硬对齐方式有优势。Decoder的设计与Tacotron2保持一致。

声码器结构如下,不再详细说明了
近期歌声合成论文总结 2020-8-7_第3张图片

  1. DeepSinger

先看一下alignment model,DeepSinger使用两步对齐的流水线,先将整首歌分句,然后在句的基础上获得音素时长。
近期歌声合成论文总结 2020-8-7_第4张图片
alignment model 使用mel谱作为输入,然后音素序列作为输出。中间使用了Location sensitive Guided-attention。文章使用两个技术来提升模型的效果,一是Greedy Trainning也就是先从很短的歌曲片段开始训练,然后渐渐加长,最终使用整首歌来训练。二是使用先验知识来限制attention alignments,增加了guided attention loss,如图:
近期歌声合成论文总结 2020-8-7_第5张图片
最终通过alignment model获得的歌词-歌曲对应关系来提取出音素的时长。

近期歌声合成论文总结 2020-8-7_第6张图片
获得音素的时长后,就可以作为歌唱模型的输入了。首先音素序列经过一个embedding层,然后加入位置信息,经过数个Transformer Block后,根据音素时长来进行扩大,扩大后变为帧信息。音高序列与音素序列经过的步骤基本相同,音高序列本身就是帧信息,所以不需要进行扩大。最右侧叫做Reference Encoder,是将对应音频先经过一个Pre-Net然后同样经过数层Transformer Block,最后通过一个在时间维度的Avg Pooling将信息压缩为一个vector,目的是获取歌手的音色信息以及一些噪音信息。相比于歌手embedding,当训练数据噪音较大时,使用reference embedding具有明显优势,当给与模型干净的reference audio时,模型可以合成出干净的歌声。Decoder比较简单,只有数层Transformer Block和全连接层,最终生成线性谱特征。下图是inference过程:
近期歌声合成论文总结 2020-8-7_第7张图片

你可能感兴趣的:(AI与音乐)