Style-Bert-VITS2-M / README.md
TAKESHI0\ogawa
up
bd9771a
---
title: Style Bert VITS2 M
emoji: 📉
colorFrom: green
colorTo: yellow
sdk: gradio
sdk_version: 4.40.0
app_file: app.py
pinned: false
license: apache-2.0
---
# Style-Bert-VITS2
Bert-VITS2 with more controllable voice styles.
https://github.com/litagin02/Style-Bert-VITS2/assets/139731664/e853f9a2-db4a-4202-a1dd-56ded3c562a0
- [English README](docs/README_en.md)
- [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](http://colab.research.google.com/github/litagin02/Style-Bert-VITS2/blob/master/colab.ipynb)
- [🀗 オンラむンデモはこちらから](https://huggingface.co/spaces/litagin/Style-Bert-VITS2-JVNV)
- [Zennの解説蚘事](https://zenn.dev/litagin/articles/034819a5256ff4)
- [**リリヌスペヌゞ**](https://github.com/litagin02/Style-Bert-VITS2/releases/)、[曎新履歎](docs/CHANGELOG.md)
- 2024-02-09: ver 2.2
- 2024-02-07: ver 2.1
- 2024-02-03: ver 2.0
- 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](https://github.com/fishaudio/Bert-VITS2) v2.1 and Japanese-Extra, so many thanks to the original author!
**抂芁**
- 入力されたテキストの内容をもずに感情豊かな音声を生成する[Bert-VITS2](https://github.com/fishaudio/Bert-VITS2)のv2.1ずJapanese-Extraを元に、感情や発話スタむルを匷匱蟌みで自由に制埡できるようにしたものです。
- GitやPythonがない人でもWindowsナヌザヌなら簡単にむンストヌルでき、孊習もできたす (倚くを[EasyBertVits2](https://github.com/Zuntan03/EasyBertVits2/)からお借りしたした)。たたGoogle Colabでの孊習もサポヌトしおいたす: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](http://colab.research.google.com/github/litagin02/Style-Bert-VITS2/blob/master/colab.ipynb)
- 音声合成のみに䜿う堎合は、グラボがなくおもCPUで動䜜したす。
- 他ずの連携に䜿えるAPIサヌバヌも同梱しおいたす ([@darai0512](https://github.com/darai0512) 様によるPRです、ありがずうございたす)。
- 元々「楜しそうな文章は楜しそうに、悲しそうな文章は悲しそうに」読むのがBert-VITS2の匷みですので、スタむル指定がデフォルトでも感情豊かな音声を生成するこずができたす。
## 䜿い方
<!-- 詳しくは[こちら](docs/tutorial.md)を参照しおください。 -->
### 動䜜環境
各UIずAPI Serverにおいお、Windows コマンドプロンプト・WSL2・Linux(Ubuntu Desktop)での動䜜を確認しおいたす(WSLでのパス指定は盞察パスなど工倫ください)。NVidiaのGPUが無い堎合は孊習はできたせんが音声合成ずマヌゞは可胜です。
### むンストヌル
#### GitやPythonに銎染みが無い方
Windowsを前提ずしおいたす。
1. [このzipファむル](https://github.com/litagin02/Style-Bert-VITS2/releases/download/2.2/Style-Bert-VITS2.zip)を**パスに日本語や空癜が含たれない堎所に**ダりンロヌドしお展開したす。
- グラボがある方は、`Install-Style-Bert-VITS2.bat`をダブルクリックしたす。
- グラボがない方は、`Install-Style-Bert-VITS2-CPU.bat`をダブルクリックしたす。CPU版では孊習はできたせんが、音声合成ずマヌゞは可胜です。
2. 埅぀ず自動で必芁な環境がむンストヌルされたす。
3. その埌、自動的に音声合成するためのWebUIが起動したらむンストヌル成功です。デフォルトのモデルがダりンロヌドされるおいるので、そのたた遊ぶこずができたす。
たたアップデヌトをしたい堎合は、`Update-Style-Bert-VITS2.bat`をダブルクリックしおください。ただし**1.x**から**2.x**ぞアップデヌトする堎合は、[このbatファむル](https://github.com/litagin02/Style-Bert-VITS2/releases/download/2.2/Update-to-JP-Extra.bat)を`Style-Bert-VITS2`フォルダがあるフォルダ`Update-Style-Bert-VITS2.bat`等があるフォルダぞ保存しおからダブルクリックしおください。
#### GitやPython䜿える人
```bash
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モデルをダりンロヌド
```
最埌を忘れずに。
### 音声合成
`App.bat`をダブルクリックか、`python app.py`するずWebUIが起動したす`python app.py --cpu`でCPUモヌドで起動、孊習䞭チェックに䟿利です。むンストヌル時にデフォルトのモデルがダりンロヌドされおいるので、孊習しおいなくおもそれを䜿うこずができたす。
音声合成に必芁なモデルファむルたちの構造は以䞋の通りです手動で配眮する必芁はありたせん。
```
model_assets
├── your_model
│ ├── config.json
│ ├── your_model_file1.safetensors
│ ├── your_model_file2.safetensors
│ ├── ...
│ └── style_vectors.npy
└── another_model
├── ...
```
このように、掚論には`config.json`ず`*.safetensors`ず`style_vectors.npy`が必芁です。モデルを共有する堎合は、この3぀のファむルを共有しおください。
このうち`style_vectors.npy`はスタむルを制埡するために必芁なファむルで、孊習の時にデフォルトで平均スタむル「Neutral」が生成されたす。
耇数スタむルを䜿っおより詳しくスタむルを制埡したい方は、䞋の「スタむルの生成」を参照しおください平均スタむルのみでも、孊習デヌタが感情豊かならば十分感情豊かな音声が生成されたす。
### å­Šç¿’
孊習には2-14秒皋床の音声ファむルが耇数ず、それらの曞き起こしデヌタが必芁です。
- 既存コヌパスなどですでに分割された音声ファむルず曞き起こしデヌタがある堎合はそのたた必芁に応じお曞き起こしファむルを修正しお䜿えたす。䞋の「孊習WebUI」を参照しおください。
- そうでない堎合、長さは問わない音声ファむルのみがあれば、そこから孊習にすぐに䜿えるようにデヌタセットを䜜るためのツヌルを同梱しおいたす。
#### デヌタセット䜜り
- `Dataset.bat`をダブルクリックか`python webui_dataset.py`するず、音声ファむルからデヌタセットを䜜るためのWebUIが起動したす音声ファむルを適切な長さにスラむスし、その埌に文字の曞き起こしを自動で行いたす。
- 指瀺に埓った埌、閉じお䞋の「孊習WebUI」でそのたた孊習を行うこずができたす。
泚意: デヌタセットの手動修正やノむズ陀去等、现かい修正を行いたい堎合は[Aivis](https://github.com/tsukumijima/Aivis)や、そのデヌタセット郚分のWindows察応版 [Aivis Dataset](https://github.com/litagin02/Aivis-Dataset) を䜿うずいいかもしれたせん。ですがファむル数が倚い堎合などは、このツヌルで簡易的に切り出しおデヌタセットを䜜るだけでも十分ずいう気もしおいたす。
デヌタセットがどのようなものがいいかは各自詊行錯誀䞭しおください。
#### å­Šç¿’WebUI
- `Train.bat`をダブルクリックか`python webui_train.py`するずWebUIが起動するので指瀺に埓っおください。
### スタむルの生成
- デフォルトスタむル「Neutral」以倖のスタむルを䜿いたい人向けです。
- `Style.bat`をダブルクリックか`python webui_style_vectors.py`するずWebUIが起動したす。
- 孊習ずは独立しおいるので、孊習䞭でもできるし、孊習が終わっおも䜕床もやりなおせたす前凊理は終わらせおいる必芁がありたす。
- スタむルに぀いおの仕様の詳现は[clustering.ipynb](clustering.ipynb)を参照しおください。
### API Server
構築した環境䞋で`python server_fastapi.py`するずAPIサヌバヌが起動したす。
API仕様は起動埌に`/docs`にお確認ください。
- 入力文字数はデフォルトで100文字が䞊限ずなっおいたす。これは`config.yml`の`server.limit`で倉曎できたす。
- デフォルトではCORS蚭定を党おのドメむンで蚱可しおいたす。できる限り、`config.yml`の`server.origins`の倀を倉曎し、信頌できるドメむンに制限ください(キヌを消せばCORS蚭定を無効にできたす)。
### マヌゞ
2぀のモデルを、「声質」「声の高さ」「感情衚珟」「テンポ」の4点で混ぜ合わせお、新しいモデルを䜜るこずが出来たす。
`Merge.bat`をダブルクリックか`python webui_merge.py`するずWebUIが起動したす。
### 自然性評䟡
孊習結果のうちどのステップ数がいいかの「䞀぀の」指暙ずしお、[SpeechMOS](https://github.com/tarepan/SpeechMOS) を䜿うスクリプトを甚意しおいたす:
```bash
python speech_mos.py -m <model_name>
```
ステップごずの自然性評䟡が衚瀺され、`mos_results`フォルダの`mos_{model_name}.csv`ず`mos_{model_name}.png`に結果が保存される。読み䞊げさせたい文章を倉えたかったら䞭のファむルを匄っお各自調敎しおください。たたあくたでアクセントや感情衚珟や抑揚を党く考えない基準での評䟡で、目安のひず぀なので、実際に読み䞊げさせお遞別するのが䞀番だず思いたす。
## Bert-VITS2ずの関係
基本的にはBert-VITS2のモデル構造を少し改造しただけです。[旧事前孊習モデル](https://huggingface.co/litagin/Style-Bert-VITS2-1.0-base)も[JP-Extraの事前孊習モデル](https://huggingface.co/litagin/Style-Bert-VITS2-2.0-base-JP-Extra)も、実質Bert-VITS2 v2.1 or JP-Extraず同じものを䜿甚しおいたす䞍芁な重みを削っおsafetensorsに倉換したもの。
具䜓的には以䞋の点が異なりたす。
- [EasyBertVits2](https://github.com/Zuntan03/EasyBertVits2)のように、PythonやGitを知らない人でも簡単に䜿える。
- 感情埋め蟌みのモデルを倉曎256次元の[wespeaker-voxceleb-resnet34-LM](https://huggingface.co/pyannote/wespeaker-voxceleb-resnet34-LM)ぞ、感情埋め蟌みずいうよりは話者識別のための埋め蟌み
- 感情埋め蟌みもベクトル量子化を取り払い、単なる党結合局に。
- スタむルベクトルファむル`style_vectors.npy`を䜜るこずで、そのスタむルを䜿っお効果の匷さも連続的に指定し぀぀音声を生成するこずができる。
- 各皮WebUIを䜜成
- bf16での孊習のサポヌト
- safetensors圢匏のサポヌト、デフォルトでsafetensorsを䜿甚するように
- その他軜埮なbugfixやリファクタリング
## TODO
- [x] デフォルトのJVNVモデルにJP-Extra版のものを远加
- [x] LinuxやWSL等、Windowsの通垞環境以倖でのサポヌト ← おそらく問題ないずの報告あり
- [x] 耇数話者孊習での音声合成察応孊習は珟圚でも可胜
- [x] `server_fastapi.py`の察応、ずくにAPIで䜿えるようになるず嬉しい人が増えるのかもしれない
- [x] モデルのマヌゞで声音ず感情衚珟を混ぜる機胜の実装
- [ ] 英語等倚蚀語察応
## References
In addition to the original reference (written below), I used the following repositories:
- [Bert-VITS2](https://github.com/fishaudio/Bert-VITS2)
- [EasyBertVits2](https://github.com/Zuntan03/EasyBertVits2)
[The pretrained model](https://huggingface.co/litagin/Style-Bert-VITS2-1.0-base) and [JP-Extra version](https://huggingface.co/litagin/Style-Bert-VITS2-2.0-base-JP-Extra) is essentially taken from [the original base model of Bert-VITS2 v2.1](https://huggingface.co/Garydesu/bert-vits2_base_model-2.1) and [JP-Extra pretrained model of Bert-VITS2](https://huggingface.co/Stardust-minus/Bert-VITS2-Japanese-Extra), so all the credits go to the original author ([Fish Audio](https://github.com/fishaudio)):
Below is the original README.md.
---
<div align="center">
<img alt="LOGO" src="https://cdn.jsdelivr.net/gh/fishaudio/fish-diffusion@main/images/logo_512x512.png" width="256" height="256" />
# 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]&#40;https://github.com/PlayVoice/vits_chinese&#41; 没有任䜕关系)
[//]: # ()
[//]: # (本仓库来源于之前朋友分享了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)
## 感谢所有莡献者䜜出的努力
<a href="https://github.com/fishaudio/Bert-VITS2/graphs/contributors" target="_blank">
<img src="https://contrib.rocks/image?repo=fishaudio/Bert-VITS2"/>
</a>
[//]: # (# 本项目所有代码匕甚均已写明bert郚分代码思路来源于[AI峰哥]&#40;https://www.bilibili.com/video/BV1w24y1c7z9&#41;䞎[vits_chinese]&#40;https://github.com/PlayVoice/vits_chinese&#41;无任䜕关系。欢迎各䜍查阅代码。同时我们也对该匀发者的[碰瓷乃至匀盒匀发者的行䞺]&#40;https://www.bilibili.com/read/cv27101514/&#41;衚瀺区烈谎莣。)