Skip to main content

Style-Bert-VITS2: Bert-VITS2 with more controllable voice styles.

Project description

Style-Bert-VITS2

Bert-VITS2 with more controllable voice styles.

https://github.com/litagin02/Style-Bert-VITS2/assets/139731664/e853f9a2-db4a-4202-a1dd-56ded3c562a0

This repository is based on Bert-VITS2 v2.1 and Japanese-Extra, so many thanks to the original author!

概要

  • 入力されたテキストの内容をもとに感情豊かな音声を生成するBert-VITS2のv2.1とJapanese-Extraを元に、感情や発話スタイルを強弱込みで自由に制御できるようにしたものです。
  • GitやPythonがない人でも(Windowsユーザーなら)簡単にインストールでき、学習もできます (多くをEasyBertVits2からお借りしました)。またGoogle Colabでの学習もサポートしています: Open In Colab
  • 音声合成のみに使う場合は、グラボがなくてもCPUで動作します。
  • 他との連携に使えるAPIサーバーも同梱しています (@darai0512 様によるPRです、ありがとうございます)。
  • 元々「楽しそうな文章は楽しそうに、悲しそうな文章は悲しそうに」読むのがBert-VITS2の強みですので、スタイル指定がデフォルトでも感情豊かな音声を生成することができます。

使い方

CLIでの使い方はこちらを参照してください。

動作環境

各UIとAPI Serverにおいて、Windows コマンドプロンプト・WSL2・Linux(Ubuntu Desktop)での動作を確認しています(WSLでのパス指定は相対パスなど工夫ください)。NVidiaのGPUが無い場合は学習はできませんが音声合成とマージは可能です。

インストール

GitやPythonに馴染みが無い方

Windowsを前提としています。

  1. このzipファイルパスに日本語や空白が含まれない場所にダウンロードして展開します。
  • グラボがある方は、Install-Style-Bert-VITS2.batをダブルクリックします。
  • グラボがない方は、Install-Style-Bert-VITS2-CPU.batをダブルクリックします。CPU版では学習はできませんが、音声合成とマージは可能です。
  1. 待つと自動で必要な環境がインストールされます。
  2. その後、自動的に音声合成するためのエディターが起動したらインストール成功です。デフォルトのモデルがダウンロードされるているので、そのまま遊ぶことができます。

またアップデートをしたい場合は、Update-Style-Bert-VITS2.batをダブルクリックしてください。ただし以下の場合は、専用のアップデートbatファイルをStyle-Bert-VITS2フォルダがあるフォルダ(Update-Style-Bert-VITS2.bat等があるフォルダ)へ保存してからダブルクリックしてください。

GitやPython使える人

git clone https://github.com/litagin02/Style-Bert-VITS2.git
cd Style-Bert-VITS2
python -m venv venv
venv\Scripts\activate
# PyTorch 2.2.x系は今のところは学習エラーが出るので前のバージョンを使う
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
python initialize.py  # 必要なモデルとデフォルトTTSモデルをダウンロード

最後を忘れずに。

音声合成

音声合成エディターはEditor.batをダブルクリックか、python server_editor.py --inbrowserすると起動します(--device cpuでCPUモードで起動)。画面内で各セリフごとに設定を変えて原稿を作ったり、保存や読み込みや辞書の編集等ができます。 インストール時にデフォルトのモデルがダウンロードされているので、学習していなくてもそれを使うことができます。

エディター部分は別リポジトリに分かれています。

バージョン2.2以前での音声合成WebUIは、App.batをダブルクリックか、python app.pyするとWebUIが起動します。

音声合成に必要なモデルファイルたちの構造は以下の通りです(手動で配置する必要はありません)。

model_assets
├── your_model
│   ├── config.json
│   ├── your_model_file1.safetensors
│   ├── your_model_file2.safetensors
│   ├── ...
│   └── style_vectors.npy
└── another_model
    ├── ...

このように、推論にはconfig.json*.safetensorsstyle_vectors.npyが必要です。モデルを共有する場合は、この3つのファイルを共有してください。

このうちstyle_vectors.npyはスタイルを制御するために必要なファイルで、学習の時にデフォルトで平均スタイル「Neutral」が生成されます。 複数スタイルを使ってより詳しくスタイルを制御したい方は、下の「スタイルの生成」を参照してください(平均スタイルのみでも、学習データが感情豊かならば十分感情豊かな音声が生成されます)。

学習

  • CLIでの学習の詳細はこちらを参照してください。
  • paperspace上での学習の詳細はこちら、colabでの学習はこちらを参照してください。

学習には2-14秒程度の音声ファイルが複数と、それらの書き起こしデータが必要です。

  • 既存コーパスなどですでに分割された音声ファイルと書き起こしデータがある場合はそのまま(必要に応じて書き起こしファイルを修正して)使えます。下の「学習WebUI」を参照してください。
  • そうでない場合、(長さは問わない)音声ファイルのみがあれば、そこから学習にすぐに使えるようにデータセットを作るためのツールを同梱しています。

データセット作り

  • Dataset.batをダブルクリックかpython webui_dataset.pyすると、音声ファイルからデータセットを作るためのWebUIが起動します(音声ファイルを適切な長さにスライスし、その後に文字の書き起こしを自動で行います)。
  • 指示に従った後、閉じて下の「学習WebUI」でそのまま学習を行うことができます。

注意: データセットの手動修正やノイズ除去等、細かい修正を行いたい場合はAivisや、そのデータセット部分のWindows対応版 Aivis Dataset を使うといいかもしれません。ですがファイル数が多い場合などは、このツールで簡易的に切り出してデータセットを作るだけでも十分という気もしています。

データセットがどのようなものがいいかは各自試行錯誤中してください。

学習WebUI

  • Train.batをダブルクリックかpython webui_train.pyするとWebUIが起動するので指示に従ってください。

スタイルの生成

  • デフォルトスタイル「Neutral」以外のスタイルを使いたい人向けです。
  • Style.batをダブルクリックかpython webui_style_vectors.pyするとWebUIが起動します。
  • 学習とは独立しているので、学習中でもできるし、学習が終わっても何度もやりなおせます(前処理は終わらせている必要があります)。
  • スタイルについての仕様の詳細はclustering.ipynbを参照してください。

API Server

構築した環境下でpython server_fastapi.pyするとAPIサーバーが起動します。 API仕様は起動後に/docsにて確認ください。

  • 入力文字数はデフォルトで100文字が上限となっています。これはconfig.ymlserver.limitで変更できます。
  • デフォルトではCORS設定を全てのドメインで許可しています。できる限り、config.ymlserver.originsの値を変更し、信頼できるドメインに制限ください(キーを消せばCORS設定を無効にできます)。

また音声合成エディターのAPIサーバーはpython server_editor.pyで起動します。があまりまだ整備をしていません。エディターのリポジトリから必要な最低限のAPIしか現在は実装していません。

音声合成エディターのウェブデプロイについてはこのDockerfileを参考にしてください。

マージ

2つのモデルを、「声質」「声の高さ」「感情表現」「テンポ」の4点で混ぜ合わせて、新しいモデルを作ることが出来ます。 Merge.batをダブルクリックかpython webui_merge.pyするとWebUIが起動します。

自然性評価

学習結果のうちどのステップ数がいいかの「一つの」指標として、SpeechMOS を使うスクリプトを用意しています:

python speech_mos.py -m <model_name>

ステップごとの自然性評価が表示され、mos_resultsフォルダのmos_{model_name}.csvmos_{model_name}.pngに結果が保存される。読み上げさせたい文章を変えたかったら中のファイルを弄って各自調整してください。またあくまでアクセントや感情表現や抑揚を全く考えない基準での評価で、目安のひとつなので、実際に読み上げさせて選別するのが一番だと思います。

Bert-VITS2との関係

基本的にはBert-VITS2のモデル構造を少し改造しただけです。旧事前学習モデルJP-Extraの事前学習モデルも、実質Bert-VITS2 v2.1 or JP-Extraと同じものを使用しています(不要な重みを削ってsafetensorsに変換したもの)。

具体的には以下の点が異なります。

  • EasyBertVits2のように、PythonやGitを知らない人でも簡単に使える。
  • 感情埋め込みのモデルを変更(256次元のwespeaker-voxceleb-resnet34-LMへ、感情埋め込みというよりは話者識別のための埋め込み)
  • 感情埋め込みもベクトル量子化を取り払い、単なる全結合層に。
  • スタイルベクトルファイルstyle_vectors.npyを作ることで、そのスタイルを使って効果の強さも連続的に指定しつつ音声を生成することができる。
  • 各種WebUIを作成
  • bf16での学習のサポート
  • safetensors形式のサポート、デフォルトでsafetensorsを使用するように
  • その他軽微なbugfixやリファクタリング

TODO

  • デフォルトのJVNVモデルにJP-Extra版のものを追加
  • LinuxやWSL等、Windowsの通常環境以外でのサポート ← おそらく問題ないとの報告あり
  • 複数話者学習での音声合成対応(学習は現在でも可能)
  • server_fastapi.pyの対応、とくにAPIで使えるようになると嬉しい人が増えるのかもしれない
  • モデルのマージで声音と感情表現を混ぜる機能の実装
  • 英語等多言語対応?

References

In addition to the original reference (written below), I used the following repositories:

The pretrained model and JP-Extra version is essentially taken from the original base model of Bert-VITS2 v2.1 and JP-Extra pretrained model of Bert-VITS2, so all the credits go to the original author (Fish Audio):

In addition, text/user_dict/ module is based on the following repositories:

LICENSE

This repository is licensed under the GNU Affero General Public License v3.0, the same as the original Bert-VITS2 repository. For more details, see LICENSE.

In addition, text/user_dict/ module is licensed under the GNU Lesser General Public License v3.0, inherited from the original VOICEVOX engine repository. For more details, see LGPL_LICENSE.

Below is the original README.md.

LOGO

Bert-VITS2

VITS2 Backbone with multilingual bert

For quick guide, please refer to webui_preprocess.py.

简易教程请参见 webui_preprocess.py

请注意,本项目核心思路来源于anyvoiceai/MassTTS 一个非常好的tts项目

MassTTS的演示demo为ai版峰哥锐评峰哥本人,并找回了在金三角失落的腰子

成熟的旅行者/开拓者/舰长/博士/sensei/猎魔人/喵喵露/V应当参阅代码自己学习如何训练。

严禁将此项目用于一切违反《中华人民共和国宪法》,《中华人民共和国刑法》,《中华人民共和国治安管理处罚法》和《中华人民共和国民法典》之用途。

严禁用于任何政治相关用途。

Video:https://www.bilibili.com/video/BV1hp4y1K78E

Demo:https://www.bilibili.com/video/BV1TF411k78w

QQ Group:815818430

References

感谢所有贡献者作出的努力

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

style_bert_vits2-2.4.0.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

style_bert_vits2-2.4.0-py3-none-any.whl (2.2 MB view details)

Uploaded Python 3

File details

Details for the file style_bert_vits2-2.4.0.tar.gz.

File metadata

  • Download URL: style_bert_vits2-2.4.0.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.11

File hashes

Hashes for style_bert_vits2-2.4.0.tar.gz
Algorithm Hash digest
SHA256 3395fe0e11cdd34489b456925b6fbbd6d276b166ce5e47eddf840295aac40613
MD5 d0e976c7dda0c97217108b3ca5ba047c
BLAKE2b-256 f28e95ce40046edb45c855e0471407e6e9ed51f5b783b88736abd12857dc8dbd

See more details on using hashes here.

File details

Details for the file style_bert_vits2-2.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for style_bert_vits2-2.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d5d7452d11ded5aff97b38a1ede8a4af917944a8a74937c414e4d8d0fe105d26
MD5 48c02be1973f61e3092bfacc6bb436fe
BLAKE2b-256 cfc5ffd89deaa8ac805d7eb8357630fc86ced6798366be1d24ae4315a838ce0f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page