Stepwise_Monotonic_Multihead_Attention
1.0.0
Pytorch实现逐步单调多头注意(SMA),类似于增强自动回归变压器TTS的单调性

您可以使用SMA将MEL光谱图匹配到序列长度的文本。以下是一些显示SMA有效性的结果。第一个数字是在115k步骤上没有SMA( hp.sma_tunable=False )的对齐。第二个图是在125K步骤上具有SMA TUNNING( hp.sma_tunable=True )的图。


如您所见,我可以确认应用SMA调音后的对齐方式比普通的多头部注意力高。
首先,定义SMA。假设我们有256维编码和4-Multihead的关注。
from sma import StepwiseMonotonicMultiheadAttention
ref_attention = StepwiseMonotonicMultiheadAttention ( 256 , 256 // 4 , 256 // 4 )然后,您可以应用注意并获得如下的对齐方式。 mel_len是参考音频的帧大小,而seq_len是输入文本的长度(通常是音素的序列)。 fr_max是focused_head()函数的焦点率的最大值。 text_mask和attn_mask都有1.对于将被掩盖的值和0.要保留其他值。
"""
enc_out --- [batch, seq_len, 256]
attn --- [batch, seq_len, mel_len]
enc_text --- [batch, seq_len, 256]
enc_audio --- [batch, mel_len, 256]
text_mask --- [batch, seq_len, 1]
attn_mask --- [batch, seq_len, mel_len]
"""
# Attention
enc_out , attn , fr_max = ref_attention ( enc_text , enc_audio , enc_audio ,
mel_len , mask = attn_mask , query_mask = text_mask )如您所见,SMA返回文本大小( seq_len )中的文本ADIO融合,而不管音频大小如何( mel_len )。
hp.sma_tunable是可以切换逐步单调多头注意的调谐方案的超参数。如果设置为True ,则激活逐步单调的多头注意。否则,就像在变压器中一样,这是一个普通的多头关注。例如,在增强自动回归变压器TTS的单调性(我们将本文称为以下文档中的“参考文件”),例如,您可以在没有SMA的情况下训练模块,以确定某些步骤以更快的培训和模型收敛,然后通过在几个步骤中设置sma_tunable=True来激活SMA。expectation()是计算逐步单调期望得分的fucntion,它在参考文件中表示为alpha 。encoder的输出),键和值来自MEL-SPECTROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROMPROVING(MEL-SPECTROGIN编码框架中的reference encoder的输出,例如,GST方案中的参考编码器)。结果,当前的SMA模块将MEL光谱图从MEL光谱图的长度转换为文本长度。您必须仔细修改查询,密钥和值的维度(尤其是在expectation功能中),具体取决于任务。focused_head函数将在头部之间选择最佳的对角线(单调增加)对齐。它像参考文件一样遵循快速语音框架中的“焦点”。与参考纸不同,最大焦点额定头是选择的,而不是通过阈值选择。但是,您可以通过简单地将prefixed_threshold (例如0.5 )添加到focused_head函数来采用它。 @misc{lee2021sma,
author = {Lee, Keon},
title = {Stepwise_Monotonic_Multihead_Attention},
year = {2021},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/keonlee9420/Stepwise_Monotonic_Multihead_Attention}}
}