本文由清华大学与香港中文大学、北京世纪好未来教育科技有限公司合作,提出了一种面向语音合成的基于跨度(span)的端到端韵律结构预测模型SpanPSP,该模型直接接受汉字字符序列作为输入,不需要任何的分词、词性标注等预处理,且相比于现有的所有方法都实现了大幅度的性能提升。


阅读论文:

https://arxiv.org/abs/2203.16922


合成样例试听:

https://thuhcsi.github.io/SpanPSP/


代码和预训练模型下载:

https://github.com/thuhcsi/SpanPSP


背景动机

韵律结构预测(prosodic structure prediction, PSP)对于合成语音的自然度至关重要。通常,韵律结构被定义为三层韵律结构成分的树状结构,三层韵律结构成分包括韵律词(prosodic word, PW)、韵律短语(prosodic phrase, PPH)和语调短语(intonational phrase, IPH)。现有的方法一般会忽略三层韵律结构成分的层级关系,将韵律结构的预测转化为三个层级的二分类子任务,也就是分别对每个字之后是否是韵律词、韵律短语和语调短语的边界进行预测。这些方法普遍将韵律结构预测任务视作一个等长的序列到序列的问题,对于输入的每一个字分别预测一个对应的0或1的标签,这样会导致严重的数据标签不均衡的问题。此外,这些序列到序列的方法依赖于分词、词性等额外的特征输入,这些模块的错误累积会对韵律结构预测任务的性能造成很大的影响,复杂的特征工程也不利于实际应用。


贡献

针对现有方法存在的问题,本文提出了一种基于跨度(span)的中文韵律结构预测模型SpanPSP,通过寻找一棵最优的韵律结构树将对韵律词、韵律短语和语调短语边界的预测任务统一成一个整体。该模型能够以端到端的方式直接接受汉字字符作为输入,不需要任何的分词、词性标注等预处理,进而同时输出所有层级的韵律结构标签。我们选取了两个存在较大差异的真实数据集进行了实验验证,实验结果表明本文所提出的模型在所有的客观性能指标上都大幅度超过了所有的基线模型。此外,我们对合成音频的自然度做了进一步的主观评测实验,结果同样表明本文所提出的模型要显著优于基线模型。


解决方案

在本文中,我们采用跨度(span)来表征韵律结构树,并且对所有潜在的韵律结构树进行打分,采用动态规划的算法来寻找具有最高得分的树作为最优的韵律结构树,最后转化为不同层级的韵律结构标签。本文所提模型由四个部分构成:BERT向量表征(BERT Embedding),基于Transformer的编码器(Encoder)、基于span的解码器(Decoder)和后处理模块(Post-processing)。


BERT向量表征和编码器

输入的文本X经过一个预训练好的汉字字符级别的BERT进行向量表征。该BERT由多个Transformer块构成,并且通过大量的中文文本进行预训练。编码器部分继续采用多个Transformer块,以获取句内上下文相关的隐状态向量,对于输入的汉字字符x_i和x_j分别得到h_i和h_j,并将其作为语言学表征。


基于span的解码器

如图1所示,解码器首先将来自编码器的输出通过上三角矩阵表示为一系列的跨度(span),并得到每一个跨度的表征(Span Representation);然后通过一个标签打分模块(Label Scoring)对每个跨度的可能标签进行评估,得到多个带有得分的潜在的韵律结构树(Scored Span);最后通过一种自底向上的动态规划算法(Bottom-up CKY-style Algorithm)寻找具有最高得分的树,并将其作为最优的韵律结构树(Optimal Prosodic Structure Tree)。具体如下:


1)span和韵律结构树定义

一个带有标签的跨度span(i,j)可以用一个三元组(i,j,l)来表示,其中i和j分别指的是该跨度的起始位置和结束位置,l指的是该跨度对应的标签,并且l属于广泛意义下的韵律结构标签集合。

在此基础上,一棵韵律结构树可以表示如下:


2)span表征

如图1所示,每一个跨度span(i,j)的语言学表征被定义为对应的隐状态向量的差值:


3)span标签打分

在得到所有的跨度表征后,通过标签打分模块获得给每一个跨度span(i,j)指定一个标签l所对应的得分s(i,j,l)。标签打分模块可以通过一个前向神经网络实现,其输出维度等于所有可能的标签的数目,其中g是ReLU激活函数:


4)韵律结构树得分

在此基础上,我们对所有可能的每一棵树T进行打分,得到整棵树的得分s(T):


具有最高上述得分的树就被视为最优的韵律结构树。


5)最优韵律结构树搜索

之后,本文采用一种自底向上的动态规划算法(Bottom-up CKY-style Algorithm)寻找最优的韵律结构树。整个寻优的过程如下图2所示,算法细节具体描述如下。

韵律结构树通常是一棵n元树,本文所采取的算法通过不断地进行二分化来构建n元树。我们定义s_best(i,j)表示跨度span(i,j)的子树的最高得分。

对于那些在二分化过程中出现的但它们本身并不是韵律结构成分的节点,会赋予它们一个空标签。对于任何跨度,只要其标签为空,则其标签得分为0,也即满足如下性质:


对于一般的跨度,每次分别独立地从韵律结构标签集合中指定一个标签l,取一个最好的分隔点k(i


对于特殊的长度为1的跨度,即当j=i+1时,最后的得分只依赖于标签l的选取:


这样,最终就可以为每一个汉字字符长度为n的句子计算得到一个最好的得分s_best(0,n),也就是整个句子的最优树的得分。通过回溯整个寻找划分点和指定标签的过程,就可以重建出对应的这棵韵律结构树。在重建的过程中,那些被指定为空标签的跨度被合并,从而得到一棵完整的n元树。整个算法的复杂度为O(n3+Ln2)。


6)模型训练损失函数

训练时,在上述算法的基础上,对于给定的真实树T*,预测的所有潜在树T需要满足如下的边际约束:


该边际约束可以通过最小化下面的Hinge loss损失实现:


其中,△是对于带标签的跨度的Hamming loss损失。


图2:自底向上动态规划算法和后处理


后处理

在基于跨度的解码器后,通过一个简单却又重要的基于规则的数据格式转换模块,将树形式的中间表征转化为韵律结构标签序列的形式。具体如图2(c)所示。首先,该模块将每一个韵律结构标签移动到对应的韵律层级成分后面;然后,将每一个韵律词后面的多层韵律结构标签进行合并,只保留最高层级的韵律结构标签。这种强制的方法可以确保即使在由于训练不充分而导致存在局部标签错乱的情况下,也可以得到格式正确的韵律结构标签序列。


实验验证

数据集

目前还没有统一的公开数据集用作韵律结构预测任务。考虑到标签的分布、句子的长度、数据集的大小等因素会对模型性能和实验结果造成比较大的影响,我们选取了两个在上述方面存在较大差异的数据集进行实验,以验证模型的性能和泛化能力。这两个数据集的所有句子中的韵律结构标签都由专业的标注人员根据抄本和实际语音来手工标注的。其中一个是来自人民日报的大规模数据集,它主要是由长句子构成,并且包含分词和词性信息;另一个则是来自标贝的小规模语音合成公开数据集,不包含分词和词性信息。两个数据集都进行了清洗,并按照8:1:1的比例划分为训练集、验证集和测试集。数据集的具体细节如表1所示。



对比实验

本文选取近几年来最有代表性的几种方法进行对比实验。这些方法都是序列到序列的方法,将韵律词、韵律短语和语调短语当作三个子任务,分别进行标签的预测。考虑到先前的方法都比较依赖于复杂的特征输入,所以将额外的分词和词性信息也作为输入。所有的模型都采用预训练好的汉字字符级别的BERT作为每一个字的向量表征,且BERT的参数被固定、不进行参数更新。具体的模型设置如下:

  • BLSTM-CRF:基于BLSTM-CRF的模型达到了最广泛且普遍接受的实验结果,所以把它作为第一个基线模型;

  • Transformer-Softmax:采用Transfomer结构作为编码器,后接一个2维的Softmax作为解码器,其中韵律词、韵律短语和语调短语被当作三个相互独立的子任务分别进行标签的预测;

  • Transformer-Softmax-MTL:在Transformer-Softmax的基础上,通过加入多任务学习(MTL)将三个子任务整合为统一的模型,低层级子任务的输出会拼接到高层级子任务的输入中,最后进行全局优化训练;

  • Transformer-CRF:考虑到对比实验的完整性,采用Transformer作为编码器,后接一个条件随机场(CRF)作为解码器,对三个子任务分别进行预测;

  • Transformer-Tree:本文所提方法,将Transformer作为编码器,后接一个基于跨度的解码器,用于寻找最优的韵律结构树。

对于上述所有涉及到Transformer的模型,它们的结构同本文所提模型Transformer-Tree中的保持一致。所有模型的输入都包括标点字符信息。在实验中,我们也考察了分词和词性信息对除本文所提模型之外的其他基线模型的性能影响。当考虑分词和词性信息时,5维的分词信息(B、M、E、S、P)和100维的词性信息分别被嵌入成5维和50维的向量表征并拼接到每一个字符的输入上。



采用Precision、Recall和F1 score作为客观衡量指标。在两个数据集上的实验结果分别如表2和表3所示。可以看出,在所有序列到序列的基线模型中,Transformer-CRF取得了最好的结果;此外,额外增加真实的分词和词性信息能够有效地提升模型预测的效果。本文所提方法Transformer-Tree在两个数据集上的所有性能指标都显著超过了所有的基线模型;特别地,对于较难预测的韵律短语(PPH)而言,本文所提方法性能提升尤为显著。

相较于将韵律结构预测任务当作三个独立的二分类任务的方法,多任务学习(MTL)的方法只是简单地将三个子任务进行结合,它本质上仍然是一种序列到序列的方法,低层级子任务的错误结果会累积给后一个高层级子任务,导致模型不容易训练。通过实验结果也可以看出,MTL带来的性能提升很小。

本文所提方法采用韵律结构树这一模型来将三个子任务统一成一个任务,能够直接接受汉字字符作为输入,并且同时预测不同层级的韵律结构标签。无论是在较大的数据集或者是在小数据集上,本文所提方法在不加入分词和词性信息的情况下都能大幅度超过所有考虑了分词和词性信息的序列到序列的基线方法。所有实验结果表明,本文所提的基于跨度的方法不需要复杂的特征工程,能够避免由分词和词性预测模块带来的错误累积,更有利于实际应用。


跨度表征消融实验

为了进一步探究跨度表征对模型性能的影响,本文在Transformer-Tree的基础上,又尝试了如下的探究实验,具体实验设置如下:

● - Encoder:将基于Transformer的编码器去掉,BERT的输出直接送给基于跨度的解码器;

● + Fine-tuning BERT:BERT的参数不固定,在韵律结构模型训练阶段进行微调。

实验结果如表4所示,可以发现,当基于Transformer的编码器去掉后,实验结果在所有性能指标上都有显著的下降;而当使用训练数据对BERT进行微调后,却带了一定程度上的性能提升。实验结果表明,无论是加入编码器还是对BERT进行微调,都在进一步改善语言学的跨度表征,这种基于特定任务的语言学跨度表征对于增强韵律结构预测模型的性能是非常重要的。


主观实验

进一步对合成语音的自然度做了主观ABX实验。我们将本文所提模型Transformer-Tree和最优的基线模型Transformer-CRF进行对比,从测试集中随机选取20个带有不同预测结果的句子,并通过一个基于Tacotron 2的声学模型合成相应的音频。20个母语为中文的测试者参加了实验,他们被要求对合成音频的自然度给出偏好选择。实验结果如下图所示。可以清楚地看到,本文所提模型Transformer-Tree在合成语音的自然度方面要显著地优于基线模型Transformer-CRF。



结论

本文提出了一个基于跨度(span)的中文韵律结构预测模型,它通过寻找一棵最优的韵律结构树将对韵律词、韵律短语和语调短语的预测任务统一为一个任务。该模型能够以端到端的方式直接接受汉字字符作为输入,同时输出所有层级的韵律结构标签。在两个真实数据集上的实验表明,本文所提出模型在所有的客观性能指标上都大幅度超过了所有的基线模型。主观评测实验也表明,本文所提模型在语音合成自然度上同样要显著优于基线模型。