這篇文章,旨在為具有深入學(xué)習(xí)專業(yè)水平的開發(fā)人員準(zhǔn)備,將幫助您生成一個(gè)準(zhǔn)備生產(chǎn)、人工智能、文本到語(yǔ)音的模型。
幾十年來,將文本實(shí)時(shí)轉(zhuǎn)換為高質(zhì)量、自然發(fā)音的語(yǔ)音一直是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。最先進(jìn)的語(yǔ)音合成模型是基于參數(shù)神經(jīng)網(wǎng)絡(luò) 1 。文本到語(yǔ)音( TTS )合成通常分兩步完成。
第一步將文本轉(zhuǎn)換成時(shí)間對(duì)齊的特征,如 mel-spe CTR 圖或 F0 頻率等語(yǔ)言特征;
第二步將時(shí)間對(duì)齊的功能轉(zhuǎn)換為音頻。
優(yōu)化的 Tacotron2 模型 2 和新的 WaveGlow 模型 1 利用 NVIDIA Volta 上的 張量核 和圖靈 GPUs 將文本實(shí)時(shí)轉(zhuǎn)換為高質(zhì)量的自然發(fā)音語(yǔ)音。生成的音頻具有清晰的人聲,沒有背景噪音。
下面是一個(gè)使用此模型可以實(shí)現(xiàn)的示例:
在遵循 Jupyter 筆記本 中的步驟之后,您將能夠?yàn)槟P吞峁┯⒄Z(yǔ)文本,并且它將生成一個(gè)音頻輸出文件。所有重現(xiàn)結(jié)果的腳本都發(fā)布在我們的 NVIDIA 深度學(xué)習(xí)示例 存儲(chǔ)庫(kù)的 GitHub 上,其中包含幾個(gè)使用張量核心的高性能培訓(xùn)配方。此外,我們還開發(fā)了一個(gè) Jupyter 筆記本 ,供用戶創(chuàng)建自己的容器映像,然后下載數(shù)據(jù)集,逐步重現(xiàn)訓(xùn)練和推理結(jié)果。
模型
我們的 TTS 系統(tǒng)是兩個(gè)神經(jīng)網(wǎng)絡(luò)模型的組合:
從“ 基于 Mel-Spe CTR 圖預(yù)測(cè)的條件波網(wǎng)自然合成 TTS ”改進(jìn)的 Tacotron 2 (圖 1 )模型;
來自“ WaveGlow :一種基于流的語(yǔ)音合成生成網(wǎng)絡(luò) ”的基于流的神經(jīng)網(wǎng)絡(luò)模型。
Tacotron 2 和 WaveGlow 模型構(gòu)成了一個(gè) TTS 系統(tǒng),用戶可以在沒有任何附加韻律信息的情況下從原始文本合成自然發(fā)音的語(yǔ)音。
Tacotron 2 型號(hào)
Tacotron 2 2 是一種直接從文本合成語(yǔ)音的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。該系統(tǒng)由一個(gè)遞歸的序列到序列特征預(yù)測(cè)網(wǎng)絡(luò)組成,該網(wǎng)絡(luò)將字符嵌入映射到 mel 尺度的 spe CTR 圖,然后由一個(gè)改進(jìn)的 WaveNet 模型作為聲碼器,從這些 spe CTR 圖合成時(shí)域波形,如圖 1 所示。
圖 1 : Tacotron 2 系統(tǒng)架構(gòu)框圖 1
網(wǎng)絡(luò)由一個(gè)編碼器(藍(lán)色)和一個(gè)解碼器(橙色)組成。編碼器將一個(gè)字符序列轉(zhuǎn)換成一個(gè)隱藏的特征表示,作為解碼器的輸入來預(yù)測(cè) spe CTR 圖。輸入文本(黃色)是使用學(xué)習(xí)的 512 維字符嵌入來呈現(xiàn)的,它通過三個(gè)卷積層(每個(gè)包含 512 個(gè)形狀為 5 × 1 的濾波器)的堆棧,然后進(jìn)行批量規(guī)范化和 ReLU 激活。編碼器輸出被傳遞到注意力網(wǎng)絡(luò)( gray ),該網(wǎng)絡(luò)將完整編碼序列總結(jié)為每個(gè)解碼器輸出步驟的固定長(zhǎng)度上下文向量。
解碼器是一個(gè)自回歸遞歸神經(jīng)網(wǎng)絡(luò),它從編碼的輸入序列中一次一幀地預(yù)測(cè) mel-spe CTR 圖。前一個(gè)時(shí)間步的預(yù)測(cè)首先通過一個(gè)包含兩個(gè)完全連接的 256 個(gè)隱藏 ReLU 單元的層的小 pre 網(wǎng)絡(luò)。 prenet 輸出和注意力上下文向量被連接起來,并傳遞到一個(gè)由兩個(gè) LSTM 層組成的堆棧,其中包含 1024 個(gè)單元。通過線性變換,將 LSTM 輸出與注意上下文向量的連接進(jìn)行投影,以預(yù)測(cè)目標(biāo) spe CTR 圖幀。最后,將預(yù)測(cè)的 mel-spe CTR 圖通過一個(gè) 5 層卷積后網(wǎng)絡(luò),該網(wǎng)絡(luò)預(yù)測(cè)一個(gè)殘差來加入預(yù)測(cè),以改善整體重建。每個(gè) post-net 層由 512 個(gè)形狀為 5 × 1 的過濾器組成,并進(jìn)行批量標(biāo)準(zhǔn)化處理,除最后一層外,所有過濾器均激活。
我們實(shí)現(xiàn)的 Tacotron 2 模型與 1 中描述的模型不同,我們使用:
退出而不是分區(qū),以使 LSTM 層正則化;
用 WaveGlow 模型 2 代替 WaveNet 來合成波形。
WaveGlow 模型
WaveGlow 1 是一種基于流的網(wǎng)絡(luò),能夠從 mel-spe CTR 圖生成高質(zhì)量的語(yǔ)音。 WaveGlow 結(jié)合了 Glow 5 和 WaveNet 6 的見解,以提供快速、高效和高質(zhì)量的音頻合成,而無需自動(dòng)回歸。 WaveGlow 只使用一個(gè)網(wǎng)絡(luò)實(shí)現(xiàn),只使用一個(gè)單一的成本函數(shù)進(jìn)行訓(xùn)練:使訓(xùn)練過程簡(jiǎn)單而穩(wěn)定。我們當(dāng)前的模型以 55 * 22050 = 1212750 的速度合成樣本,這比每秒 22050 個(gè)樣本的“實(shí)時(shí)”要快 55 倍。平均意見得分( MOS )表明,它提供的音頻質(zhì)量與在同一數(shù)據(jù)集上訓(xùn)練的最佳公開可用 WaveNet 實(shí)現(xiàn)一樣好。
WaveGlow 是一種生成模型,它通過從分布中采樣來生成音頻。為了使用神經(jīng)網(wǎng)絡(luò)作為生成模型,我們從一個(gè)簡(jiǎn)單的分布中提取樣本,在我們的例子中,是一個(gè)零均值的球面高斯分布,其維數(shù)與我們期望的輸出相同,然后將這些樣本通過一系列層將簡(jiǎn)單分布轉(zhuǎn)換為具有期望分布的分布。在這種情況下,我們根據(jù) mel-spe CTR 圖對(duì)音頻樣本的分布進(jìn)行建模。
如圖 2 所示,對(duì)于通過網(wǎng)絡(luò)的前向傳遞,我們將八個(gè)音頻樣本組作為向量,“壓縮”操作,如 Glow 5 所示。然后我們通過幾個(gè)“流程步驟”處理這些向量。這里的流動(dòng)步驟由可逆的 1 × 1 卷積和仿射耦合層組成。在仿射耦合層中,一半的信道作為輸入,然后產(chǎn)生乘法和加法項(xiàng),用于縮放和平移剩余的信道。
圖 2 : WaveGlow 網(wǎng)絡(luò) 2
啟用自動(dòng)混合精度
混合精度 通過以半精度格式執(zhí)行操作,同時(shí)以單精度( FP32 )存儲(chǔ)最少的信息,從而在網(wǎng)絡(luò)的關(guān)鍵部分盡可能多地保留信息,從而顯著提高了計(jì)算速度。啟用混合精度利用了 Volta 和 Turing GPUs 上的 張量核 ,在訓(xùn)練時(shí)間上提供了顯著的加速——在運(yùn)算最密集的模型架構(gòu)上,整體加速高達(dá) 3 倍。
使用 混合精度訓(xùn)練 之前需要兩個(gè)步驟:
在適當(dāng)?shù)那闆r下移植模型以使用 FP16 數(shù)據(jù)類型;
手動(dòng)添加損耗縮放以保持較小的漸變值。
通過使用 PyTorch 中的自動(dòng)混合精度( AMP )庫(kù), APEX 中啟用了混合精度,該庫(kù)在檢索時(shí)將變量強(qiáng)制轉(zhuǎn)換為半精度,同時(shí)以單精度格式存儲(chǔ)變量。為了在反向傳播中保持較小的梯度值,應(yīng)用漸變時(shí)必須包含 損耗標(biāo)度 步驟。在 PyTorch 中,通過使用 AMP 提供的 scale _ loss ()方法,可以很容易地應(yīng)用損耗縮放。要使用的縮放值可以是 dynamic 或 fixed 。
通過在訓(xùn)練腳本中添加– amp run 標(biāo)志,可以啟用張量核心的混合精度訓(xùn)練,您可以在我們的 Jupyter 筆記本 中看到示例。
培訓(xùn)業(yè)績(jī)
表 1 和表 2 比較了采用 PyTorch -19 。 06-py3 NGC 容器 在帶有 8-V100 16GB GPUs 的 NVIDIA DGX-1 上使用改進(jìn)的 Tacotron 2 和 WaveGlow 模型的訓(xùn)練性能。在整個(gè)訓(xùn)練周期內(nèi),平均性能數(shù)( Tacotron 2 的輸出 mel spe CTR 圖每秒, WaveGlow 每秒輸出樣本數(shù))。
表 2 : WaveGlow 模型的訓(xùn)練性能結(jié)果
如表 1 和表 2 所示,使用張量核進(jìn)行混合精度訓(xùn)練可以實(shí)現(xiàn)顯著的加速,并且可以有效地?cái)U(kuò)展到 4 / 8 GPUs 。混合精度訓(xùn)練也保持了與單精度訓(xùn)練相同的精度,并允許更大的批量。語(yǔ)音質(zhì)量取決于模型大小和訓(xùn)練集大小;使用具有自動(dòng)混合精度的張量核,可以在相同的時(shí)間內(nèi)訓(xùn)練出質(zhì)量更高的模型。
考慮到高質(zhì)量所需的模型大小和培訓(xùn)量, GPUs 提供了一個(gè)最合適的硬件架構(gòu),并將吞吐量、帶寬、可伸縮性和易用性進(jìn)行了最佳組合。
推理性能
表 3 和表 4 分別顯示了從 1-V100 和 1-T4 GPU 上的 1000 次推理運(yùn)行中收集的 Tacotron2 和 WaveGlow 文本到語(yǔ)音系統(tǒng)的推理統(tǒng)計(jì)數(shù)據(jù)。從 Tacotron2 推斷開始到 WaveGlow 推斷結(jié)束,測(cè)量潛伏期。這些表包括平均延遲、標(biāo)準(zhǔn)偏差和延遲置信區(qū)間(百分比值)。吞吐量是以每秒生成的音頻樣本數(shù)來衡量的。 RTF 是一個(gè)實(shí)時(shí)因子,它告訴我們?cè)?1 秒鐘的壁時(shí)間內(nèi)產(chǎn)生了多少秒的語(yǔ)音。
表 3 : 1-V100 GPU 上 Tacotron2 和 WaveGlow 系統(tǒng)的推斷統(tǒng)計(jì)
與 FP32 相比,我們可以看到混合精度推理具有較低的平均延遲和延遲置信區(qū)間(百分比值),同時(shí)實(shí)現(xiàn)更高的吞吐量并生成更長(zhǎng)的平均 RTF ( 1 秒壁時(shí)間內(nèi)的語(yǔ)音秒數(shù))。
表 4 : 1-T4 GPU 上 Tacotron2 和 WaveGlow 系統(tǒng)的推斷統(tǒng)計(jì)
一步一步運(yùn)行 Jupyter 筆記本
為了達(dá)到上述結(jié)果:
按照 GitHub 上的腳本操作或逐步運(yùn)行 Jupyter 筆記本 來訓(xùn)練 Tacotron 2 和 WaveGlow v1 。 5 模型。在 Jupyter 筆記本 中,我們提供了完全自動(dòng)化的腳本來下載和預(yù)處理 LJ 語(yǔ)音數(shù)據(jù)集 ;
數(shù)據(jù)準(zhǔn)備步驟完成后,使用提供的 Dockerfile 構(gòu)建修改后的 Tacotron 2 和 WaveGlow 容器,并在容器中啟動(dòng)一個(gè)分離的會(huì)話;
要使用帶張量核心的 AMP 或使用 FP32 訓(xùn)練我們的模型,請(qǐng)使用 Tacrotron 2 的默認(rèn)參數(shù)和使用單個(gè) GPU 或多個(gè) GPUs 的 WaveGlow 模型執(zhí)行訓(xùn)練步驟。
Training
Tacotron2 和 WaveGlow 模型分別獨(dú)立地進(jìn)行訓(xùn)練,兩個(gè)模型在訓(xùn)練過程中通過短時(shí)傅立葉變換( STFT )得到 mel-spe CTR 圖。這些 mel-spe CTR 圖用于 Tacotron 2 情況下的損耗計(jì)算,以及在波輝光的情況下作為網(wǎng)絡(luò)的調(diào)節(jié)輸入。
整個(gè)驗(yàn)證數(shù)據(jù)集的平均損失是訓(xùn)練損失的平均值。對(duì)于 Tacotron 2 模型,性能是以每秒的總輸入令牌數(shù)來報(bào)告的,而對(duì)于 WaveGlow 模型,則是以每秒的總輸出樣本數(shù)來報(bào)告的。在輸出日志中,這兩個(gè)度量值都被記錄為 train _ iter _ items / sec (每次迭代后)和 train _ epoch _ items / sec (在 epoch 上的平均值)。結(jié)果在整個(gè)訓(xùn)練周期內(nèi)取平均值,并在訓(xùn)練中包含的所有 GPUs 上求和。
默認(rèn)情況下,我們的訓(xùn)練腳本將使用張量 cCores 啟動(dòng)混合精度訓(xùn)練。您可以通過刪除– fp16 run 標(biāo)志來更改此行為。
Inference
在訓(xùn)練了 Tacotron 2 和 WaveGlow 模型,或者下載了各自模型的預(yù)先訓(xùn)練的檢查點(diǎn)之后,您可以執(zhí)行以文本為輸入的推理,并生成一個(gè)音頻文件。
您可以根據(jù)文本文件的長(zhǎng)度自定義文本文件的內(nèi)容,可能需要將– max decoder steps 選項(xiàng)增加到 2000 。 Tacotron 2 模型是在 LJ 語(yǔ)音數(shù)據(jù)集 上訓(xùn)練的,音頻樣本不超過 10 秒,相當(dāng)于 860 個(gè) mel spe CTR 圖。因此,這種推斷在生成相似長(zhǎng)度的音頻樣本時(shí)可以很好地工作。我們將 mel-spe CTR 圖長(zhǎng)度限制設(shè)置為 2000 (約 23 秒),因?yàn)閷?shí)際上它仍然可以生成正確的聲音。如果需要,用戶可以將較長(zhǎng)的短語(yǔ)分成多個(gè)句子,并分別合成它們。
關(guān)于作者
Maggie Zhang 是 NVIDIA 的深度學(xué)習(xí)工程師,致力于深度學(xué)習(xí)框架和應(yīng)用程序。她在澳大利亞新南威爾士大學(xué)獲得計(jì)算機(jī)科學(xué)和工程博士學(xué)位,在那里她從事 GPU / CPU 異構(gòu)計(jì)算和編譯器優(yōu)化。
Grzegorz Karch 是 NVIDIA 深度學(xué)習(xí)軟件組的高級(jí) CUDA 算法工程師,專注于語(yǔ)音合成的生成模型。 Grzegorz 擁有德國(guó)斯圖加特大學(xué)計(jì)算機(jī)科學(xué)博士學(xué)位,在那里他的研究集中在科學(xué)可視化上。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5242瀏覽量
105772 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5554瀏覽量
122482
發(fā)布評(píng)論請(qǐng)先 登錄
明遠(yuǎn)智睿SSD2351開發(fā)板:語(yǔ)音機(jī)器人領(lǐng)域的變革力量
NVIDIA推出多個(gè)生成式AI模型和藍(lán)圖
如何使用自然語(yǔ)言處理分析文本數(shù)據(jù)
NVIDIA推出全新生成式AI模型Fugatto
語(yǔ)音識(shí)別與自然語(yǔ)言處理的關(guān)系
ASR與自然語(yǔ)言處理的結(jié)合
如何使用 Llama 3 進(jìn)行文本生成
NVIDIA在加速計(jì)算和生成式AI領(lǐng)域的創(chuàng)新
NVIDIA文本嵌入模型NV-Embed的精度基準(zhǔn)

評(píng)論