タコトロンに基づくコードスイッチング音声合成エンドツーエンド生成TTSモデル、CS-TacotronのPytorch実装。 Tacotronの通常のバージョンについては、このリポジトリを参照してください。
最近の機械学習テキスト(TTS)モデルの幅広い成功により、現実的なスピーチの合成に関する有望な結果は、人間のような声を合成するマシンの能力が証明されています。しかし、中国語と英語のコードスイッチングテキストからスピーチへの合成のドメインではほとんど進歩していません。マシンは、多言語で入力と出力の両方を処理することを学ぶ必要があります。コードスイッチングは、スピーカーが2つ以上の言語を交互に交互に行うときに発生します。今日、人々は日常生活でコードスイッチング言語で通信しているため、多言語の入力と出力を処理するためにTTSなどの話された言語技術を開発する必要があります。
この作業では、最先端のエンドツーエンドのテキストからスピーチの生成モデルのタコトロンに基づいて構築されたコードスイッチングタコトロンを提示します(Wang et al。、2017)。 CS-Tacotronは、生のCSテキストに条件付けられたコードスイッチング音声を合成することができます。 CSテキストとオーディオペアを考えると、モデルは適切なデータの前処理でエンドツーエンドをトレーニングできます。 Farthurmoreは、国立台湾大学(NTU)で提供されるコースデジタル信号処理(DSP)に由来する中国英語コードスイッチングレクチャーベースのデータセットであるLecturedSPデータセットでモデルをトレーニングします。この挑戦的な多言語発電タスクでタコトロンモデルをうまく機能させるために、いくつかの重要な実装手法を提示します。 CS-Tacotronは、CSテキストからCSスピーチを生成する能力を持っており、LecturedSPのスピーカーのスタイルで鮮明に話します。
この作業の詳細については、 Report.pdfを参照してください。
プルリクエストは大歓迎です!
CS-Tacotronのオーディオサンプル。以下のフレーズはすべて、トレーニング中に目に見えません。
Python 3をインストールします。
プラットフォームに応じて、 Pytorchの最新バージョンをインストールします。パフォーマンスを向上させるには、実行可能な場合はGPUサポート(CUDA)でインストールします。このコードは、Pytorch 1.0以降で動作します。
(オプション)プラットフォームに応じて、Tensorflowの最新バージョンをインストールします。これはオプションですが、今のところ音声処理に必要です。
要件をインストールする:
pip3 install -r requirements.txt
警告:プラットフォームに応じて、TorchとTensorflow / Tensorflow-GPUをインストールする必要があります。ここでは、このプロジェクトを構築したときに使用するPytorchおよびTensorflowバージョンをリストします。
python3 test.py --interactive --plot --long_input --model 470000
python3 test.py --plot --model 480000 --test_file_path ../data/text/test_sample.txt
* '--long_input' is optional to add
注:独自のデータセットでモデルをトレーニングしました:LecturedSP。現在、このデータセットはパブリックリリースには利用できず、ラボ内のプライベートコレクションのままです。このデータセットの詳細については、「Report.pdf」を参照してください。
選択したコードスイッチデータセットをダウンロードしてください。
データセットを~/data/textおよび~/data/audioに解除します。
開梱後、データツリーは、デフォルトのパスが機能するために次のようになります。
./CS-Tacotron
|- data
|- text
|- train_sample.txt
|- test_sample.txt
|- audio
|- sample
|- audio_sample_*.wav
|- ...
注:次のセクションでは、データセットのファイル名に従ってパスを設定します。これは、一部のサンプルデータのデモにすぎません。データセットの形式は、このコードが機能するために提供されたサンプルデータと一致する必要があります。
src/preprocess.pyを使用してテキストデータを事前に処理する:
python3 preprocess.py --mode text --text_input_raw_path ../data/text/train_sample.txt --text_pinyin_path '../data/text/train_sample_pinyin.txt'
src/preprocess.pyを使用してオーディオデータを事前に処理する:
python3 preprocess.py --mode audio --audio_input_dir ../data/audio/sample/ --audio_output_dir ../data/audio/sample_processed/ --visualization_dir ../data/audio/sample_visualization/
オーディオプリプロースの違いの視覚化:
src/preprocess.pyを使用して、テキストとオーディオからモデル対応のメタファイルを作成します:
python3 preprocess.py --mode meta --text_pinyin_path ../data/text/train_sample_pinyin.txt --audio_output_dir ../data/audio/sample_processed/
src/train.pyを使用してモデルをトレーニングします
python3 train.py
調整可能なハイパーパラメーターは、src/config.pyにあります。ファイルを編集して、これらのパラメーターと設定を調整できます。デフォルトのハイパーパラメーターは、lecturedSPおよびその他の中国英語コードスイッチングデータに推奨されます。
tensorboardxで監視する(オプション)
tensorboard --logdir 'path to log dir'
トレーナーは、デフォルトで2000ステップごとにオーディオとアライメントをダンプします。これらはCS-tacotron/ckptで見つけることができます。
私たちは、主に私たちの作業に基づいたタコトロンの素晴らしいピトルチの実装である山本龍子の仕事に功績を称えたいと思います。
モデルのテストフェーズのアライメントプロットを示します。1つ目は中国語の中国入力のアラインメントを示し、2つ目は中国語と英語のコードスイッチング入力、3つ目はそれぞれ単一言語の英語入力です。