Meta-StylesepeechのPytorch実装:マルチスピーカー適応テキストからスピーチへの生成。


naiveブランチ) mainブランチ)Python依存関係をインストールできます
pip3 install -r requirements.txt
前処理されたモデルをダウンロードして、それらをoutput/ckpt/LibriTTS_meta_learner/に配置する必要があります。
英語のマルチスピーカーTTSの場合、実行します
python3 synthesize.py --text "YOUR_DESIRED_TEXT" --ref_audio path/to/reference_audio.wav --restore_step 200000 --mode single -p config/LibriTTS/preprocess.yaml -m config/LibriTTS/model.yaml -t config/LibriTTS/train.yaml
生成された発話はoutput/result/に配置されます。合成されたスピーチには、 ref_audioのスタイルがあります。
バッチ推論もサポートされています
python3 synthesize.py --source preprocessed_data/LibriTTS/val.txt --restore_step 200000 --mode batch -p config/LibriTTS/preprocess.yaml -m config/LibriTTS/model.yaml -t config/LibriTTS/train.yaml
preprocessed_data/LibriTTS/val.txtのすべての発話を合成する。これは、参照スタイルについて自分自身を参照する検証データセットの再構築と見なすことができます。
合成された発話のピッチ/ボリューム/発話レートは、目的のピッチ/エネルギー/持続時間比を指定することで制御できます。たとえば、発言率を20%上げて、体積を20%減らすことができます
python3 synthesize.py --text "YOUR_DESIRED_TEXT" --restore_step 200000 --mode single -p config/LibriTTS/preprocess.yaml -m config/LibriTTS/model.yaml -t config/LibriTTS/train.yaml --duration_control 0.8 --energy_control 0.8
制御可能性は、StyleSepeechの重要な関心ではなく、fastspeech2に由来することに注意してください。各スタイル係数の制御性については、Styler [Demo、Code]を参照してください。
サポートされているデータセットは次のとおりです
走る
python3 prepare_align.py config/LibriTTS/preprocess.yaml
いくつかの準備のために。
強制アライメントのために、モントリオールの強制アライナー(MFA)を使用して、発話と音素シーケンスの間のアライメントを取得します。データセットの事前に抽出されたアライメントはここに記載されています。 preprocessed_data/LibriTTS/TextGrid/でファイルを解凍する必要があります。または、自分でアライナーを実行できます。
その後、前処理スクリプトを実行します
python3 preprocess.py config/LibriTTS/preprocess.yaml
モデルを訓練します
python3 train.py -p config/LibriTTS/preprocess.yaml -m config/LibriTTS/model.yaml -t config/LibriTTS/train.yaml
論文で説明されているように、スクリプトは、 meta_learning_warmupの手順までナイーブモデルを事前にトレーニングしてから開始し、その後、エピソードトレーニングを介して追加のステップのモデルをメタトレーニングします。
使用
tensorboard --logdir output/log/LibriTTS
LocalHostでTensorboardを提供します。損失曲線、合成されたメルスペクトルグラム、およびオーディオが表示されます。



16kHzの代わりに22050Hzサンプリングレートを使用します。80から128の入力MEL-Spectrogramをアップサンプリングします。28.197Mです。48または20ではなく、トレーニングで最大16バッチサイズを使用します。これはmax_seq_lenよりも長くデータを除外するために、次のスクリプトで達成できます。 python3 filelist_filtering.py -p config/LibriTTS/preprocess.yaml -m config/LibriTTS/model.yaml
train.txtの同じ場所でtrain_filtered.txtが生成されます。 @misc{lee2021stylespeech,
author = {Lee, Keon},
title = {StyleSpeech},
year = {2021},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/keonlee9420/StyleSpeech}}
}