Deep Voice Report個人翻譯
個人翻譯,水平有限,僅供參考。
摘要
我們展示了Deep Voice,一個完全由深度神經網路構建的生產質量的文本到語音系統。Deep Voice為真正的端到端神經語音合成奠定了基礎。該系統包括五個主要構件:用於定位音素邊界的分段模型,字形到音素轉換模型,音素持續時間預測模型,基頻預測模型和音頻合成模型。對於分割模型,我們提出了一種使用連接主義時間分類(CTC)丟失的深度神經網路進行音素邊界檢測的新方法。對於音頻合成模型,我們實現了WaveNet的一個變體,它需要更少的參數,並且訓練速度比原來的要快。通過對每個組件使用神經網路,我們的系統比傳統的文本託管系統更簡單,更靈活,每個組件都需要費力的特徵工程和廣泛的領域專業知識。最後,我們展示了使用我們的系統進行推理可以比實時更快地進行,並且在CPU和GPU上描述優化的WaveNet推理內核,在現有實現上實現高達400倍的加速。
1.介紹
合成從文本到人類語音,俗稱文本到語音(TTS),是許多應用中,如語音設備、導航系統和盲人輔助視覺系統的必要成分。從根本上說,它允許人機交互而不需要視覺界面。現代TTS系統基於複雜的多級處理流水線,每個處理流水線都可能依賴於手工設計的特徵和啟發式演算法。由於這種複雜性,開發新的TTS系統可能是非常費力和困難的。
Deep Voice的靈感來源於傳統的文本到語音系統,它採用與之相同的結構,但用神經網路替換所有組件,並使用更簡單的特點:首先我們將文本轉換為音素,然後使用音頻合成模型將語言特徵轉換為語音。與之前的產品(使用人工設計的特徵,如頻譜包絡,頻譜參數,非周期性參數等)不同,我們唯一的特徵是帶有音調的音素,音素持續時間和基頻(F0)。這種功能的選擇使我們的系統更容易適用於新的數據集、語音和其它領域,而無需任何手動數據注釋或附加特徵工程。我們通過重新訓練整個演算法來證明這一說法,而對全部新數據集沒有任何超參數變化,這個全新數據集只包含音頻和未對齊的文本轉錄,併產生相對高質量的語音。在傳統的TTS系統中,這種調整需要幾天到幾周的調整,而Deep Voice則只需要幾個小時的手動操作和模型訓練所需的時間。
實時推斷是高質量TTS系統的要求;沒有它,系統對於對於TTS的大多數應用程序是毫無用處的。之前的工作已經證明,WaveNet能夠產生接近於人類的語音。然而,由於模型的高頻自回歸特性,WaveNet產生了了一個令人生畏的計算量,並且迄今為止我們還不知道這種模型是否可用於生產系統。我們以肯定的方式回答了這個問題,並演示了高效的、比實時更快的WaveNet推理內核,可以生成高質量的16 kHz音頻,並且比之前的WaveNet推理實現實現了400倍的加速。
2.相關工作
以前的研究使用神經網路作為TTS系統中幾個組件的替代品,這裡面包括字形到音素轉換模型、音素持續時間預測模型、基頻預測模型和音頻合成模型。然而,與Deep Voice不同的是,這些系統都不能解決TTS的全部問題,而且其中許多系統都使用專門為其領域開發的專用人工設計功能。
最近,在參數音頻合成方面有很多新的研究,如WaveNet,SampleRNN和Char2Wav。雖然WaveNet可用於有條件和無條件的音頻生成,但SampleRNN僅用於無條件音頻生成,Char2Wav使用基於注意力的音素持續時間模型和相當於F0預測模型的SampleRNN進行擴展,有效地為基於SampleRNN的聲碼器提供本地調節信息。
Deep Voice與這些系統在幾個關鍵方面有所不同。首先,Deep Voice是完全獨立的;培訓一個新的Deep Voice系統不需要預先存在的TTS系統,並且可以使用短音頻剪輯和相應的文本轉錄本的數據集從頭開始。相比之下,再現上述系統中的任一個需要訪問和理解預先存在的TTS系統,因為它們使用來自另一TTS系統的特徵,無論是在訓練還是推理時間。
其次,Deep Voice最大限度地減少了手工功能的使用;它使用單位元組編碼字元來進行音素轉換,單編碼音素和應力,音素持續時間(以毫秒為單位),以及可以使用任何F0估計演算法從波形計算的歸一化對數基頻。所有這些都可以輕鬆地從音頻和副本中輕鬆獲得。相比之下,以前的作品使用的是更為複雜的特徵表示,這使得在沒有預先存在的TTS系統的情況下再現系統是不可能的。WaveNet使用TTS系統中的幾個特徵,包括一個單詞中音節的數量,短語中音節的位置,音素當前幀的位置,以及語音頻譜的動態特徵,如頻譜和激勵參數,以及他們的時間派生。Char2Wav依靠WORLD TTS系統的聲碼器特性來預先訓練它們的對準模塊,包括F0,頻譜包絡和非周期參數。
最後,我們著重於創建一個準產品級的系統,這需要我們的模型實時運行以進行推理。Deep Voice可以在幾分之一秒內合成音頻,並在合成速度和音頻質量之間提供可調節的折中。相比之下,WaveNet以前的結果需要幾分鐘的運行時間才能合成一秒鐘的音頻。我們不了解SampleRNN的類似基準,但是原始出版物中描述的三層架構在推理過程中需要大約4-5倍於我們最大的WaveNet模型的計算量,因此實時運行該模型可能會遇到挑戰。
3 TTS系統元素
如圖1所示,TTS系統由五個主要組成部分組成:
(1)字形到音素模型。它將書面文本(英文字元)轉換成音素(使用諸如ARPABET的音素字母表編碼)。
(2)分段模型。它在語音數據集中定位音素邊界。給定一個音頻文件和一個音素的音素轉錄,該分割模型識別每個音素開始和結束在音頻中的哪個位置。
(3)音素持續時間模型。它是用來預測音素序列(發音)中每個音素的時間持續時間。
(4)基頻模型。它是用來預測音素是否有聲:如果是,則模型預測音素持續時間內的基本頻率(F0)。
(5)音頻合成模型。它實現了字形到音素的輸出,音素持續時間和基頻預測模型,並以高採樣率合成對應於期望文本的音頻。
圖1描述(a)訓練程序和(b)推理程序的系統圖
在圖中,輸入在左邊,輸出在右邊。在我們的系統中,持續時間預測模型和F0預測模型是通過一個聯合損失訓練的單個神經網路進行的。
在推理過程中,通過字形到音素模型或音素字典輸入文本以生成音素。接下來,音素被提供為音素持續時間模型和F0預測模型的輸入,以將持續時間分配給每個音素並生成F0輪廓。最後,音素,音素持續時間和F0被用作音頻合成模型的本地調節輸入特徵,產生最終話語。
與其他模型不同,在推斷過程中不使用分割模型。而是用於用音素邊界來注釋訓練語音數據。音素邊界意味著持續時間,可用於訓練音素持續時間模型。用音素和音素持續時間以及基本頻率注釋的音頻被用來訓練音頻合成模型。
在下面的章節中,我們將詳細介紹所有構建塊。
3.1字形到音素模型
我們的字素到音素模型是基於由(Yao&Zweig,2015)開發的編碼器解碼器架構。然而,我們使用具有門控循環單元(GRU)非線性和同樣深度的單向GRU解碼器的多層雙向編碼器。每個解碼器層的初始狀態被初始化為對應的編碼器前向層的最終隱藏狀態。該架構是訓練與教授強迫和解碼是使用波束搜索進行的。我們在編碼器中使用3個雙向層,每個編碼器有1024個單元,解碼器使用3個相同尺寸的單向層,寬度為5個候選者。在訓練期間,我們在每個重複層之後以0.95的概率使用丟失。
對於訓練,我們使用Adam優化演算法,批量大小為64,學習速率為,並且每1000次迭代施加0.85的退火速率。
3.2分割模型
我們的分割模型被訓練以輸出給定話語和目標音素序列之間的對齊。這個任務類似於在語音識別中將語音與書寫輸出對齊的問題。在這個領域中,連接主義時態分類(CTC)損失函數已經被證明集中在字元對齊以學習聲音和文本之間的映射。我們採用最先進的語音識別系統來調整卷積遞歸神經網路架構的音素邊界檢測。
用CTC訓練的生成音素序列的網路將為每個輸出音素產生簡短的峰值。雖然這足以大致將音素與音頻對齊,但是不足以精確地檢測精確的音素邊界。為了克服這個問題,我們訓練預測音素對的序列而不是單個音素。然後這個深度神經網路傾向於以接近兩個音素之間的邊界的時間步長輸出音素對。
為了說明我們的標籤編碼,考慮字元串「Hello!」。要將其轉換為音素對標籤序列,需要先將發音轉換為音素(使用發音詞典,例如CMUDict等),並將音素序列的兩端用無聲音音素填充以獲得「sil HH EH L OW sil」。最後,構建連續的音素對並獲得「(sil, HH), (HH, EH), (EH, L), (L, OW), (OW, sil)」。
通過以十毫秒的步幅計算20個Mel頻率倒譜係數(MFCC)來輸入音頻。在輸入層之上,有兩個卷積層(時間和頻率的二維卷積),三個雙向循環GRU層,最後是一個softmax輸出層。卷積層使用單位步長,高度9(頻率)和寬度5(時間)的內核,並且循環層使用512個GRU單元(對於每個方向)。在最後的卷積和重複圖層之後應用0.95的概率。為了計算音素對錯誤率(PPER),我們使用波束搜索進行解碼。為了解碼音素邊界,我們執行寬度為50的束搜索,其中相鄰音素對由至少一個音素重疊並且跟蹤每個音素對的發音中的位置。
訓練中,我們使用Adam優化演算法,批量大小為128,學習速率為,每500次迭代應用0.95的退火速率。
3.3音素持續時間和基頻模型
我們使用單一架構來共同預測音素持續時間和基於時間的基頻。模型的輸入是一系列具有應力的音素,每個音素和壓力被編碼為一個熱點矢量。該體系結構包括兩個完全連接的層,每層256個單元,隨後是兩個單向遞歸層,每個層具有128個GRU單元,最後是完全連接的輸出層。在初始完全連接圖層和最後一個重複圖層之後,應用概率為0.8的丟棄率。
最後一層為每個輸入音素產生三個估計值:音素持續時間,音素髮出的概率(即具有基本頻率)和20個時間相關的F0值,它們在預測的持續時間內均勻採樣。
該模型通過最小化聯合損失來優化,所述聯合損失結合了音素持續時間誤差,基本頻率誤差,音素被發聲概率的負對數似然性和與F0相對於時間的絕對變化成比例的懲罰項以施加平滑。
訓練中,我們使用Adam優化演算法,批量大小為128,學習速率為,每400次迭代應用0.9886的退火速率。
3.4語音合成模塊
我們的音頻合成模型是WaveNet的一個變種。WaveNet由一個調節網路和一個自動回歸網路組成,該網路可以將語言特徵上離散採樣得到的樣本點產生期望的頻率。我們改變層數l,殘餘頻道的數量r(每層的隱藏狀態的維度)和跳過通道的數量s(在輸出層之前投影層輸出的尺寸)。
WaveNet由一個上採樣和調節網路組成,其次是l 2×1卷積層、帶有r個剩餘輸出通道和雙曲正切門控非線性。我們用和將卷積分解為每個時間步長的兩個矩陣乘法。這些層與剩餘連接相連接。每一層的隱藏狀態連接到一個lr個矢量,並投影到跳過通道,然後是兩層1×1的卷積(權重為和)。
WaveNet使用轉置卷積進行上採樣和調節。我們發現,如果我們首先用一疊雙向准RNN(QRNN)層對輸入進行編碼,然後通過重複執行到所需頻率的上採樣,我們的模型執行得更好,訓練速度更快,並且需要更少的參數。
我們的取得很高質量的最終模型使用l=40層,r=64個殘留信道,s=256個跳過通道。訓練中,我們使用Adam優化演算法,批量大小為8,學習速率為,每1000次迭代應用0.9886的退火速率。
4.測試結果
我們在一個內部的英語語音資料庫上訓練我們的模型,這個資料庫包含大約20個小時的語音數據,分成13079個語音。另外,我們為我們在Blizzard 2013數據的子集上訓練的模型展示了音頻合成結果。這兩個數據集都是由專業的女性演講者講的。
另外,我們所有的模型都是使用TensorFlow框架實現的。
4.1分割模塊結果
我們使用8顆TitanX Maxwell GPU進行訓練,在GPU中平均分配每個批次,並使用ring all-reduce來計算在不同GPU上計算的平均梯度,每次迭代大約需要1300毫秒。在大約14,000次迭代之後,該模型收斂到7%的音素對錯誤率。我們還發現,音素邊界不必是精確的,隨機移動音素邊界10-30毫秒沒有任何區別的音頻質量,所以懷疑音頻質量對錯誤率未超過某一點並不敏感。
4.2字形到音素模塊的結果
我們對從CMUDict獲得的數據訓練一個字形到音素的模型。我們刪除所有不以字母開頭,包含數字或者有多個發音的單詞,從原始的133854個字形音素序列對中留下124978個單詞。
我們在單個TitanX Maxwell GPU上進行訓練,每次迭代大約需要150毫秒。經過大約20000次迭代後,模型收斂到5.8%的音素錯誤率和28.7%的字錯誤率,這與之前的報告結果一致。與以前的工作不同,我們在解碼期間不使用語言模型,包括在我們的數據集中有多個發音的單詞。
4.3音素持續時間和基本頻率模塊結果
我們在單個TitanX Maxwell GPU上進行訓練,每次迭代大約需要120毫秒。經過大約20000次迭代後,模型收斂到38毫秒(對於音素持續時間)和29.4Hz(對於基頻)的平均絕對誤差。
4.4語音合成模塊結果
我們將音頻數據集中的話語分成一個塊,每個塊有四分之一的上下文,在開始時用四分之一秒的靜音填充每個話語。我們過濾掉主要是沉默的塊,最後總共有74348個塊。
們訓練了不同深度的模型,包括剩餘層堆疊中的10,20,30和40層。我們發現20層以下的模型會導致音質不佳。20層,30層和40層模型都產生高質量的可識別語音,但是40層模型比20層模型具有更低的雜訊,可以用高品質的耳機進行檢測。
以前的工作已經強調了在確定模型質量時接受場尺寸的重要性。事實上,20層模型只有40層模型的一半。然而,當以48kHz運行時,具有40層的模型只有83毫秒的接收場,但仍然產生高質量的音頻。這表明20層模型的接受場是足夠的,我們推測音頻質量的差異是由於接受場大小以外的其他因素。
我們在8顆TitanX Maxwell GPU上訓練,每個GPU有一個塊,使用ring allreduce來平均在不同GPU上計算出的梯度。每次迭代大約需要450毫秒。我們的模型在大約300000次迭代之後收斂。我們發現單個1.25s塊足以使GPU上的計算飽和,並且批處理不會提高訓練效率。
與高維生成模型一樣,模型損失與個體樣本的感知質量有些不相關。雖然具有非常高的損耗聲音模型明顯嘈雜,模型優化低於一定的閾值沒有損失指示其質量。另外,模型架構的變化(如深度和輸出頻率)可能會對模型損失產生重大影響,同時對音頻質量的影響很小。
為了評估我們TTS管道各個階段的感知質量,我們使用CrowdMOS工具包和方法,從Mechanical Turk獲得了眾多的平均評分(MOS)評級。為了分離音頻預處理效果、WaveNet模型質量、音素持續時間和基頻模型質量,我們給出了各種話語類型的MOS分數,包括WaveNet輸入(持續時間和F0),從真實音頻中提取而不是由其他模型合成的綜合結果,結果如表1所示。我們有意將絕對真實樣本包含在批評者評估的每批樣本中,以突出人類言語中的三角洲,並允許評估者區分模型之間的細微差別;這種方法的不足之處在於,由此產生的MOS分數將顯著低於僅以合成音頻樣本呈現的評分者。
表1平均意見評分
首先,當簡單地將音頻流從48kHz下採樣到16kHz時,我們發現MOS的顯著下降,尤其是與μ律壓縮和量化相結合,這可能是因為48kHz採樣被呈現給評估者作為基準一個5分和一個低質量雜訊合成結果被表示為1。當將絕對真實持續時間和F0一起使用時,我們的模型得分很高,我們的模型的95%置信區間與地面真實樣本的相交。然而,使用合成頻率減小了MOS,進一步合成持續時間顯著減小了它。我們得出結論:自然TTS發展的主要障礙在於持續時間和基頻預測,而我們的系統在這方面並沒有有意義的進展。最後,我們的最佳模型運行速度略低於實時(見表2),所以我們證實,合成質量可以通過獲得比實時快1至2倍的模型的分數來調製模型大小進行快速推理。
我們還測試了WaveNet模型,這些模型是從原始的WaveNet出版物的全套特徵進行訓練的,但是發現在這些模型和模型之間沒有感覺上的差異。
表2針對float32和int16中不同模型的CPU和GPU推理內核基準
5結論
在這項工作中,我們通過建立一個完全的神經系統來證明當前的深度學習方法對於高質量的文本到語音引擎的所有組件是可行的。我們將推理優化為比實時更快的速度,表明這些技術可以用於以流媒體方式實時生成音頻。我們的系統可以在沒有任何人員參與的情況下進行訓練,大大簡化了創建TTS系統的過程。
我們的工作打開了許多新的可能的探索方向。通過仔細優化,GPU上的模型量化和CPU上的int8量化,以及其他體系結構的實驗,可以進一步提高推理性能。另一個自然的方向是消除階段之間的分離,並將分割,持續時間預測和基頻預測模型直接合併到音頻合成模型中,從而將問題轉化為完整的序列到序列模型,從而創建單個端到端模型,結束了可訓練的TTS系統,使我們能夠在沒有中間監督的情況下訓練整個系統。代替融合模型,通過更大的訓練數據集或生成建模技術來改進持續時間和頻率模型可能會對語音自然度產生影響。
TAG:小奧的學習筆記 |