私たちの論文では、Daft-Exprtを提案します。Daft-Exprtは、テキストでのクロススピーカーの韻律転送の最先端を前進させるマルチスピーカーの音響モデルです。これは、特に非常に表現力のあるデータの場合、音声統合における最も挑戦的で、めったに直接対処されないタスクの1つです。 Daft-Exprtは、フィルムコンディショニング層を使用して、アーキテクチャのすべての部分にさまざまな韻律情報を戦略的に注入します。このモデルは、ピッチ、ラウドネス、期間などの従来の低レベルの韻律機能を明示的にエンコードしますが、高レベルの韻律情報は、非常に表現力豊かなスタイルで説得力のある声を生成するのに役立ちます。スピーカーのアイデンティティと韻律情報は、スピーカー間の正確な韻律移転を可能にする敵対的な訓練戦略を通じて解き放たれます。実験結果は、DAFT-Exprtがテキスト間のクロススピーカー韻律転送タスクの強力なベースラインを大幅に上回ると同時に、最先端の表現モデルに匹敵する自然性をもたらすことを示しています。さらに、結果は、モデルがスピーカーのアイデンティティ情報を韻律表現から破棄し、目的の音声で一貫して音声を生成することを示しています。紙実験に関連するオーディオサンプルについては、デモページにアクセスしてください。
完全な開示:このリポジトリで提供されるモデルは、紙の評価と同じではありません。この論文のモデルは、独自のデータで訓練されており、公開されることを防ぎます。
LJ音声データセットとZhou et al。
このリポジトリのリリースにアクセスして、事前に訓練されたモデルをダウンロードし、この同じモデルを使用して韻律転送の例を聞きます。
要件:
Minicondaをダウンロードしてインストールするなど、Python Environment ManagementにCondaを使用することをお勧めします。
Python環境を作成し、MakeFileを使用して依存関係をインストールします。
conda create -n daft_exprt python=3.8 -yconda activate daft_exprtcd environmentmakeすべてのLinux/Conda/PIP依存関係はMakeFileによってインストールされ、リポジトリは編集モードのPIPパッケージとしてインストールされます。
要件:
関連するDockerFileを使用してDocker画像を作成します。
docker build -f environment/Dockerfile -t daft_exprt . このクイックスタートガイドでは、このリポジトリのさまざまなスクリプトを次の方法で使用する方法を示します。
すべてのスクリプトは、スクリプトディレクトリにあります。
DAFT-EXPRTソースコードは、DAFT_EXPRTディレクトリにあります。
スクリプトで使用される構成パラメーターはすべて、hparams.pyでインスタンス化されています。
クイックスタートの例として、Zhou et al。
これにより、合計11のスピーカーが組み合わされます。すべてのスピーカーデータセットは同じルートディレクトリにある必要があります。例えば:
/data_dir
LJ_Speech
ESD
spk_1
...
spk_N
この例では、前のセクションに組み込まれているDocker画像を使用します。
docker run -it --gpus all -v /path/to/data_dir:/workdir/data_dir -v path/to/repo_dir:/workdir/repo_dir IMAGE_ID
ソースコードは、各スピーカーデータセットの特定のツリー構造を期待しています。
/speaker_dir
metadata.csv
/wavs
wav_file_name_1.wav
...
wav_file_name_N.wav
Metadata.csvは次のようにフォーマットする必要があります。
wav_file_name_1|text_1
...
wav_file_name_N|text_N
各データセットには独自の命名法があることを考えると、このプロジェクトは既製のユニバーサルスクリプトを提供しません。
ただし、スクリプトformat_dataset.pyは、LJとESDをフォーマットするコードを既に提案しています。
python format_dataset.py
--data_set_dir /workdir/data_dir/LJ_Speech
LJ
python format_dataset.py
--data_set_dir /workdir/data_dir/ESD
ESD
--language english
このセクションでは、コードは次のとおりです。
利用可能なすべてのフォーマットされたデータ(この例ではLJとESDなど)を前処理するには:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
pre_process
これにより、22kHzのオーディオ用に設定されたデフォルトのハイパーパラメーターを使用してデータを前処理します。
実験に関連するすべての出力は/workdir/repo_dir/trainings/EXPERIMENT_NAMEに保存されます。
データの前処理のために特定のスピーカーをターゲットにすることもできます。たとえば、ESDスピーカーのみを考慮するには:
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
pre_process
前処理関数はいくつかの議論を取ります:
--features_dir :前処理されたデータが保存される絶対パス。 /workdir/repo_dir/datasetsにデフォルト--proportion_validation :検証セットに含まれる例の割合。スピーカーごとにデフォルトは0.1 %になります。--nb_jobs :Pythonマルチプロセスに使用するコアの数。 maxに設定すると、すべてのCPUコアが使用されます。デフォルトは6になります。データを前処理するのが初めてである場合、この手順には数時間かかることに注意してください。
--nb_jobsパラメーターを増やすことにより、コンピューティング時間を短縮できます。
前処理が終了したら、トレーニングを起動します。前処理されたすべてのデータをトレーニングするには:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
train
または、前処理中に特定のスピーカーをターゲットにした場合(ESDスピーカーなど)。
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
train
実験に関連するすべての出力は/workdir/repo_dir/trainings/EXPERIMENT_NAMEに保存されます。
列車の機能にはいくつかの議論があります。
--checkpoint :Daft-Exprtチェックポイントの絶対パス。デフォルト""--no_multiprocessing_distributed :PYTORCHマルチプロセス分散トレーニングを無効にします。デフォルトでFalseになります--world_size :分散トレーニング用のノードの数。デフォルト1に1 。--rank :分散トレーニングのノードランク。デフォルトは0になります。--master :分散トレーニングのセットアップに使用されます。デフォルトでtcp://localhost:54321 。これらのデフォルト値は、マシン上のすべての利用可能なGPUを使用して、Iteration 0から始まる新しいトレーニングを起動します。
このコードは、マシンで1つのGPUのみが利用可能であると想定しています。
デフォルトのバッチサイズと勾配蓄積ハイパーパラメーターは、ペーパーから48のバッチサイズを再現する値に設定されています。
このコードは、テンソルボードのロギングもサポートしています。ロギング出力を表示するには:
tensorboard --logdir_spec=EXPERIMENT_NAME:/workdir/repo_dir/trainings/EXPERIMENT_NAME/logs
トレーニングが終了したら、ボコーダーの微調整のデータセットを作成できます。
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
または、前処理とトレーニング中に特定のスピーカーをターゲットにした場合(ESDスピーカーなど)。
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
微調整データセットは/workdir/repo_dir/trainings/EXPERIMENT_NAME/fine_tuning_datasetに保存されます。
TTS合成にDaft-Exprtを使用する方法の例については、スクリプトSynthesize.pyを実行します。
python synthesize.py
--output_dir OUTPUT_DIR
--checkpoint CHECKPOINT
デフォルトの文と参照発話は、スクリプトで使用されています。
スクリプトは、次の可能性も提供します。
--batch_size :並行して文のバッチを処理します--real_time_factor :選択したバッチサイズを考慮して、DAFT-EXPRTリアルタイムファクターのパフォーマンスを推定します--control :ローカル韻律制御を実行します @article{Zaidi2021,
abstract = {},
journal = {arXiv},
arxivId = {2108.02271},
author = {Za{"{i}}di, Julian and Seut{'{e}}, Hugo and van Niekerk, Benjamin and Carbonneau, Marc-Andr{'{e}}},
eprint = {2108.02271},
title = {{Daft-Exprt: Robust Prosody Transfer Across Speakers for Expressive Speech Synthesis}},
url = {https://arxiv.org/pdf/2108.02271.pdf},
year = {2021}
}
このリポジトリへの貢献は大歓迎です!
フィードバックがある場合は、[email protected]に送信してください。
©[2021] Ubisoft Entertainment。無断転載を禁じます