このリポジトリは、 48000Hzの日本語音声を学習および出力できるように編集したVITS2に、 Phoneme-Level Japanese BERTの中間潜在表現を用いた音声合成モデルです。
Anacondaによる実行環境構築を想定する。
-
Anacondaで"PLBERTVITS2"という名前の仮想環境を作成する。[y]or nを聞かれたら[y]を入力する。
conda create -n PLBERTVITS2 python=3.8
-
仮想環境を有効化する。
conda activate PLBERTVITS2
-
このレポジトリをクローンする(もしくはDownload Zipでダウンロードする)
git clone https://github.com/tonnetonne814/PL-Bert-VITS2.git cd PL-Bert-VITS2 # フォルダへ移動
-
https://pytorch.org/のURLよりPyTorchをインストールする。
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 # cuda11.7 linuxの例
-
その他、必要なパッケージをインストールする。
pip install -r requirements.txt
-
Monotonoic Alignment Searchをビルドする。
cd monotonic_align mkdir monotonic_align python setup.py build_ext --inplace cd ..
-
PL-BERT-jaより、日本語版のPhoneme−Level Bertの事前学習モデルをダウンロード及び展開する。
JVNV Speech datasetによる48000Hz音声の学習生成を想定する。
-
JVNV Speech datasetをダウンロード及び展開する。
-
展開したフォルダの中にあるjvnv_ver1フォルダ及びplb-ja_10000000-stepsフォルダを指定して、以下を実行する。
python3 ./preprocess_ja.py --jvnv_dir ./path/to/jvnv_ver1/ --pl_bert_dir ./path/to/plb-ja_10000000-steps
3. configsフォルダ内のjsonを編集
主要なパラメータを説明します。必要であれば編集する。
分類 | パラメータ名 | 説明 |
---|---|---|
train | log_interval | 指定ステップ毎にロスを算出し記録する |
train | eval_interval | 指定ステップ毎にモデル評価を行う |
train | epochs | 学習データ全体を学習する回数 |
train | batch_size | 一度のパラメータ更新に使用する学習データ数 |
data | training_files | 学習用filelistのテキストパス |
data | validation_files | 検証用filelistのテキストパス |
次のコマンドを入力することで、学習を開始する。
⚠CUDA Out of Memoryのエラーが出た場合には、config.jsonにてbatch_sizeを小さくする。
python train_ms.py --config configs/jvnv_base.json -m JVNV_Dataset
学習経過はターミナルにも表示されるが、tensorboardを用いて確認することで、生成音声の視聴や、スペクトログラム、各ロス遷移を目視で確認することができます。
tensorboard --logdir logs
次のコマンドを入力することで、推論を開始する。config.jsonへのパスと、生成器モデルパスと、PL-BERT-jaのcheckpointsのフォルダを指定する。
python3 inference.py --model_ckpt_path ./path/to/ckpt.pth --model_cnfg_path ./path/to/config.json --pl_bert_dir /path/to/plb-ja_10000000-steps
Terminal上にて使用するデバイスを選択後、テキストを入力することで、音声が生成さされます。音声は自動的に再生され、infer_logsフォルダ(存在しない場合は自動作成)に保存されます。
- 後ほど追加します。