文章来源于THUHCSI人机语音交互实验室,作者HCSIers

本文由清华大学与虎牙信息科技有限公司、元象唯思控股(深圳)有限公司和香港中文大学合作。人们在演唱时会根据歌词语义进行演绎以提高歌声表现力。现有歌声合成工作通常仅考虑基本乐谱内容,而忽视了歌词所蕴含的语义信息。针对该问题,本文基于VISinger框架提出了一种利用歌词蕴含的语义信息提高歌声表现力的方法:提出歌词语义提取模块,生成更符合歌词意境的高表现力歌声;构建音高及能量预测器,建模歌声的轻重强弱变化,提升歌声感染力。与基线系统VISinger相比,在中文歌声合成任务上,所提方法的用户偏好率最多可提升50%,主观意见得分最多可提升15%。


扫码阅读论文

https://www.isca-speech.org/archive/interspeech_2022/zhou22f_interspeech.html

合成样例试听

https://thuhcsi.github.io/interspeech2022-expressive-svs/


01 背景动机

随着深度学习的发展,基于神经网络的歌声合成模型已经可以按照乐谱信息合成高质量歌声。然而,合成歌声的表现力和真人演唱的录音相比仍有明显差距,使得歌声合成技术在诸多领域的应用受阻,如虚拟歌手,语音助手等。

人们在唱歌时,会根据歌词的语义信息,加入各种细节,如情绪和力度的变化,以增强歌声的感染力和表现力。为了提高合成语音的表现力,在语音合成领域,一些工作将BERT等预训练的语义信息作为语音合成模型的额外输入,取得了很好的效果。在歌声合成领域,虽然现有工作能够较为准确的合成歌声,但是还没有相关工作考虑利用歌词中所蕴含的语义信息,来提升合成歌声的表现力。同时,歌曲相对于语音的能量变化范围更大,如何建模能量以合成更稳定的歌声,也是高表现力歌声合成的重点。


02 贡献

本文设计了一种从歌词文本中提取语义信息的方法,其核心是基于预训练BERT模型从给定歌词文本中提取语义信息,以进一步提升合成歌声的表现力。该方法在VISinger的基础上增加了一个语义信息提取模块,模块包含一个中文预训练BERT模型,上采样模块以及文本编码器。我们认为,歌词的语义嵌入包含了有用的信息,如单词的类型和歌词的含义,这将指导歌声合成模型合成更自然、更具表现力的歌声。歌声的表现力可以体现在丰富的歌声强度和情感变化上。为了对频繁变化的能量进行建模,我们使用了一个包含能量预测器来提高合成歌声的表现力。最后,与直接预测歌声的音高相比,我们的方法预测了唱腔音高相对于乐谱音高的比例,目的是合成更自然的歌声,避免跑调问题。在中文歌声数据集OpenCpop上的客观和主观评价指标都表明,本文提出方法能够提升合成歌声的自然度和表现力。


03 解决方案


本文提出方法的模型结构如上图所示,模型整体包括一个后验编码器、一个先验编码器和一个解码器。在先验编码器中,如紫色块所示,我们提出了语义信息提取模块(Semantic Extraction Module)、能量预测器(Energy Predictor)并重新设计了音高预测器(Pitch Predictor)。模型整体搭建基于VISinger,语义信息提取模块将用于从歌词文本中提取语义信息,而能量预测器用于对歌声频繁变化的能量进行建模。音高预测器用于从中间特征中预测合成歌声的唱腔音高相对于乐谱音高的比值。

语义信息提取模块

语义信息提取模块由三个部分组成,分别是预训练的BERT模型,上采样模块以及文本编码器。BERT模型考虑了过去和未来的上下文信息,以提取文本中所包含的语义信息。BERT模型以字级别歌词文本为输入,输出字级别语义特征。上采样模块通过复制的方式将字级别语义信息扩增为音素级别语义信息。具体地,我们通过Pypinyin模块得到每个字对应的拼音,通过数据集提供的拼音-音素对照表,得到每个字对应的音素数量。通过该数量对语义信息进行第一次扩增。由于数据集中某些音素发音较长,可能存在多个重复音素以代表长音,我们根据该重复数量,对指定位置进行二次扩增。最后,在SP和AP对应位置插入全0向量,得到扩增后的音素级别语义信息。扩增后的音素级别语义信息送入文本编码器,其输出与音素编码器相加,并在后续进一步处理。

音高预测器

由于人们唱歌时声音自然而富有表现力,歌声围绕着乐谱音高上下波动,我们引入一个音高预测器来预测唱腔音高和乐谱音高之间的偏差。与直接预测合成歌声音高的预测器不同,我们的音高预测器预测唱腔音高与乐谱音高的比率,然后将比率与乐谱音高相乘,以得到唱腔音高。这样,音高预测器只需要预测音符音高的偏差,而不是最终音高,提高了音高预测的准确度。

能量预测器

能量预测器由一个带有ReLU激活函数的2层一维卷积网络组成,每层后面有一个归一化层和一个丢失层。我们在能量预测器中增加了一个额外的线性层以将中间特征纬度映射到输出序列对应维度。能量预测器以前模块输出的中间特征作为输入,预测每一帧的能量。预测的能量被转换到对数域以方便预测。


04 实验验证

实验数据

本文在一个开源的中文歌声数据集OpenCpop上进行训练和测试。该数据集包含了3756句约5.2小时的中文歌声,这些录音是由一位专业的女性歌手录制的。我们对数据集的录音文件以24KHz的频率进行降采样。

基线系统

我们在开源的VITS工作基础上,复现了VISinger的模型作为基线模型。在对比实验中,我们还对所提出的语义提取模块结构中的上采样模块与文本编码器位置调换,以验证我们提出结构的合理性。

对比实验

为验证本文所提出方法的有效性,我们分别通过客观评测和主观评测对各个模型进行了比较。如下表和下图所示。从实验结果可以看到,本文所提方法在多项测评中均优于基线模型。与VISinger相比,我们的模型在三个客观指标都表现的更好,这表明所提出音高预测器与能量预测器提升了合成歌声的准确性。在主观MOS评测与ABX评测中,我们的模型所生成歌声取得了更高MOS分数,并且被更多测试者所选择,证明了我们方法能够合成表现力更高的歌声。




消融实验

为了证明本文用到的几种技术的有效性,包括能量预测器、语义信息提取模块以及该模块的结构合理性,我们进行了三项消融实验。首先忽视能量预测器,导致的CMOS为-0.868。去掉语义信息提取模块的CMOS结果是-0.456。这表明,利用歌词文本所蕴含的语义信息对提升合成歌声表现力有帮助。此外,我们还发现,将语义信息提取模块中的上采样模块与文本编码器位置调换的CMOS结果是-0.108,这表明了我们语义信息提取模块结构的合理性。



样例分析

为了探索上述贡献的影响,我们进一步进行了一个样例分析,从测试集中合成了一个具有音高突变和长音的歌声片段。我们用本文提出的方法和VISinger分别进行合成,同时也提供了真实录音作为对比。如图所示,在我们绘制的频谱图中,音高和能量曲线分别用蓝线和黄线标记。在中间红框所圈出的长音中,归功于我们重新设计的音高预测器,我们的方法合成的歌声具有平坦的音高,而VISinger合成的歌声具有不规则的波动,使其听起来较为不自然。在左上角圈出的红框中,我们的方法所合成音高变化与录音更相似。此外,在能量预测器的帮助下,我们提出的方法所合成的歌声和真实录音在长音结束时都有轻微的淡化,而VISinger则没有。样例分析的结果证明了我们提出的方法对于模型合成歌声的帮助。



05 结语

本文提出了一个高质量的歌声合成系统。该系统的搭建基于VITS的开源代码和VISinger的模型结构。为了提高合成歌声的表现力,我们提出了几点方法,包括语义提取模块、能量预测器和重新设计的音高预测器。在中文歌声数据集Opencpop上的实验表明,我们提出的方法在主观评价和客观指标上都优于VISinger。

在未来,我们将继续探索如何提高合成歌声的表现力,以进一步缩小合成歌声与人类演唱歌声之间的差距。