litagin02 / Style-Bert-VITS2

Style-Bert-VITS2: Bert-VITS2 with more controllable voice styles.
GNU Affero General Public License v3.0
612 stars 69 forks source link
bert-vits2 text-to-speech

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.

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

概要

使い方

動作環境

各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版では学習はできませんが、音声合成とマージは可能です。
  2. 待つと自動で必要な環境がインストールされます。
  3. その後、自動的に音声合成するためのエディターが起動したらインストール成功です。デフォルトのモデルがダウンロードされるているので、そのまま遊ぶことができます。

またアップデートをしたい場合は、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が起動します。またはInference.batでも音声合成単独タブが開きます。

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

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」が生成されます。 複数スタイルを使ってより詳しくスタイルを制御したい方は、下の「スタイルの生成」を参照してください(平均スタイルのみでも、学習データが感情豊かならば十分感情豊かな音声が生成されます)。

学習

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

データセット作り

学習WebUI

スタイルの生成

API Server

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

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

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

マージ

2つのモデルを、「声質」「声の高さ」「感情表現」「テンポ」の4点で混ぜ合わせて、新しいモデルを作ったり、また「あるモデルに、別の2つのモデルの差分を足す」等の操作ができます。 App.batをダブルクリックかpython app.pyして開くWebUIの「マージ」タブから、2つのモデルを選択してマージすることができます。またはMerge.batをダブルクリックでもその単独タブが開きます。

自然性評価

学習結果のうちどのステップ数がいいかの「一つの」指標として、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に変換したもの)。

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

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](https://github.com/anyvoiceai/MassTTS) 一个非常好的tts项目 ## MassTTS的演示demo为[ai版峰哥锐评峰哥本人,并找回了在金三角失落的腰子](https://www.bilibili.com/video/BV1w24y1c7z9) [//]: # (## 本项目与[PlayVoice/vits_chinese](https://github.com/PlayVoice/vits_chinese) 没有任何关系) [//]: # () [//]: # (本仓库来源于之前朋友分享了ai峰哥的视频,本人被其中的效果惊艳,在自己尝试MassTTS以后发现fs在音质方面与vits有一定差距,并且training的pipeline比vits更复杂,因此按照其思路将bert) ## 成熟的旅行者/开拓者/舰长/博士/sensei/猎魔人/喵喵露/V应当参阅代码自己学习如何训练。 ### 严禁将此项目用于一切违反《中华人民共和国宪法》,《中华人民共和国刑法》,《中华人民共和国治安管理处罚法》和《中华人民共和国民法典》之用途。 ### 严禁用于任何政治相关用途。 #### Video:https://www.bilibili.com/video/BV1hp4y1K78E #### Demo:https://www.bilibili.com/video/BV1TF411k78w #### QQ Group:815818430 ## References + [anyvoiceai/MassTTS](https://github.com/anyvoiceai/MassTTS) + [jaywalnut310/vits](https://github.com/jaywalnut310/vits) + [p0p4k/vits2_pytorch](https://github.com/p0p4k/vits2_pytorch) + [svc-develop-team/so-vits-svc](https://github.com/svc-develop-team/so-vits-svc) + [PaddlePaddle/PaddleSpeech](https://github.com/PaddlePaddle/PaddleSpeech) + [emotional-vits](https://github.com/innnky/emotional-vits) + [fish-speech](https://github.com/fishaudio/fish-speech) + [Bert-VITS2-UI](https://github.com/jiangyuxiaoxiao/Bert-VITS2-UI) ## 感谢所有贡献者作出的努力 [//]: # (# 本项目所有代码引用均已写明,bert部分代码思路来源于[AI峰哥](https://www.bilibili.com/video/BV1w24y1c7z9),与[vits_chinese](https://github.com/PlayVoice/vits_chinese)无任何关系。欢迎各位查阅代码。同时,我们也对该开发者的[碰瓷,乃至开盒开发者的行为](https://www.bilibili.com/read/cv27101514/)表示强烈谴责。)