本文由清华大学与香港中文大学、字节跳动公司合作,提出了一种新的双向注意力机制(bidirectional attention mechanism)以及基于该机制的神经网络强制对齐(forced alignment)模型NeuFA。该模型基于双向注意力机制,将端到端语音识别和语音合成中的注意力学习统一成一个框架,并从所学到的注意力权重中提取音素边界或词边界。此外,基于所学到的双向注意力权重矩阵,可以非常轻易地实现文本、语音之间的双向维度转换和表征聚合。


论文预印版:

https://arxiv.org/abs/2203.16838


NeuFA 源码:

https://github.com/thuhcsi/NeuFA



研究目的

传统的强制对齐模型一般都基于隐马尔可夫模型(HMM)构建的,然而HMM在建模时考虑的窗长十分有限,并且这些模型训练都是基于长流水线(long pipeline)结构、每个模块逐个训练的。这样的训练方式会导致误差累积(error accumulation)的问题。这些因素导致传统的强制对齐模型的对齐效果不理想。

注意力机制(attention mechanism)显示出其学习对齐信息的能力,并在一些端到端的语音识别和合成模型中得以体现与利用。FastSpeech进一步提出了一种从注意力机制习得的权重中提取各音素时长的方法。这些揭示了利用注意力机制来构建端到端强制对齐模型的可能性。


贡献

本文提出了一种双向注意力机制(bidirectional attention mechanism),并基于该机制构建了一个基于神经网络的端到端强制对齐模型NeuFA。相比于传统的基于隐马尔可夫模型的强制对齐方法(如Montreal Forced Aligner, MFA),NeuFA模型利用双向注意力机制,将端到端语音识别(ASR)和语音合成(TTS)中的注意力学习统一成一个框架,并从所学到的注意力权重中提取音素边界或词边界,在词级别和音素级别上的强制对齐性能都有所提升。


双向注意力机制

传统的注意力机制通过查询项(query)向键(key)做查询,从而得出汇总值(value)所需的权重,这建模了查询项到键的单向非对称关系。然而在实际应用中,查询项和键通常是两种平行的数据,如平行的文本与语音、平行的两种语言的文本等。在这种情况下,另一个方向,即键到查询项的关系也有实际含义。这启发我们构建一个查询项与键对称的注意力机制,并通过两个方向联合学习来进一步提升注意力的效果。


双向注意力机制的结构如上图所示,其以两组键值对(K1, V1)和(K2, V2)作为输入,并通过一个兼容性函数(compatibility function)建模两组键K1和K2之间的相关性,得到一个两个方向共享的注意力矩阵。进而沿该矩阵的两个方向分别做softmax运算,即可得到两个方向各自的权重矩阵。其对应的公式如下:


根据兼容性函数实现方式的不同,可以得到双向乘性注意力机制(bidirectional multiplicative attention)和双向加性注意力机制(bidirectional additive attention),其对应的公式分别如下:



基于双向注意力机制的端到端强制对齐

基于双向注意力机制,本文提出了一种基于神经网络的端到端强制对齐模型NeuFA,其结构如下图所示。


结构概览

NeuFA利用双向注意力机制,将语音识别和语音合成的注意力学习整合到了一个多任务学习框架之中。其中,文本编码器(text encoder)、双向注意力机制、语音解码器(speech decoder)这三个模块构成了一个基于编码器解码器(encoder-decoder)结构的语音合成任务;语音编码器(speech encoder)、双向注意力机制、文本解码器(text decoder)则构成了一个基于编码器解码器结构的语音识别任务。这两个任务通过共用中间的双向注意力机制联合为一个统一的学习框架。同时,根据双向注意力机制习得的语音识别和语音合成两个方向的注意力权重矩阵,进一步通过边界检测器(boundary detector)构建了一个强制对齐任务,用以提取出音素边界及/或词边界。


模块的具体结构

文本编码器的结构与Tacotron 2编码器结构相同。语音编码器的结构受语音转换(voice conversion)中的内容编码器(content encoder)的启发,其结构为3层CNN与2层双向GRU。文本解码器与语音解码器的结构基本相同,由2层双向LSTM和一层线性层组成。

注意力机制为前文所提的双向乘性注意力机制。两组键为分别添加了位置编码(positional encoding)的文本编码器与语音编码器的输出,两组值则仅为文本编码器与语音编码器的输出。


原始与预估位置编码

位置编码不仅可以帮助对齐的学习,同时对于区分同一句话中不同位置的相同音素至关重要。需要特别说明的是,我们在这里使用了两种不同的位置编码信息,即原始位置编码(original postional encoding)和预估位置编码(estimated postional encoding)。这两者分别由原始位置(original position)和预估位置(estimated position)计算得到。

对文本而言,每个音素的原始位置即为其在输入的音素序列中的位置。对语音而言,每一帧的原始位置即为其在输入的音频帧序列中的位置。可以注意到这两种原始位置其实是不匹配的,这种不匹配很可能对最终对齐的学习产生误导。

为了解决这个问题,我们可以通过预估文本或语音在另一方中的位置来解决。对于文本,我们可以利用文本编码器的输出预测每个音素可能的时长,并通过累加得到其对应的预估语音位置,从而与原始语音位置统一。类似地,对于语音,我们可以利用语音编码器的输出预测每一帧可能的“音素长”,并通过累加得到其对应的预估文本位置,从而与原始文本位置统一。然后我们通过Transformer中的位置编码方式将其转换为原始或预估的文本或语音位置编码。最终,我们将这两种原始与预估位置编码分别附加到文本和语音编码器的两个副本上。原始与预估位置编码的附加过程也可以参见下图。


边界检测器

通过语音识别和语音合成两个方向的联合学习,我们可以得到这两个方向的注意力矩阵。接下来,我们同样利用神经网络从中提取出边界信息。受Tacotron 2中位置敏感注意力机制(location sensitive attention)的启发,除了原始的两个方向的注意力矩阵外,我们还要考虑从前和从后两个方向累积的注意力权重。因此我们可以得到一个 6 通道的特征矩阵:


接下来我们通过一个边界检测器来从这个特征矩阵提取出边界相关特征,并预测边界信号(boundary signal)。边界信号与Tacotron中的停止标签(stop token)类似,是一个从0至1的单调跳变信号,即边界之前的部分为0,边界之后的部分为1。对于左边界与右边界,则分别有左边界信号和右边界信号。

边界检测器受计算机视觉(CV)领域中的边界检测启发,首先由3层CNN提取出边界相关特征,并通过一个线性层和sigmoid激活函数预测出每个点为边界的概率,进一步通过累加和tanh激活函数规整为0至1之间的单调信号。在推断过程中,预测的位置信号首次大于0.5的位置即可认为是对应的边界。


损失函数

NeuFA的损失函数由多个损失函数构成。首先是语音识别任务和语音合成任务的损失函数,分别为预测的音素序列的交叉熵(cross entrophy)和预测的Mel谱序列的均方差。还有强制对齐任务所对应的预测的边界信号的平均绝对误差。

为了准确的预估文本与语音位置,我们还需要两个损失函数来指导这个预估过程的学习。注意到最后的文本或语音位置其实就是输入文本和语音位置的长度,则我们可以比较原始长度和预估的长度从而得到损失函数:


我们还使用了一个对角注意力损失函数(diagonal attention loss)在没有真实的边界标注的情况下代替边界损失函数。这个损失函数由习得的两个方向的注意力矩阵与一个对角约束矩阵(diagonal constraits)按位相乘后均值得到:


对角约束矩阵大致为一个越靠近对角,值越接近于 0,反之则越靠近 1 的矩阵,如下面的示意图所示。


尽管NeuFA需要上述6个损失函数来训练,其并不需要做太多的损失函数权重搜索即可得到一个不错的对齐学习结果。我们目前仅仅是把各个损失函数大概平衡至一个比较接近的级别,确保每个部分都有发挥作用即可。


实验

对比实验

我们选取MFA作为基线模型,并尽可能按照MFA的实验配置进行实验。参考MFA,我们首先在LibriSpeech数据集上进行预训练,再在Buckeye数据集上进行调优。在预训练阶段,正如前文所说,此时没有边界损失函数,由对角注意力损失函数替代。不同于MFA使用Buckeye数据集的全集做训练,我们使用其中36个说话人(约90%)的数据做训练,此时有边界损失函数,没有对角注意力损失函数。最终我们在Buckeye数据集中剩余的4个说话人的数据上做测试。


实验结果如上面两个表所示。在词级别和音素级别,NeuFA相比于MFA都得到了更好的对齐结果,使得对齐误差的中位数下降到了9毫秒左右。同时,在10、25、50毫秒误差范围内的比例都获得了提升。在词级别10毫秒误差范围内的比例更是从41%上升至了55%。这说明了所提的基于神经网络的端到端学习模型相对于基于HMM的传统强制对齐模型的有效性。下图给出了一组实际习得的语音识别、语音合成两个方向的注意力权重矩阵和最终的对齐结果。可以看到两个方向的注意力权重矩阵呈某种类似“转置”的关系,且与最终预测的对齐结果(黄色)高度相关,与实际的对齐结果(绿色)十分接近。


消融实验

如表1所示,我们进一步进行了消融实验。若去除两种预估位置编码(EPE)则会导致性能的下降,这说明了预估位置信息对于对齐学习的必要性。

若去除原始和预估的文本位置编码(TPE)或语音位置编码(SPE),均会导致性能下降。特别地,仅去除语音位置编码导致的下降很少,这可能是因为从文本预估语音位置的难度要比从语音预估文本位置的难度高,同时也说明了原始和预估文本位置编码的作用更加重要。

若去除语音识别或语音合成两个任务中的一个,都会导致较大的性能下降,且去除语音合成任务时的性能下降最大。这说明了语音合成任务对于基于神经网络的强制对齐模型至关重要。

最后,若在预训练时不使用对角注意力损失函数,则预训练的效果会大打折扣,很难习得对齐信息,最终的性能也会下降。


结论

为了解决传统强制对齐方法中长下文信息利用不充分和误差累积的问题,本文提出了一种双向注意力机制及一种基于该机制的强制对齐模型NeuFA。NeuFA将端到端语音识别(ASR)和语音合成(TTS)中的注意力学习统一成一个框架,并从所学到的注意力权重中提取音素边界或词边界,在对比实验中词级别和音素级别上的强制对齐性能都有所提升,消融实验也进一步分别验证了各个模块的有效性。


特别说明

尽管NeuFA在均值、中位数上的结果均超过了MFA,但其在50、100毫秒误差内的比例仍然至多为95%和98%。这说明对一个常见的、大约20个音素构成的语句,其有至少64%的可能存在一个超过50毫秒的预测误差,更可能有至少33%的可能存在一个超过100毫秒的预测误差。如此高的出错比例在实际应用中应该是不可接受的。

然而即便如此,NeuFA的另一种用法却更加具有潜力和实际应用价值。NeuFA所习得的两个方向的注意力权重矩阵具有更细粒度的文本语音映射关系,同时也更加健壮,即便在边界预测偏差很大的情况下,也能捕捉到大部分正确位置的信息,同时错误捕捉的部分也基本上是位置相近且发音也相近的情况,不会出现像传统强制对齐方法可能会无法对齐,或者对齐到其他不相关的音素上的情况。同时,这两个矩阵可以非常轻易的实现文本、语音之间的双向维度转换。对于任意可能的语音帧级别特征序列,只要与NeuFA习得的语音识别方向的注意力矩阵相乘,即可得到对应的音素级别特征序列。反之,对于任意可能的文本音素级别特征序列,只要与NeuFA习得的语音合成方向的注意力矩阵相乘,即可得到对应的帧级别特征序列。这些用法可以用在一些非强制对齐任务但需要文本语音信息映射关系的任务中,同时也是我们推荐的用法及创作的初衷。