在本文中,我們提出了Styletts 2,這是一種文本到語音(TTS)模型,該模型利用大型語音語言模型(SLM)利用樣式擴散和對抗性訓練來實現人級TTS合成。 Styletts 2通過將樣式建模為通過擴散模型建模為潛在的隨機變量,從而生成了最合適的文本樣式,而無需參考語音,從而實現了有效的潛在擴散,同時受益於擴散模型提供的各種語音綜合。此外,我們採用了大型的預訓練的SLM,例如WAVLM,作為我們的新型可區分持續時間建模來進行端到端訓練,從而改善了語音自然性。 STYLETTS 2超過了單揚聲器LJSpeech數據集上的人類錄音,並在MultiSpeaker VCTK數據集上匹配了以英語為母語的人。此外,當在庫列茨數據集中接受培訓時,我們的模型優於以前的公開模型,用於零攝像機的適應器。這項工作實現了單個和多言論揚聲器數據集上的第一個人級TTS綜合,展示了風格擴散和對對抗性訓練的潛力。
論文:https://arxiv.org/abs/2306.07691
音頻樣本:https://styletts2.github.io/
在線演示:擁抱面孔(感謝@fakerybakery的精彩在線演示)
train_second.py的DDP(加速器) (我已經盡力解決此問題,但沒有成功,因此,如果您願意提供幫助,請參閱#7) git clone https://github.com/yl4579/StyleTTS2.git
cd StyleTTS2pip install -r requirements.txt在Windows上添加:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -U還要安裝Phonemizer並提及如果要運行演示:
pip install phonemizer
sudo apt-get install espeak-ng第一階段訓練:
accelerate launch train_first.py --config_path ./Configs/config.yml第二階段培訓(DDP版本不起作用,因此當前版本使用DP,如果您想提供幫助,請再次查看#7) :
python train_second.py --config_path ./Configs/config.yml您可以連續運行,它將同時訓練第一階段和第二階段。該模型將以“ epoch_1st_%05d.pth”和“ epoch_2nd_%05d.pth”的格式保存。檢查點和張板日誌將保存在log_dir上。
數據列表格式需要為filename.wav|transcription|speaker ,請參見Val_list.txt作為示例。多演講者模型需要揚聲器標籤,因為我們需要為樣式擴散模型訓練示例參考音頻。
在config.yml中,有一些重要的配置需要照顧:
OOD_data :SLM對抗訓練的分發文本的路徑。格式應為text|anything 。min_length :訓練的最小OOD文本長度。這是為了確保綜合語音的長度最小。max_len :訓練的最大音頻長度。單元是框架。由於默認的躍點尺寸為300,因此一個幀約為300 / 24000 )秒。如果您遇到不可存儲的問題,請降低這一點。multispeaker :如果您想訓練多孔模型,請設置為True。這是需要的,因為DeOiser的架構對於單個和多座模型的模型有所不同。batch_percentage :這是為了確保在SLM對抗訓練中沒有內存(OOM)問題。如果遇到OOM問題,請為此設置較低的數字。在Utils文件夾中,有三個預訓練的模型:
batch_size或max_len 。有關更多信息,您可以參考第10期。該腳本是從使用DP的train_second.py修改的,因為DDP不適用於train_second.py 。如果您願意解決此問題,請參閱上面的大膽部分。
python train_finetune.py --config_path ./Configs/config_ft.yml請確保在文件夾下下載並解壓縮了庫檢查站。 LJSpeech上的默認配置config_ft.yml finetunes,具有1小時的語音數據(大約1K樣本),適用於50個時期。這花了大約4個小時才能完成四個NVIDIA A100。質量比從頭開始訓練24小時的語音數據訓練的LJSpeech型號稍差(類似於LjSpeech上的NaturalSpeech),該模型花費了2.5天大約2.5天的時間才能完成四個A100。可以在#65(評論)找到樣品。
如果您使用的是單個GPU (因為該腳本與DDP不起作用)並希望節省訓練速度和VRAM,則可以執行(感謝@korakoe在#100上製作腳本):
accelerate launch --mixed_precision=fp16 --num_processes=1 train_finetune_accelerate.py --config_path ./Configs/config_ft.yml@Kreevoz在填充方面的常見問題已經詳細說明了,並提出了最大化音頻質量的建議:#81。其中一些也適用於從頭開始培訓。 @iieleven11還制定了微調指南:#128。
joint_epoch之後的記憶中:這很可能是因為您的GPU RAM不夠大,無法進行SLM對抗訓練。您可能會跳過這一點,但質量可能會更糟。設置joint_epoch數量大於epochs可以跳過SLM前進訓練。 有關詳細信息,請參閱inference_ljspeech.ipynb(單式揚聲器)和inperion_libritts.ipynb(多演講者)。對於Libritts,您還需要在運行演示之前下載Reference_audio.zip並在demo下解壓縮。
可以通過https://huggingface.co/yl4579/styletts2-ljspeech/tree/main下載24 kHz的LJSpeech語料庫上的預易款Styletts 2。
可以在https://huggingface.co/yl4579/styletts2-libritts/tree/main上下載列表上的預易款styletts 2模型。
您可以導入Styletts 2並在您自己的代碼中運行它。但是,推理取決於GPL許可的軟件包,因此它不直接包含在此存儲庫中。 GPL許可的叉子具有可導入的腳本,以及一個實驗流的API等。也提供了使用Gruut(儘管在PhoneMizer和Gruut之間不匹配的質量降低質量)的完全MIT許可的軟件包。
在使用這些預訓練的模型之前,您同意通知聽眾,除非您有許可使用您合成的語音,否則先前訓練的模型是由預訓練的模型合成的。也就是說,您只同意使用其說話者許可的聲音直接或通過許可來克隆聲音,然後才能在公開合成的聲音公開之前,或者您必須公開宣布,如果您沒有使用這些聲音的許可,則這些聲音是合成的。
代碼:麻省理工學院許可證
預先訓練的模型:在使用這些預訓練的模型之前,您同意通知聽眾,除非您有許可使用您合成的語音,否則先前訓練的模型會合成語音樣本。也就是說,您只同意使用其說話者許可的聲音直接或通過許可來克隆聲音,然後才能在公開合成的聲音公開之前,或者您必須公開宣布,如果您沒有使用這些聲音的許可,則這些聲音是合成的。