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

You can install via pip install style-bert-vits2 (inference only), see library.ipynb for example usage.

  • 解説チュートリアル動画 YouTube ニコニコ動画

  • Open In Colab

  • FAQ

  • 🤗 オンラインデモはこちらから

  • Zennの解説記事

  • リリースページ更新履歴

    • 2024-06-01: Ver 2.5.0 (利用規約の追加、フォルダ分けからのスタイル生成、小春音アミ・あみたろモデルの追加、インストールの高速化等)
    • 2024-03-16: ver 2.4.1 (batファイルによるインストール方法の変更)
    • 2024-03-15: ver 2.4.0 (大規模リファクタリングや種々の改良、ライブラリ化)
    • 2024-02-26: ver 2.3 (辞書機能とエディター機能)
    • 2024-02-09: ver 2.2
    • 2024-02-07: ver 2.1
    • 2024-02-03: ver 2.0 (JP-Extra)
    • 2024-01-09: ver 1.3
    • 2023-12-31: ver 1.2
    • 2023-12-29: ver 1.1
    • 2023-12-27: ver 1.0

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で動作します。
  • 音声合成のみに使う場合、Pythonライブラリとしてpip install style-bert-vits2でインストールできます。例はlibrary.ipynbを参照してください。
  • 他との連携に使えるAPIサーバーも同梱しています (@darai0512 様によるPRです、ありがとうございます)。
  • 元々「楽しそうな文章は楽しそうに、悲しそうな文章は悲しそうに」読むのがBert-VITS2の強みですので、スタイル指定がデフォルトでも感情豊かな音声を生成することができます。

使い方

動作環境

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

インストール

Pythonライブラリとしてのpipでのインストールや使用例はlibrary.ipynbを参照してください。

GitやPythonに馴染みが無い方

Windowsを前提としています。

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

またアップデートをしたい場合は、Update-Style-Bert-VITS2.batをダブルクリックしてください。

ただし2024-03-16の2.4.1バージョン未満からのアップデートの場合は、全てを削除してから再びインストールする必要があります。申し訳ありません。移行方法はCHANGELOG.mdを参照してください。

GitやPython使える人

Pythonの仮想環境・パッケージ管理ツールであるuvがpipより高速なので、それを使ってインストールすることをお勧めします。 (使いたくない場合は通常のpipでも大丈夫です。)

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
git clone https://github.com/litagin02/Style-Bert-VITS2.git
cd Style-Bert-VITS2
uv venv venv
uv pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu118
uv pip install -r requirements.txt
venv\Scripts\activate
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」を参照してください。
  • そうでない場合、(長さは問わない)音声ファイルのみがあれば、そこから学習にすぐに使えるようにデータセットを作るためのツールを同梱しています。

データセット作り

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

学習WebUI

  • App.batをダブルクリックかpython app.pyして開くWebUIの「学習」タブから指示に従ってください。

スタイルの生成

  • デフォルトでは、デフォルトスタイル「Neutral」の他、学習フォルダのフォルダ分けに応じたスタイルが生成されます。
  • それ以外の方法で手動でスタイルを作成したい人向けです。
  • App.batをダブルクリックかpython app.pyして開くWebUIの「スタイル作成」タブから、音声ファイルを使ってスタイルを生成できます。
  • 学習とは独立しているので、学習中でもできるし、学習が終わっても何度もやりなおせます(前処理は終わらせている必要があります)。

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点で混ぜ合わせて、新しいモデルを作ることが出来ます。 App.batをダブルクリックかpython app.pyして開くWebUIの「マージ」タブから、2つのモデルを選択してマージすることができます。

自然性評価

学習結果のうちどのステップ数がいいかの「一つの」指標として、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やリファクタリング

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.5.0.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for style_bert_vits2-2.5.0.tar.gz
Algorithm Hash digest
SHA256 9248d08ff6ba6b77a9757e34361a0d4426cbd22dab08461da42fae31d194921e
MD5 6ad71077c0cb8eaa6fd2443ac9e22968
BLAKE2b-256 bbcde959189f932874aec151c7698fcb654a39fcfb399e4208fa2396cbb553e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for style_bert_vits2-2.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bdc3a7a8abb56398c887a8f2ff5184b61500c445251c3f82012fac982360f988
MD5 ddd85c76f3e16acc4278669c97ba7386
BLAKE2b-256 6b328462ebb45a2e52dafbbe40975a2e6ec83dad0da6007812b25d8efde73d79

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