FastSpeech2論文中文翻譯

FastSpeech2

論文的翻譯,翻譯的挺差的,大概是那意思

只翻譯了摘要、模型部分和實驗部分

摘要:

高級的TTS模型像fastspeech 能夠顯著更快地合成語音相較於之前的自迴歸模型,而且質量相當。FastSpeech模型的訓練依賴於一個自迴歸的教師模型爲了時長的預測(爲了提供更多的信息作爲輸入)和知識蒸餾(爲了簡化數據的分佈在輸出裏),這種知識蒸餾能夠解決一對多的映射問題(也就是相同文字下的多語音變化)在tts中。然而,Fastspeech有幾個缺點:1、教師-學生的蒸餾管道是複雜的。2、從教師模型中提取的時長不是足夠準確的,並且從教師模型蒸餾出來的目標mel譜遭受信息的損失導致了數據簡化,這兩者都限制了聲音的質量。在這篇文章中,我們提出了Fastspeech2,這個能夠解決fastspeech中的問題並且更好的解決了TTS中的一對多映射問題。通過以下方式:1、直接訓練模型通過真實目標代替了教師的簡化輸出。2、引入更多的語音變量信息(像音高、能量和更精準的時長)作爲條件輸入。具體來說,我們從語音波形提取了時長、音高和能量,直接把它們作爲條件條件輸入在訓練階段,並且使用預測值在推理階段。我們進一步設計了fastspeech2s,這個是第一次嘗試去平行地直接產生語音波形從文本中,享受全端到端訓練的優點並且甚至可以更快推理相比於FastSpeech。實驗結果展示:1、fastspeech2和2s超越了fastspeech的聲音品質在更簡化訓練管道和減少訓練時間的基礎上。2、fastspeech2和2s能夠匹配自迴歸模型的聲音品質,但是推理速度遠遠快於自迴歸模型。能聽的聲音樣本在:https://speechresearch. github.io/fastspeech2/

 

模型部分:

在這一部分,我們第一描述FS2的設計動機,並且介紹了FS2的體系結構,目標是改進FS,更好的解決一對多映射問題,簡化訓練,得到更高品質的聲音。

動機:之前自迴歸可以通過之前的語音信息預測,但是非自迴歸中只有文本信息,信息不足導致目標語音變化敏感,泛化能力弱。(可能是加embedding也沒法提取想要的信息

FS設計了2個方式去解決一對多問題:一個是減少數據方差通過在目標側的知識蒸餾,簡化了目標。二是引入了時長信息(從教師模型中的attention map提取的)爲了展開文本序列匹配mel譜的長度,這些可以提供更多的輸入信息解決一對多問題。儘管知識蒸餾和從教師模型提取時長信息能供提高FS的訓練效果,他們也帶來了幾個問題:一是兩個階段 教師-學生訓練管道導致訓練過程過於複雜。二是信息丟失(重複3遍了。。。)給了2表證明上面的話

在FS2中,刪了教師-學生蒸餾簡化了訓練過程,用真實語音避免損失,提高了時長的準確性和引入了更多信息解決一對多,下面詳細說。

模型概述

FS2總體結構圖如下所示:

Encoder轉換了音素序列到隱藏序列,並且【變量adaptor】加入了不同的變量信息,如時長、音高、能量到隱藏序列中,最終mel譜解碼器平行地轉換了被adapted(翻譯成適應過的?大概意思就是加了那些亂七八糟信息的)的隱藏序列到mel譜序列中。我們使用了前饋形的Transformer塊,這種Transformer塊是由自注意力層和1d卷積疊加而成的,作爲基礎結構在encoder和mel譜decoder中。不同於FS依賴於教師-學生蒸餾管道和從教師模型得到的音素時長。FS2做了重大的提高,首先,我們刪了教師-學生蒸餾管道並直接用真實語音做目標(太羅嗦了,上面說好幾遍了,不翻了)。第二,我們的變量適配器不僅包括長度調節,還包括了音高和能量的預測,長度調節使用的是通過強制切分獲得的音素時長,強制切分比自迴歸教師模型的注意力層準確得多。並且附加的音高和能量預測能夠提供更多的變量信息,對於tts一對多映射問題的解決是重要的。第三,又說了一遍FS2s的端對端優點,沒有mel譜了。。在下面的小節中,我們將詳細介紹我們的方法中的【變量適配器】和直接波形生成的設計。

變量適配器

【變量adaptor】的目標是增加變量信息(如時長、音高、能量等)到音素隱藏序列,爲了能夠提供足夠的信息去預測變化的語音爲了tts一對多映射問題。結構如下所示:

【變量adaptor】由1、時長預測器2、音高預測器和3、能量預測器組成,更多的變化信息可以被【變量adaptor】加入,這些信息將在接下來討論。在訓練階段,我們用從記錄中提取的真實的時長、音高、能量值作爲輸入到隱藏序列去預測目標語音,同時,我們分別單獨的預測時長、音高和能量,這些被用來在推測階段去合成目標語音。在這一小節,我們首先描述了【變量預測器】的模型細節,然後描述如何讓時長、音高和能量信息在【變量adaptor】中起到影響。

 

變量預測器:如圖所示:

變量預測器有相似的模型結構和FS中的時長預測器。這把隱藏的序列作爲輸入並且預測了每個音素(時長)的變化,或每一幀(音高和能量)通過均方誤差損失。變量預測器由2層的ReLU激活的1D卷積網絡組成,每一層都緊跟着LN(層標準化)和dropout層,並且一個額外的線性層去投影隱藏狀態到輸出序列。對於時長預測器,時長是每個音素在對數域上的長度。對於音高預測器,輸出序列是幀級F0序列,對於能量預測器,輸出是每個mel譜幀的能量序列。所有的預測器共享相同的模型結構但是不同的模型參數。

 

變量信息的細節:除了文字,語音錄音通常包含了大量的其他變量信息,包括:1、音素時長,代表了語速。2、音高,傳達感情的關鍵,對於感知有着很大的影響。3、能量,指示mel譜的幀級幅度,直接影響mel譜計算的損失。4、感情,風格、說話人等等。變量信息不完全是文本決定的,由於一對多映射問題,是有害於非自迴歸TTS模型的訓練的,在這個階段,我們描述了細節關於使用音高、能量和時長在【變量adaptor】。

         時長:爲了提高分割的準確性並減少輸入輸出之間的信息差距,代替了通過使用預訓練自迴歸TTS提取音素時長,我們提取了音素時長通過MFA,一個高性能的開源的語音文字切割系統,它可以在成對文本音頻語料庫上訓練,而無需任何手動對齊註釋。我們轉換了MFA的結果到音素級序列並且把它餵給長度修正器(大概是fastspeech裏的方法?所謂的LR)去展開因素序列的隱藏狀態

         音高和能量:我們提取了F0從原始的波形(用pyworld提的,沒有用有/沒有聲音的flags,直接把沒有聲音的幀置零,對於合成語音沒有影響),提取時候用和目標譜相同的幀移爲了觀察每一幀的音高,並且計算了每個stft幀的振幅的L2範數作爲能量。然後我們量化了每幀的f0和能量到256種可能值(f0是對數刻度的,能量是原始值)並且分別編碼他們到一個one-hot矩陣序列中。在訓練過程中,我們對音高和能量查表,嵌入到p和e中,(就是常用的lookup embedding)並將它們添加到隱藏序列中。音高和能量的預測器直接預測F0和能量的值代替one-hot矩陣並用均方誤差訓練。在推理階段,我們預測F0和能量使用變量預測器。

 

FastSpeech2s:

 

先不翻譯了,簡單概括下就是主要參考了wavenet和p-wavegan,用了對抗的設計(gan),也用了stft損失,應該就是把一個類似p-gan接在了網絡後邊。後面比訓練速度的時候,這個也沒有比,估計由於帶了聲碼器,所以訓練挺慢的

 

實驗部分:

實驗裝置:

數據集:我們評價fs2用了ljspeech。大概13100英語音頻片段(24小時)和對應的文字。我們把數據集分割爲三部分,12228個樣本訓練用,349個樣本(LJ003)驗證,523個(LJ001和LJ002)用來測試。爲了緩解錯誤發音問題,我們轉換了文本序列到音速序列,用了別人的開源工具包(https://github.com/Kyubyong/g2p)。根據shen的研究,我們轉換原始波形到mel譜,並設置幀長和幀移分別爲1024和256,採樣率爲22050。

模型配置:我們的fastspeech由4個前饋形Transformer(FFT)塊組成,在編碼器和mel解碼器中。在每個FFT塊中,音素嵌入的維度和自注意力隱藏大小設置爲256。注意力頭的數量設置爲2並且在自注意力層後的2層卷積網絡中的1D卷積的核大小被設置爲9(也太繞了吧。。。)。輸入/輸出大小爲256/1024是第一層網絡並1024/256是第二層網絡(這個大概說的是上面的2層卷積網絡?)。輸出的線性層轉換256維隱藏狀態到80維mel譜。並且用MAE做優化。音素的詞典大小是76,包含了標點符號。在變量預測器中,1d卷積的卷積核大小設置爲3,這兩層的輸入/輸出的維度爲256/256,並且dropout速率設置爲0.5。我們的波形解碼器(fastspeech2s)由1層濾波器大小64的轉置1D卷積和30層擴張殘餘卷積塊組成,其1D卷積的跳過通道大小和核大小分別設置爲64和3。FS2s中的D(鑑別器)的配置和P-gan相同。底下列出了實驗中使用的所有模型的超參數和配置。

訓練和推理:我們訓練Fast speech2在1張nvidia V100上,batchsize是48個句子。我們使用Adam優化器,其中β1 = 0.9, β2 = 0.98, ε = 10−9並和【attention is all you need】使用相同的學習率計劃表。訓練到160k步收斂。在推理階段,mel譜通過訓練好的p-gan生成音頻。

Fastspeech2s中,我們訓練模型在2張v100上,batchsize是每個GPU上6句,波形解碼器以20480個波形樣本片段對應的切片隱藏狀態作爲輸入。優化器和學習率跟fs2相同。對抗訓練的細節跟p-wavegan一樣,需要6000k步收斂。

 

後續部分基本爲結果對比及分析,暫時不翻譯了,大概就是Fs2s效果很好。。。

參數表:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章