IMS Toucan是一種用於培訓,使用和教學的工具包,該工具包在德國斯圖加特大學的自然語言處理研究所(IMS)在德國斯圖加特大學(IMS)中開發,這是大量多語言Toucantts系統的官方住所。我們的系統快速,可控,不需要大量的計算。

如果您覺得此存儲庫有用,請考慮給它星星。大量使我開心,他們非常激勵。如果您想更多地激勵我,甚至可以考慮贊助此工具包。我們只為此使用GitHub贊助商,其他平台上有騙子假裝是創造者。不要讓他們欺騙你。代碼和模型是絕對免費的,由於擁抱面孔的慷慨支持?我們甚至有一個在GPU上運行的模型實例,任何人都可以使用。
在擁抱臉上查看我們的互動性大規模語言演示?
我們還在擁抱面孔上發布了一個大量的多語言TTS數據集?
可以在此處找到支持語言的列表
Python 3.10是推薦版本。
要安裝此工具包,請將其克隆到要使用的計算機上(如果您打算在該機器上訓練型號,則至少應具有一個CUDA啟用GPU。對於推斷,您不需要GPU)。
如果您使用的是Linux,則應安裝以下軟件包,或者如果沒有安裝,則應使用APT-GET安裝(大多數發行版,它們是預安裝的):
libsndfile1
espeak-ng
ffmpeg
libasound-dev
libportaudio2
libsqlite3-dev
導航到您克隆的目錄。我們建議創建和激活虛擬環境,以將基本要求安裝到中。下面的命令總結了您在Linux下需要做的一切。如果您正在運行Windows,則需要更改第二行,請查看VENV文檔。
python -m venv <path_to_where_you_want_your_env_to_be>
source <path_to_where_you_want_your_env_to_be>/bin/activate
pip install --no-cache-dir -r requirements.txt
如果您在此期間登錄時,每次您再次使用該工具再次激活虛擬環境時,請運行第二行。要使用GPU,您無需在Linux機器上做其他事情。在Windows機器上,請查看官方的Pytorch網站,以獲取啟用GPU支持的安裝命令。
如果您不希望通過預處理數據集將數據集存儲在默認子文件夾中而產生的緩存文件,也可以通過編輯Utility/storage_config.py來設置相應的目錄,以適合您的需求(路徑可以相對於reposority root Directory或“絕對”或“絕對”)。
您不需要使用預估計的模型,但是它可以大大加快速度。由於擁抱的臉,他們將在需要時自動下載它們?特別是VB。
Espeak-ng是一項可選要求,可以用多種語言處理許多特殊情況,因此可以使用。
在大多數Linux環境中,它已經安裝了,如果不是,並且您擁有足夠的權利,則可以通過運行來安裝它
apt-get install espeak-ng
對於Windows ,它們在其GITHUB發布頁面上提供了方便的.msi安裝程序文件。在非Linux系統上安裝後,您還需要通過設置PHONEMIZER_ESPEAK_LIBRARY環境變量來告訴PhoneMizer庫在哪裡可以找到您的ESPEAK安裝,該變量在本期中進行了討論。
對於Mac來說,不幸的是,這要復雜得多。多虧了Sang Hyun Park,這是在Mac上安裝它的指南:對於M1 Mac,將ESPEAK-NG安裝到系統上的最方便方法是通過Espeak-ng的Macports端口。 MacPorts本身可以從Macports網站安裝,這也需要Apple的Xcode。安裝Xcode和MacPorts後,您可以通過
sudo port install espeak-ng
如Windows安裝說明中所述,需要將ESPEAK-NG安裝設置為PhoneMizer庫的變量。環境變量是上面鏈接的github線程中給出的PHONEMIZER_ESPEAK_LIBRARY 。但是,您需要將此變量設置為.dylib文件而不是Mac上的.dll文件。為了找到ESPEAK-NG庫文件,您可以運行port contents espeak-ng 。您要查找的特定文件命名為libespeak-ng.dylib 。
您可以使用InferenceInterfaces/ToucanTTSInterface.py加載訓練有素的型號,也可以使用訓練有素的型號。只需使用適當的目錄句柄從中創建一個對象,以識別要使用的模型。其餘的應該在後台解決。您可能需要使用set_language和set_speaker_embedding函數設置語言嵌入或嵌入揚聲器。大多數事情應該是不言自明的。
推理因包含兩種從文本創建音頻的方法。它們是read_to_to_file和read_aloud 。
READ_TO_FILE將字符串和文件名列表作為輸入。它將綜合列表中的句子,並將它們與之間的短暫停頓相連,並將其寫入您作為另一個參數所提供的filepath。
Read_Aloud僅採用一個字符串,然後將其轉換為語音並立即使用系統揚聲器播放。如果將可選的參數視圖設置為true ,則將彈出可視化,您需要關閉該程序才能繼續。
它們的使用在run_interactive_demo.py和run_text_to_file_reader.py中演示。
有簡單的縮放參數可以控制持續時間,音高曲線的方差和能量曲線的方差。您可以在使用交互式演示或讀者時在代碼中更改它們,也可以在使用自己的代碼中使用它時簡單地將它們傳遞到界面。
要更改模型的語言並查看我們驗證的模型中有哪些語言,請查看此處鏈接的列表
在稱為實用程序的目錄中,有一個名為path_to_transcript_dicts.py的文件。在此文件中,您應該編寫一個函數,該函數返回一個字典,該字典在數據集中的每個音頻文件中都具有所有絕對路徑,就像鍵一樣字符串和相應音頻的文本轉錄作為值。
然後轉到Directory Traininginterfaces/配方。在那裡,如果您只想在單個數據集或finetuning_example_multilingual.py上進行finetune,則在其中製作finetuning_example_simple.py的副本。我們將使用此副本作為參考,僅進行必要的更改以使用新數據集。查找呼叫(s)到prepar_tts_corpus函數。替換您剛創建的一個path_to_transcript_dict。然後將相應的緩存目錄的名稱更改為對數據集有意義的事物。還要注意變量save_dir ,這是將檢查點保存到的地方。這是一個默認值,您可以在以後使用命令行參數調用管道時覆蓋它,以防您要從檢查點進行微調,從而將其保存到其他目錄中。最後,將lang參數在創建數據集的創建和對火車循環函數的調用中更改為與您的數據匹配的ISO 639-3語言ID。
在固定示例中給出的火車循環的論點是針對預驗證模型的固定的。如果您想從頭開始訓練,請查看以其名稱具有Toucantts的不同管道,並查看那裡使用的參數。
完成此操作後,我們幾乎完成了,現在我們只需要在頂級的run_training_pipeline.py文件中使用它即可。在所述文件中,從您剛創建的管道中導入運行函數,並給它一個有意義的名稱。現在,在pipeline_dict中,將導入的函數添加為值,並用作關鍵的速記。
建造食譜後,培訓就非常容易:
python run_training_pipeline.py <shorthand of the pipeline>
您可以提供以下任何論點,但不必需要(儘管對於培訓,您絕對應該指定至少一個GPU ID)。
--gpu_id <ID of the GPU you wish to use, as displayed with nvidia-smi, default is cpu. If multiple GPUs are provided (comma separated), then distributed training will be used, but the script has to be started with torchrun.>
--resume_checkpoint <path to a checkpoint to load>
--resume (if this is present, the furthest checkpoint available will be loaded automatically)
--finetune (if this is present, the provided checkpoint will be fine-tuned on the data from this pipeline)
--model_save_dir <path to a directory where the checkpoints should be saved>
--wandb (if this is present, the logs will be synchronized to your weights&biases account, if you are logged in on the command line)
--wandb_resume_id <the id of the run you want to resume, if you are using weights&biases (you can find the id in the URL of the run)>
要進行多GPU培訓,您必須提供多個GPU ID(分開逗號),並使用Torchrun啟動腳本。您還必須指定GPU的數量。這必須匹配您提供的ID數量。小心:Torchrun與Nohup不相容!登錄外殼後,使用tmux以保持腳本運行。
torchrun --standalone --nproc_per_node=4 --nnodes=1 run_training_pipeline.py <shorthand of the pipeline> --gpu_id "0,1,2,3"
在每個時期(或在一定步驟計數之後)之後,如果您登錄並設置標誌,則將將一些日誌寫入控制台以及權重和偏見網站。如果您從內存錯誤中脫離了CUDA,則需要在您正在運行的管道中對訓練_loop的呼叫參數中減少批處理。嘗試以小步驟減少批處理,直到您不再擺脫CUDA內存錯誤。
在您指定要保存的目錄中,將顯示檢查點文件和頻譜圖可視化數據。由於檢查站很大,因此只有五個最新的檢查站將保留。訓練步驟的數量在很大程度上取決於您正在使用的數據以及您是從驗證的檢查站或從頭開始培訓的訓練。您擁有的數據越少,您應採取的步驟越少,以防止可能崩潰。如果您想更早停止,只需殺死該過程,因為一切都是守護程序,所有的兒童過程都應該死。如果剩下一些鬼魂,您可以使用以下命令找到它們並手動殺死它們。
fuser -v /dev/nvidia*
每當保存檢查點時,也可以創建可用於推斷的壓縮版本,該版本命名為Best.py.py
以下是用戶提出的幾點:
run_scorer.py 。UserWarning: Detected call of lr_scheduler.step() before optimizer.step(). - 我們使用一個自定義調度程序,並且火炬錯誤地認為我們以錯誤的順序稱為調度程序和優化器。只要忽略此警告,它就毫無意義。WARNING[XFORMERS]: xFormers can't load C++/CUDA extensions. [...] - 另一個毫無意義的警告。實際上,我們自己不使用Xformers,它只是我們依賴性之一的依賴關係的一部分,但是在任何地方都不使用它。The torchaudio backend is switched to 'soundfile'. Note that 'sox_io' is not supported on Windows. [...] - 只是在Windows下發生,不會影響任何事情。WARNING:phonemizer:words count mismatch on 200.0% of the lines (2/1) [...] - 我們不知道為什麼Espeak開始發出此警告,但是它似乎並沒有影響任何內容,因此似乎可以肯定地忽略。NaN默認學習率在乾淨的數據上起作用。如果您的數據不那麼乾淨,請嘗試使用得分手查找有問題的樣本,或降低學習率。最常見的問題是演講中存在暫停,但沒有任何暗示在文本中。這就是為什麼忽略標點符號的ASR Corpora通常很難用於TTS的原因。 FastSpeech 2和GST的基本pytorch模塊取自ESPNET,Hifi-GAN的Pytorch模塊取自ParallelWaveGAN存儲庫。一些與匹配中概述的基於條件的基於條件的郵政網絡有關的模塊是從官方Matchatts Codebase中獲取的,有些是從Stabletts代碼庫中獲取的。對於插本到頻率的轉換,我們依靠上述ESPEAK-NG以及跨電話。我們使用Eccodec(神經音頻編解碼器)作為中間表示,以緩存火車數據以節省空間。
@inproceedings{lux2021toucan,
year = 2021,
title = {{The IMS Toucan system for the Blizzard Challenge 2021}},
author = {Florian Lux and Julia Koch and Antje Schweitzer and Ngoc Thang Vu},
booktitle = {Blizzard Challenge Workshop},
publisher = {ISCA Speech Synthesis SIG}
}
@inproceedings{lux2022laml,
year = 2022,
title = {{Language-Agnostic Meta-Learning for Low-Resource Text-to-Speech with Articulatory Features}},
author = {Florian Lux and Ngoc Thang Vu},
booktitle = {ACL}
}
@inproceedings{lux2022cloning,
year = 2022,
title = {{Exact Prosody Cloning in Zero-Shot Multispeaker Text-to-Speech}},
author = {Lux, Florian and Koch, Julia and Vu, Ngoc Thang},
booktitle = {SLT},
publisher = {IEEE}
}
@inproceedings{lux2022lrms,
year = 2022,
title = {{Low-Resource Multilingual and Zero-Shot Multispeaker TTS}},
author = {Florian Lux and Julia Koch and Ngoc Thang Vu},
booktitle = {AACL}
}
@inproceedings{lux2023controllable,
year = 2023,
title = {{Low-Resource Multilingual and Zero-Shot Multispeaker TTS}},
author = {Florian Lux and Pascal Tilli and Sarina Meyer and Ngoc Thang Vu},
booktitle = {Interspeech}
publisher = {ISCA}
}
@inproceedings{lux2023blizzard,
year = 2023,
title = {{The IMS Toucan System for the Blizzard Challenge 2023}},
author = {Florian Lux and Julia Koch and Sarina Meyer and Thomas Bott and Nadja Schauffler and Pavel Denisov and Antje Schweitzer and Ngoc Thang Vu},
booktitle = {Blizzard Challenge Workshop},
publisher = {ISCA Speech Synthesis SIG}
}
@inproceedings{lux2024massive,
year = 2024,
title = {{Meta Learning Text-to-Speech Synthesis in over 7000 Languages}},
author = {Florian Lux and Sarina Meyer and Lyonel Behringer and Frank Zalkow and Phat Do and Matt Coler and Emanuël A. P. Habets and Ngoc Thang Vu},
booktitle = {Interspeech}
publisher = {ISCA}
}