Home

Awesome

VITS

概要

Pytorchによる<a href="https://arxiv.org/abs/2106.06103">VITS</a>の実装です。
日本語音声のデータセット"<a href="https://sites.google.com/site/shinnosuketakamichi/research-topics/jvs_corpus">JVS corpus</a>"で学習し

を行うことができます。
モデルの詳しい解説と音声生成例については<a href="https://qiita.com/zassou65535/items/00d7d5562711b89689a8">こちら</a>を参照。

想定環境

ライブラリの詳細はrequirements.txtを参照。
ライブラリはpipによるインストールを推奨します。

プログラム

使い方

データセットの用意

  1. <a href="https://sites.google.com/site/shinnosuketakamichi/research-topics/jvs_corpus">JVS corpus</a>をダウンロード、解凍します。
  2. jvs_preprocessor.pyの16行目付近の変数jvs_dataset_pathで、解凍したJVS corpusへのパスを指定します。
  3. python jvs_preprocessor.pyを実行し前処理を実行します。
    • データセット中の各.wavファイルがサンプリングレート22050[Hz]へと変換され、./dataset/jvs_preprocessed/jvs_wav_preprocessed/以下に出力されます。
    • 前処理済み各.wavファイルへのパスと、それに対応するラベルが列挙されたファイルが./dataset/jvs_preprocessed/jvs_preprocessed_for_train.txtとして出力されます。

Cythonのモジュールのコンパイル

モジュールmonotonic_alignは高速化のためCythonで実装されています。これをコンパイルします。

  1. cd ./module/model_component/monotonic_align/を実行します。
  2. mkdir monotonic_alignを実行します。
  3. python setup.py build_ext --inplaceでCythonで書かれたモジュールのコンパイルを行います。

学習

  1. python vits_train.pyを実行しVITSの学習を行います。
    • 学習過程が./output/vits/train/以下に出力されます。
    • 学習済みパラメーターが./output/vits/train/iteration295000/netG_cpu.pthなどという形で5000イテレーション毎に出力されます。

推論(テキスト読み上げ)

  1. vits_text_to_speech.pyの39行目付近の変数trained_weight_pathvits_train.pyで出力した学習済みパラメーターへのパスを指定します。
  2. vits_text_to_speech.pyの41行目付近の変数source_textに発話させたい文章を指定します。
  3. vits_text_to_speech.pyの43行目付近の変数target_speaker_idに発話の対象とする話者idを指定します。
    • 話者idは(JVS corpusで決められている話者の番号-1)となります。例えば"jvs010"の話者を指定したい場合は、話者idは9となります。
  4. python vits_text_to_speech.pyを実行しテキストの読み上げを行います。
    • 生成結果が./output/vits/inference/text_to_speech/output.wavとして出力されます。

推論(音声変換)

  1. vits_voice_converter.pyの37行目付近の変数trained_weight_pathvits_train.pyで出力した学習済みパラメーターへのパスを指定します。
  2. vits_voice_converter.pyの39行目付近の変数source_wav_pathに変換元としたいwavファイルへのパスを指定します。
  3. vits_voice_converter.pyの41行目付近の変数source_speaker_idに変換元の話者idを指定します。
  4. vits_voice_converter.pyの43行目付近の変数target_speaker_idに変換先の話者idを指定します。
  5. python vits_voice_converter.pyを実行し推論(音声変換)を行います。
    • 変換結果が./output/vits/inference/voice_conversion/output.wavとして出力されます。

参考

<a href="https://arxiv.org/abs/2106.06103">https://arxiv.org/abs/2106.06103</a>
<a href="https://github.com/jaywalnut310/vits">https://github.com/jaywalnut310/vits</a>