Skip to content

VITSによるテキスト読み上げ器&ボイスチェンジャー

License

Notifications You must be signed in to change notification settings

zassou65535/VITS

Repository files navigation

VITS

概要

PytorchによるVITSの実装です。
日本語音声のデータセット"JVS corpus"で学習し

  • テキストの読み上げ
  • 音声間の変換

を行うことができます。
モデルの詳しい解説と音声生成例についてはこちらを参照。

想定環境

  • Ubuntu20.04
  • Python 3.10.0
  • torch==1.13.1+cu117
  • torchaudio==0.13.1+cu117

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

プログラム

  • jvs_preprocessor.pyはJVS corpusに対し前処理を行うプログラムです。
  • vits_train.pyは前処理済みデータセットを読み込み学習を実行し、学習の過程と学習済みパラメーターを出力するプログラムです。
  • vits_text_to_speech.pyvits_train.pyで出力した学習済みパラメーターを読み込み、推論(テキストから音声の生成)を実行、結果を.wav形式で出力するプログラムです。
  • vits_voice_converter.pyvits_train.pyで出力した学習済みパラメーターを読み込み、推論(音声間の変換)を実行、結果を.wav形式で出力するプログラムです。

使い方

データセットの用意

  1. JVS corpusをダウンロード、解凍します。
  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として出力されます。

参考

https://arxiv.org/abs/2106.06103
https://github.com/jaywalnut310/vits

Releases

No releases published

Packages

No packages published