檢查ChangElog文件以具有最新修改的全局概述! ?
├── custom_architectures
│ ├── tacotron2_arch.py : Tacotron-2 synthesizer architecture
│ └── waveglow_arch.py : WaveGlow vocoder architecture
├── custom_layers
├── custom_train_objects
│ ├── losses
│ │ └── tacotron_loss.py : custom Tacotron2 loss
├── example_outputs : some pre-computed audios (cf the ` text_to_speech ` notebook)
├── loggers
├── models
│ ├── encoder : the ` AudioEncoder ` is used as speaker encoder for the SV2TTS model *
│ ├── tts
│ │ ├── sv2tts_tacotron2.py : SV2TTS main class
│ │ ├── tacotron2.py : Tacotron2 main class
│ │ ├── vocoder.py : main functions for complete inference
│ │ └── waveglow.py : WaveGlow main class (both pytorch and tensorflow)
├── pretrained_models
├── unitests
├── utils
├── example_fine_tuning.ipynb
├── example_sv2tts.ipynb
├── example_tacotron2.ipynb
├── example_waveglow.ipynb
└── text_to_speech.ipynb檢查主要項目以獲取有關未擴展的模塊 /結構 /主類的更多信息。
*檢查編碼器項目以獲取有關models/encoder模塊的更多信息
models.tts ):| 特徵 | fuction / class | 描述 |
|---|---|---|
| 文本到語音 | tts | 用所需的模型對文本執行TTS |
| 溪流 | tts_stream | 在輸入的文本上執行TTS |
| TTS記錄器 | loggers.TTSLogger | 將logging日誌轉換為聲音並播放 |
text_to_speech筆記本提供了tts功能的具體演示
可用體系結構:
Synthesizer :SV2TTS )Vocoder :SV2TTS模型通過使用部分轉移學習程序(有關詳細信息,請參見下文),從驗證的Tacotron2模型中微調,這加快了訓練的速度。
| 姓名 | 語言 | 數據集 | 合成器 | Vocoder | 揚聲器編碼器 | 培訓師 | 權重 |
|---|---|---|---|---|---|---|---|
| 預處理_tacotron2 | en | ljspeech | Tacotron2 | WaveGlow | / | Nvidia | Google Drive |
| tacotron2_siwis | fr | 西威斯人 | Tacotron2 | WaveGlow | / | 我 | Google Drive |
| SV2TTS_TACOTRON2_256 | fr | Siwis,Voxforge,commonVoice | SV2TTSTacotron2 | WaveGlow | Google Drive | 我 | Google Drive |
| sv2tts_siwis | fr | Siwis,Voxforge,commonVoice | SV2TTSTacotron2 | WaveGlow | Google Drive | 我 | Google Drive |
| SV2TTS_TACOTRON2_256_V2 | fr | Siwis,Voxforge,commonVoice | SV2TTSTacotron2 | WaveGlow | Google Drive | 我 | Google Drive |
| SV2TTS_SIWIS_V2 | fr | 西威斯人 | SV2TTSTacotron2 | WaveGlow | Google Drive | 我 | Google Drive |
模型必須在pretrained_models/ Directory中解開!
重要說明: torch hub上可用的NVIDIA型號需要與pytorch配置正確的兼容GPU。這就是為什麼在預期的keras檢查點中提供兩個模型的原因?
sv2tts_siwis型號是SIWIS (單揚聲器)數據集中的sv2tts_tacotron2_256的微調版本。與簡單地訓練單揚聲器模型相比,單揚聲器數據集上的多揚聲器進行微調傾向於提高穩定性,並產生更語氣的聲音。
該鏈接可用Google COLAB演示!
您還可以在example_outputs/或直接在COLAB筆記本中找到某些音頻;)
檢查本安裝指南以獲取分步說明!
您可能必須安裝ffmpeg進行音頻加載 /保存。
Google Colab演示tensorflow 2.x中實現浪潮batch_size對vocoder inference支持SV2TTS重量similarity loss以測試單揚聲器微調的新培訓程序TTS (正在進行中) GE2E損失訓練的編碼器訓練SV2TTS模型有多種啟用multi-speaker語音綜合的方法:
Embedding層嵌入的speaker ID 。然後在培訓期間學習說話者嵌入。Speaker Encoder (SE)從參考揚聲器中嵌入音頻。這通常被稱為zero-shot voice cloning ,因為它僅需要揚聲器的樣本(無需培訓)即可。prompt-based策略,以通過提示控制演講。SV2TTS體系結構自動語音克隆注意:在下一段中, encoder是指Tacotron Encoder部分,而SE則是指speaker encoder模型(下面詳細介紹)。
Speaker Encoder-based Text-To-Speech靈感來自“從揚聲器驗證到文本到語音(SV2TTS)”的論文。作者提出了Tacotron-2架構的擴展,以包括有關說話者聲音的信息。
這是建議程序的簡短概述:
speaker verification模型。該模型基本上將來自揚聲器的音頻樣本(5-10秒)作為輸入,並在名為embedding的d尺寸矢量上編碼。這種嵌入旨在捕獲有關說話者聲音的相關信息(例如, frequencies , rythm , pitch ,...)。Speaker Encoder (SE)將揚聲器的聲音編碼為克隆。Tacotron-2編碼器部分的輸出相連,以使Decoder可以同時訪問編碼的文本和揚聲器嵌入。目的是, Decoder將學會使用speaker embedding來複製其韻律 /語調 / ...以此說話者的聲音閱讀文本。
上述方法有一些局限性:
Speaker Encoder必須正確分開揚聲器,並以有意義的方式為合成器編碼聲音。為了應對這些限制,建議的解決方案是進行2步培訓:
CommonVoice數據庫上訓練低質量的多演講者模型。這是音頻最大的多語言數據庫之一,以嘈雜 /可變質量音頻為代價。因此,這不適合培訓高質量的模型,而預處理仍然有助於獲得可理解的音頻。SE部分應該能夠以有意義的方式區分說話者,並嵌入(用1-D矢量編碼)。
本文中使用的模型是3層LSTM模型,其歸一化層訓練了GE2E損失。主要限制是,訓練該模型確實很慢,並且在Corentinj Master論文中花了2週的時間在4 GPU(參見他的Github)中進行了2週
該項目提出了基於Convolutional Neural Networks (CNN)簡單體系結構,與LSTM網絡相比,訓練速度要快得多。此外, euclidian距離已被使用,而不是cosine度量,該度量顯示了更快的收斂速度。此外,還提出了基於自定義緩存的生成器來加快音頻處理。這些修改允許在2-3小時內在單個RTX 3090 GPU上訓練99%的精度模型!
為了避免從頭開始訓練SV2TTS模型,這是在單個GPU上完全不可能的,提出了一個新的partial transfer learning程序。
該過程採用具有略有不同體系結構的預訓練模型,並轉移所有常見的權重(如常規轉移學習中)。對於具有不同重量形狀的層,只有共同的部分被轉移,而其餘的重量則初始化為零。這將導致一個具有不同權重的新模型,以模仿原始模型的行為。
在SV2TTS體系結構中,揚聲器嵌入將傳遞到Tacotron2 decoder的複發層。這會導致不同的輸入形狀,從而使層權重矩陣不同。部分轉移學習允許對模型進行修改,從而復制原始單揚聲器Tacotron2模型的行為!
聯繫人:
[email protected]這些項目的目的是支持和推進深度學習技術的教育和研究。為了促進這一點,所有相關的代碼均可根據GNU Affero通用公共許可證(AGPL)V3提供,並補充了禁止商業用途的條款(CF許可文件)。
這些項目被以“免費軟件”發布,使您可以自由使用,修改,部署和共享該軟件,只要您遵守許可證的條款即可。雖然該軟件是免費的,但它不是公共領域,並且保留了版權保護。許可條件旨在確保每個用戶可以為自己的教育和研究項目使用並修改任何版本的代碼。
如果您希望在專有的商業努力中使用此項目,則必須獲得單獨的許可證。有關此過程的更多詳細信息,請直接與我聯繫。
對於我的保護,重要的是要注意,所有項目均以“基礎”為基礎可用,而沒有任何任何形式的保證或條件,無論是明確的還是暗示的。但是,請隨時報告有關存儲庫項目的問題,還是提出請求解決該問題?
如果您發現此項目對您的工作有用,請添加此引文以使其更具可見性! ?
@misc{yui-mhcp
author = {yui},
title = {A Deep Learning projects centralization},
year = {2021},
publisher = {GitHub},
howpublished = {url{https://github.com/yui-mhcp}}
}
該項目的代碼是多個GitHub項目的混合物,具有完全可調節的Tacotron-2實現
dynamic decoder實現而啟發的,該實現現在已經對其進行了優化和更新,以兼容Keras 3 。SV2TTS體系結構的靈感來自該存儲庫,具有較小的差異和優化。論文: