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}}
}