本文由清华大学与虎牙信息科技有限公司、香港中文大学合作。传统的表现力语音合成主要考虑当前语句内部的信息,而没有考虑当前语句所处上下文的影响,导致同一输入文本的合成语音,其说话风格相对固定、缺乏变化。为了建模更有表现力的说话风格,模型需要考虑更广泛的上下文信息,这不仅包括上下文句子的语义信息,还包括上下文结构的知识。为此,本文提出了一个结合语义信息和上下文层级信息对合成语音的说话风格进行建模的方法,基于层级上下编码器更好地预测合成语音的说话风格,提升合成语音的自然度和表现力;受知识蒸馏启发,通过参考编码器提取语音中的说话风格表征,并用于指导层级上下文编码器的训练。

论文链接:

https://arxiv.org/abs/2203.12201

开源代码阅读及增强效果试听:

https://thuhcsi.github.io/icassp2022-expressive-tts-hierarchical-context/


背景动机

随着深度学习的发展,基于神经网络的语音合成模型已经可以合成具有中性说话风格的高质量语音,但是合成语音的表现力和自然度和真人录音还有明显的差距。因此,很多研究人员都在试图通过建模说话风格来提升合成语音的自然度和表现力。

现有主流的表现力语音合成方法,或者通过额外的辅助输入(如人工确定的权重标记或参考音频)实现对语音风格的建模,如Google的韵律编码器(Prosody Encoder)及全局风格令牌(Global Style Token, GST)等;或者尝试直接从文本预测合成语音的说话风格,如文本预测全局风格令牌(Text-Predicted Global Style Token, TP-GST)等。

上述基于文本预测说话风格的方法只考虑当前语句内部的信息,缺乏对当前语句所处上下文影响的考虑,这对于建模具有表现力的说话风格是不够的。对当前语句的同一输入文本,这些方法无法捕捉到相邻句子的不同语义可能带来的各种声学特征的变化(如语调、节奏、重音、情感等),导致合成语音的说话风格固定、缺乏变化。因此为了建模更有表现力的说话风格,模型需要考虑更广泛的上下文信息,这不仅包括上下文句子的语义信息,还应包括上下文结构的知识。

贡献

本文提出了一种根据上下文对当前语句的语音说话风格进行建模的层级框架,以提高合成语音的表现力。其核心是一个层级上下文编码器,该编码器试图在两个层级探索上下文的结构关系:一个是同一句子内部的词间关系,一个是涵盖了几个句子的上下文窗口中的句间关系。该模型通过结合语义信息和上下文层级信息更好的预测当前语句的合成语音的说话风格。同时,受到知识蒸馏的启发,为了让层级上下文编码器学习到更好的说话风格表征,本文引入了一个参考编码器从真实语音中提取说话风格表征,并用于指导层级上下文编码器的训练。基于FastSpeech 2的语音合成实验表明,该方法可以显著提高合成语音的自然度和表现力,并实现更准确的音高、能量和时长的预测。

解决方案


本文提出的模型结构如上图所示,它主要包括:

  1. 参考编码器(Reference Encoder);

  2. 层级上下文编码器(Hierarchical Context Encoder);

  3. 基于FastSpeech 2的声学模型。

参考编码器用于从真实语音中提取对应的风格特征(Style Embedding),层级上下文编码器用于从上下文中预测风格特征,声学模型基于参考编码器提取的风格特征或者层级上下文编码器预测的风格特征合成具有表现力的目标语音。

参考编码器

参考编码器包含6个1维卷积块、一个GRU和一个全连接层。所有的卷积块都采用ReLU激活和批归一化。与给定文本对应的真实语音的梅尔谱经过参考编码器后,编码器的输出将被视作该语音的风格特征。

层级上下文编码器

本文结合XLNet和层级上下文编码器,以从固定数量的上文句子、当前句和下文句子中预测当前句的说话风格。

XLNet是最近提出的一种预训练语言模型,它可以从更广泛的上下文中提取更丰富的语义信息。输入的上下文将首先连接成一个句子,经过预训练好的XLNet获得词级别的语义特征序列,并作为层级上下文编码器的输入。

层级上下文编码器包含两层注意力网络,分别是词级和句子级。这两个注意力网络都是由一个双向GRU和一个注意力模块组成。词级注意力网络根据一个句子中每个词的语义信息和词间关系得到句子级的特征向量。句级注意力网络根据每个句子的特征向量和上下文句子的句间关系预测当前句对应的风格特征。该层级结构通过考虑词间和句间的关系,从而更好的建模当前句的风格特征。

模型训练策略

在训练时,为了让层级上下文编码器更好地学习风格特征,本文基于知识蒸馏策略设计了分阶段训练的方法。

  • 第一阶段:通过无监督学习的方式联合训练声学模型和参考编码器。训练完成后,参考编码器即可作为一个训练好的语音风格提取器。

  • 第二阶段:首先使用参考编码器提取训练集中每一段语音的风格特征,并将其视为该语音对应的真实说话风格特征;然后,以该提取的风格特征作为目标,指导层级上下文编码器从上下文预测风格特征。该阶段只训练层级上下文编码器。

  • 第三阶段:以较低的学习率联合训练和调优声学模型和层级上下文编码器,以进一步提高合成语音的音质和自然度。

合成样例

1) “这两种观点在今后我们所有的刑法问题中大家都会看到它们的分析。”

FastSpeech2基线:

1_fs2  音频

本文所提方法:

1_proposed  音频

2) “从实质上来看,冒充JJ人员抢劫都要判十年以上,那ZJC抢劫是不更应该处十年以上了,是不这意思。”

FastSpeech2基线:

2_fs2  音频

本文所提方法:

2_proposed 音频


3) “而恰恰是因为学的深,反而有可能过不了。”

FastSpeech2基线:

3_fs2  音频

本文所提方法:

3_proposed  音频


更多合成样例可扫描二维码 或 访问链接

https://thuhcsi.github.io/icassp2022-expressive-tts-hierarchical-context/

实验验证

实验数据

本文在一个内部的单说话人普通话演讲数据集上进行训练和测试。该数据集包含一名男性说话人合计4700句约7小时的演讲录音,每句话的说话风格各不相同,并且语速、音高、音量的变化都较为明显。

基线模型

我们实现了两种基于FastSpeech 2的模型作为基线模型,其细节如下:
●FastSpeech 2:开源实现的FastSpeech 2模型。
●XLNet-FastSpeech 2:结合了XLNet和FastSpeech 2的端到端语音合成模型。该模型同样考虑了上下文信息,将XLNet得到的语义特征序列经过GRU后,取其最后一个时间步的输出作为风格特征。该方法只考虑了上下文的语义信息和词间关系,而没有考虑层级结构信息。

对比实验

为了本文所提的基于层级上下文信息的说话风格建模方法的有效性,我们分别通过主观测评和客观测评对合成语音的自然度和表现力进行了比较,如下表和下图所示。从实验结果可以看到,本文所提方法在多项测评中均优于基线模型。与FastSpeech 2相比,本文所提模型和XLNet-FastSpeech 2都表现得更好,这表明考虑上下文信息确实有助于表现力语音合成。与XLNet-FastSpeech 2相比,本文所提模型的各项指标均有进一步的提升,这表明引入层级上下文编码器和利用知识蒸馏策略可以更好地对合成语音的风格特征进行建模。



消融实验

为了验证本文所提的知识蒸馏训练策略和层级上下文编码器的有效性,我们进行了两项消融实验。首先从所提模型中去除知识蒸馏策略,即在没有参考编码器的指导下直接预测风格嵌入,我们发现它的CMOS为-0.346,说明了知识蒸馏策略的有效性。进一步去掉层级上下文编码器中的句间注意力网络,只使用词间注意力网络,我们发现它的CMOS为-0.609,表明考虑上下文中的结构关系的必要性和有效性。

样例分析

为了验证上下文信息对合成语音表现力的影响,我们进行了样例分析。我们使用不同的上下文合成同一句话:1)真实上下文(原始上下文);2)随机选择的上下文(无关上下文);3)不使用上下文。实验结果如下图所示。从结果可以看到,使用原始上下文生成的语音总体上比其他语音包含更丰富的基频变化。在合成“我们必须注意”这句话时,带有原始上下文的语音通过较高的基频强调了“必须”这个词(红框),这更符合真实语音的情形。
样例分析的结果表明,从上下文中建模说话风格可以有效地影响合成语音的重音和音调。因此,同一文本可以根据不同的上下文以不同的说话风格进行合成,从而实现更自然、更有表现力的语音合成。

结论
本文提出了一个从上下文建模说话风格的层级框架以提高语音合成的自然度和表现力。该方法引入了层级上下文编码器以更好地利用上下文信息,还采用了一种基于知识蒸馏的训练策略来进一步提高风格预测的效果。客观评测和主观评测的实验结果表明,本文所提方法可以大大改善合成语音的自然度和表现力。在消融实验中,层级上下文编码器和知识蒸馏的有效性得到了验证。样例分析表明,从不同上下文可以预测不同的重音和音调,从影响合成语音的说话风格。