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モデルから微調整されています。
| 名前 | 言語 | データセット | シンセサイザー | ボコーダ | スピーカーエンコーダー | トレーナー | ウェイト |
|---|---|---|---|---|---|---|---|
| retrained_tacotron2 | en | ljspeech | Tacotron2 | WaveGlow | / | nvidia | Googleドライブ |
| tacotron2_siwis | fr | Siwis | Tacotron2 | WaveGlow | / | 自分 | Googleドライブ |
| SV2TTS_TACOTRON2_256 | fr | Siwis、Voxforge、CommonVoice | SV2TTSTacotron2 | WaveGlow | Googleドライブ | 自分 | Googleドライブ |
| sv2tts_siwis | fr | Siwis、Voxforge、CommonVoice | SV2TTSTacotron2 | WaveGlow | Googleドライブ | 自分 | Googleドライブ |
| SV2TTS_TACOTRON2_256_V2 | fr | Siwis、Voxforge、CommonVoice | SV2TTSTacotron2 | WaveGlow | Googleドライブ | 自分 | Googleドライブ |
| SV2TTS_SIWIS_V2 | fr | Siwis | SV2TTSTacotron2 | WaveGlow | Googleドライブ | 自分 | Googleドライブ |
モデルはpretrained_models/ディレクトリで解凍する必要があります!
重要な注意: torch hubで利用可能なNVIDIAモデルには、 pytorchの正しい構成を備えた互換性のあるGPUが必要です。これが、両方のモデルが予想されるkerasチェックポイントで提供される理由です。
sv2tts_siwisモデルは、 SIWIS (単一スピーカー)データセットのsv2tts_tacotron2_256の微調整バージョンです。単一スピーカーのデータセットでマルチスピーカーを微調整すると、単一スピーカーモデルのトレーニングと比較して、安定性が向上し、より多くのイントネーションで音声を生成する傾向があります。
このリンクでGoogle Colabデモを利用できます!
また、 example_outputs/ 、またはcolabノートブックで直接生成されたオーディオを見つけることもできます。
ステップバイステップの指示については、このインストールアジオンガイドを確認してください!
オーディオの読み込み /保存のためにffmpegをインストールする必要がある場合があります。
Google Colabデモを行いますtensorflow 2.xにWaveglowを実装しますvocoder inferenceにbatch_sizeサポートを追加します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)を使用して、スピーカーの音声をクローンにエンコードします。Decoderエンコードされたテキストとスピーカーの埋め込みの両方にアクセスできるように、 Tacotron-2エンコーダーパーツの出力と連結されます。目的は、 Decoder speaker embeddingを使用してその韻律 /イントネーションをコピーすることを学ぶことです。
上記のアプローチにはいくつかの制限があります。
Speaker Encoder 、スピーカーを正しく分離し、シンセサイザーにとって意味のある方法で音声をエンコードする必要があります。これらの制限に取り組むために、提案されたソリューションは2段階のトレーニングを実行することです。
CommonVoiceデータベースで低品質のマルチスピーカーモデルをトレーニングします。これは、騒々しい /可変品質のオーディオを犠牲にして、オーディオの最大の多言語データベースの1つです。したがって、これは良質のモデルをトレーニングするのに適していませんが、前処理は依然としてわかりやすいオーディオを取得するのに役立ちます。SE部分は、スピーカーを区別し、意味のある方法でそれらを埋め込んで(1-Dベクトルにエンコード)する必要があります。
この論文で使用されるモデルは、GE2E損失で訓練された正規化層を備えた3層LSTMモデルです。主な制限は、このモデルのトレーニングは非常に遅く、Corentinjマスターの論文で4 GPUに2週間かかったことです。
このプロジェクトは、 Convolutional Neural Networks (CNN)に基づいたよりシンプルなアーキテクチャを提案します。これは、 LSTMネットワークと比較してトレーニングがはるかに高速です。さらに、 euclidian距離は、より速い収束を示すcosineメトリックではなく使用されています。さらに、オーディオ処理をスピードアップするために、カスタムキャッシュベースのジェネレーターが提案されています。これらの変更により、単一のRTX 3090 GPUで2〜3時間以内に99%の精度モデルをトレーニングできました!
SV2TTSモデルをゼロからトレーニングすることを避けるために、これは単一のGPUで完全に不可能になるため、新しいpartial transfer learning手順が提案されています。
この手順は、わずかに異なるアーキテクチャを備えた事前に訓練されたモデルを取り、すべての一般的な重みを(通常の転送学習のように)転送します。異なる重みの層の場合、共通部分のみが転送され、残りの重みはゼロに初期化されます。これにより、元のモデルの動作を模倣するための重みが異なる新しいモデルが生じます。
SV2TTSアーキテクチャでは、スピーカーの埋め込みはTacotron2 decoderの再発層に渡されます。これにより、異なる入力形状になり、レイヤー重量が異なるようになります。部分転送学習により、モデルをニチアル化して、元の単一スピーカーTacotron2モデルの動作を複製することができます!
連絡先:
[email protected]これらのプロジェクトの目標は、ディープラーニングテクノロジーの教育と研究をサポートおよび促進することです。これを容易にするために、すべての関連するコードは、商用使用を禁止する条項で補足されたGNU Affero General Public License(AGPL)V3で利用可能になります(ライセンスファイルを参照)。
これらのプロジェクトは「フリーソフトウェア」としてリリースされており、ライセンスの条件を遵守すると、ソフトウェアを自由に使用、変更、展開、および共有できます。ソフトウェアは自由に利用できますが、パブリックドメインではなく、著作権保護を保持しています。ライセンス条件は、すべてのユーザーが独自の教育プロジェクトおよび研究プロジェクトのためにコードの任意のバージョンを使用および変更できるように設計されています。
このプロジェクトを独自の商業的努力で使用したい場合は、別のライセンスを取得する必要があります。このプロセスの詳細については、直接お問い合わせください。
私の保護のために、すべてのプロジェクトは、明示的または黙示的な保証または条件なしに、「現状のまま」ベースで利用できることに注意することが重要です。ただし、リポジトリのプロジェクトに関する問題を報告することをheしないでください。
このプロジェクトがあなたの仕事で役立つと思うなら、この引用を追加してより多くの視界を与えてください! ?
@misc{yui-mhcp
author = {yui},
title = {A Deep Learning projects centralization},
year = {2021},
publisher = {GitHub},
howpublished = {url{https://github.com/yui-mhcp}}
}
このプロジェクトのコードは、完全にモジュール可能なTacotron-2実装を持つための複数のGitHubプロジェクトの混合物です
dynamic decoder実装からインスピレーションを受けています。これは、 Keras 3に互換性があるように最適化および更新されています。SV2TTSアーキテクチャは、このリポジトリからインスピレーションを受け、わずかな違いと最適化を伴います。論文: