1 VITS模型介紹
????????VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)是一種結(jié)合變分推理(variational inference)、標(biāo)準(zhǔn)化流(normalizing flows)和對(duì)抗訓(xùn)練的高表現(xiàn)力語音合成模型。
??????? VITS模型是韓國科學(xué)院在2021年6月提出的,VITS通過隱變量而非頻譜串聯(lián)起來語音合成中的聲學(xué)模型和聲碼器,在隱變量上進(jìn)行隨機(jī)建模并利用隨機(jī)時(shí)長預(yù)測器,提高了合成語音的多樣性,輸入同樣的文本,能夠合成不同聲調(diào)和韻律的語音。
??????? 論文地址:VITS論文
2 VITS模型結(jié)構(gòu)
2.1 總體結(jié)構(gòu)
-
先驗(yàn)編碼器:TextEncoder由多層的transformer encoder組成,預(yù)測的結(jié)果輸出均值與方差。
-
后驗(yàn)編碼器:由conv1d+WN網(wǎng)絡(luò)組成+conv1d組成。輸出得到均值與方差,并且使用FLOW得到復(fù)雜分布z_p。通過flow后的復(fù)雜分布z_p與先驗(yàn)編碼器后的分布進(jìn)行對(duì)MAS對(duì)齊估計(jì)。得到attn硬對(duì)齊矩陣。
-
MAS對(duì)齊估計(jì):通過mas(monotonic align search)硬對(duì)齊算法,將文本feature和序列幀feature進(jìn)行一個(gè)硬對(duì)齊,拿到對(duì)齊矩陣Attn。MAS使用DP算法,假設(shè)一個(gè)文本feature其對(duì)應(yīng)的幀序列符合一個(gè)高斯分布,通過DP算法做優(yōu)化,計(jì)算出文本和序列的最優(yōu)對(duì)齊矩陣。
-
解碼器:實(shí)際就是聲碼器HiFi-GAN V1的生成器。應(yīng)用于多人模型時(shí),在說話人嵌入向量之后添加一個(gè)線性層,拼接到的輸出隱變量。
-
判別器:增加了一個(gè)HiFi-GAN的多周期判別器,僅在訓(xùn)練的時(shí)候才起作用,用于對(duì)抗generator的訓(xùn)練。
2.2 VITS的好處及問題
-
VAE 擅長捕捉句子整體的韻律特征,而Flow擅長重建音頻的細(xì)節(jié)特征;將兩者整合,進(jìn)行多任務(wù)訓(xùn)練,實(shí)現(xiàn)參數(shù)與優(yōu)勢(shì)共享。
-
VITS 直接合成音頻,實(shí)現(xiàn)真正意義的端到端語音合成,而不是two-stage階段的序列到序列的合成;從而消除兩個(gè)模型帶來的Gap。
-
傳統(tǒng)兩個(gè)模型的TTS系統(tǒng),GAN 訓(xùn)練通常只應(yīng)用與聲碼器,而VITS 中的 GAN 訓(xùn)練是全局的、對(duì)每個(gè)模塊都有效。
-
vits雖然通過sdp解決了one-to-many的問題,但是從合成結(jié)果來看,因?yàn)閷?duì)韻律,語調(diào)等feature是統(tǒng)一建模的,沒有進(jìn)行拆分細(xì)粒度,因此針對(duì)英文這種語調(diào)豐富的語言,其語調(diào)建模的學(xué)習(xí)的比較平均化,針對(duì)風(fēng)格發(fā)音人來說,整體合成效果來看無法得到較好的語調(diào),比較單一,語調(diào)較平。
2.3 VITS主要包括3塊
- 條件變分自編碼器(Variational AutoEncoder,VAE)
VAE(Variational Autoencoder)是一種深度生成模型,同時(shí)也被視為一種自編碼器。它的結(jié)構(gòu)包含兩部分:編碼器和解碼器。
編碼器的功能是將輸入數(shù)據(jù)轉(zhuǎn)換為一組潛在空間的高維向量。這些潛在向量通常被稱為“隱變量”或“l(fā)atent vectors”。
解碼器則是利用編碼器產(chǎn)生的潛在向量來重建原始輸入數(shù)據(jù)。這個(gè)過程涉及到從潛在空間中采樣,以及根據(jù)采樣到的潛在向量合成新數(shù)據(jù)。
VAE的核心原理是利用變分推斷(variational inference),這是一種統(tǒng)計(jì)學(xué)方法,旨在找到一個(gè)簡單且接近真實(shí)分布的概率密度函數(shù)。在這個(gè)框架下,VAE試圖學(xué)習(xí)數(shù)據(jù)的內(nèi)在分布,而不是直接優(yōu)化對(duì)數(shù)似然函數(shù)。這允許VAE在不完全了解數(shù)據(jù)分布的情況下進(jìn)行有效的數(shù)據(jù)生成和學(xué)習(xí)。
在VAE的訓(xùn)練過程中,首先通過編碼器提取輸入數(shù)據(jù)的潛在向量,然后從中生成樣本來計(jì)算與原始輸入的重構(gòu)誤差。這個(gè)誤差作為損失函數(shù)的一部分,通過反向傳播算法更新網(wǎng)絡(luò)權(quán)重和偏置,以最小化損失。這樣,VAE能夠?qū)W習(xí)到數(shù)據(jù)的潛在表示,并且在實(shí)際應(yīng)用中表現(xiàn)出良好的泛化能力和性能。
總結(jié)來說,VAE的學(xué)習(xí)目標(biāo)是在不完美地知道數(shù)據(jù)分布的情況下,通過學(xué)習(xí)數(shù)據(jù)的內(nèi)在分布來生成新的數(shù)據(jù),同時(shí)在一定程度上保持原有數(shù)據(jù)的特性。這種架構(gòu)不僅適用于圖像、聲音等傳統(tǒng)領(lǐng)域,而且在降維和特征提取方面也表現(xiàn)出了優(yōu)勢(shì)。
- 從變分推斷中產(chǎn)生的對(duì)齊估計(jì)
- 生成對(duì)抗訓(xùn)練
2.4 語音合成里程碑
VITS 語音合成完全端到端TTS的里程碑,主要突破點(diǎn)如下:
-
首個(gè)自然度超過2-stage架構(gòu)SOTA的完全E2E模型。MOS4.43, 僅低于GT錄音0.03。聲稱目前公開系統(tǒng)最好效果。
-
得益于圖像領(lǐng)域中把Flow引入VAE提升生成效果的研究,成功把Flow-VAE應(yīng)用到了完全E2E的TTS任務(wù)中。
-
訓(xùn)練非常簡便,完全E2E。不需要像Fastspeech系列模型需要額外提pitch, energy等特征,也不像多數(shù)2-stage架構(gòu)需要根據(jù)聲學(xué)模型的輸出來finetune聲碼器以達(dá)到最佳效果。
-
擺脫了預(yù)設(shè)的聲學(xué)譜作為鏈接聲學(xué)模型和聲碼器的特征,成功的應(yīng)用來VAE去E2E的學(xué)習(xí)隱性表示來鏈接兩個(gè)模塊
-
多說話人模型自然度不下降,不像其他模型趨于持平GT錄音MOS分
3 使用vits模型進(jìn)行中文語音合成訓(xùn)練
3.1 github項(xiàng)目下載:
git clone https://github.com/PlayVoice/vits_chinese
3.2 運(yùn)行環(huán)境搭建
annoconda環(huán)境搭建詳見:annoconda安裝與使用
conda create -n vits pyton=3.9
conda activate vits
cd vits_chinese
pip install -r requirements.txt
cd monotonic_align
python setup.py build_ext --inplace
3.3 數(shù)據(jù)集下載
下載標(biāo)貝男聲數(shù)據(jù)集,采樣頻率為22050,下載地址如下:
標(biāo)貝男聲數(shù)據(jù)集(第一個(gè)包)
標(biāo)貝男聲數(shù)據(jù)集(第二個(gè)包)
標(biāo)貝男聲數(shù)據(jù)集標(biāo)注數(shù)據(jù)
下載完成后,將數(shù)據(jù)集解壓縮后放到“vits_chinese/data/waves”目錄下,標(biāo)注數(shù)據(jù)放到
“vits_chinese/data”目錄下
3.4 預(yù)訓(xùn)練模型下載
韻律模型下載:韻律模型
下載完成后,移動(dòng)到“vits_chinese/bert/”目錄下
3.5 數(shù)據(jù)預(yù)處理
修改配置文件:vi config/bert_vits.json
"max_wav_value": 32768.0,
"sampling_rate": 22050,
"filter_length": 1024,
python vits_prepare.py -c ./configs/bert_vits.json
3.6 啟動(dòng)訓(xùn)練
python train.py -c configs/bert_vits.json -m bert_vits
3.7 訓(xùn)練后推理
python vits_infer.py --config ./configs/bert_vits.json --model logs/bert_vits/G_700000.pth
其中G_700000.pth為訓(xùn)練后的模型,根據(jù)訓(xùn)練實(shí)際情況指定訓(xùn)練模型進(jìn)行推理
?4 訓(xùn)練結(jié)果展示
經(jīng)過1000個(gè)epoch訓(xùn)練后的語音生成效果如下:
https://download.csdn.net/download/lsb2002/87832170d
?5 預(yù)訓(xùn)練模型
使用標(biāo)貝男聲數(shù)據(jù),使用Tasla-v100GPU,經(jīng)過70萬epochs訓(xùn)練后模型,新speaker可以在此模型上二次訓(xùn)練,達(dá)到快速收斂的效果。預(yù)訓(xùn)練模型下載地址
下載后,將模型存儲(chǔ)到/vits_chinese/logs/bert_vits/目錄下,啟動(dòng)二次訓(xùn)練文章來源:http://www.zghlxwxcb.cn/news/detail-515123.html
????????文章來源地址http://www.zghlxwxcb.cn/news/detail-515123.html
到了這里,關(guān)于AI數(shù)字人:基于VITS模型的中文語音生成訓(xùn)練的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!