kikuepi commited on
Commit
17b6646
1 Parent(s): 8dfbf56

Upload README.md

Browse files
Files changed (1) hide show
  1. README.md +9 -221
README.md CHANGED
@@ -1,222 +1,10 @@
1
- # 2024-01-09のver 1.3で日本語の処理部分の大きなバグ修正とアクセント調整機能の追加等のアップデートをしました。アップデートして使うのを強くおすすめします。(学習もし直すといいかもしれません。)
2
- [**Changelog**](docs/CHANGELOG.md)
3
-
4
- - 2024-01-09: ver 1.3
5
- - 2023-12-31: ver 1.2
6
- - 2023-12-29: ver 1.1
7
- - 2023-12-27: ver 1.0
8
-
9
- # Style-Bert-VITS2
10
-
11
- Bert-VITS2 with more controllable voice styles.
12
-
13
- [English README](docs/README_en.md)
14
-
15
- https://github.com/litagin02/Style-Bert-VITS2/assets/139731664/b907c1b8-43aa-46e6-b03f-f6362f5a5a1e
16
-
17
- **注意**: 上記動画のライセンス表記は誤っていました、正しくはCC BY-SA 4.0で商用利用に制限はありません。近日訂正版動画に差し替えます。
18
-
19
- [![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)
20
-
21
- Online demo: https://huggingface.co/spaces/litagin/Style-Bert-VITS2-JVNV
22
-
23
- This repository is based on [Bert-VITS2](https://github.com/fishaudio/Bert-VITS2) v2.1, so many thanks to the original author!
24
-
25
-
26
- **概要**
27
-
28
- - 入力されたテキストの内容をもとに感情豊かな音声を生成する[Bert-VITS2](https://github.com/fishaudio/Bert-VITS2)のv2.1を元に、感情や発話スタイルを強弱込みで自由に制御できるようにしたものです。
29
- - 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)
30
- - 音声合成のみに使う場合は、グラボがなくてもCPUで動作します。
31
- - 他との連携に使えるAPIサーバーも同梱しています ([@darai0512](https://github.com/darai0512) 様によるPRです、ありがとうございます)。
32
- - 元々が「楽しそうな文章は楽しそうに、悲しそうな文章は悲しそうに」読むのがBert-VITS2の強みですので、このフォークで付加されたスタイル指定を無理に使わずとも感情豊かな音声を生成することができます。
33
-
34
-
35
- ## 使い方
36
-
37
- <!-- 詳しくは[こちら](docs/tutorial.md)を参照してください。 -->
38
-
39
- ### 動作環境
40
-
41
- 各UIとAPI Serverにおいて、Windows コマンドプロンプト・WSL2・Linux(Ubuntu Desktop)での動作を確認しています(WSLでのパス指定は相対パスなど工夫ください)。
42
-
43
- ### インストール
44
-
45
- #### GitやPythonに馴染みが無い方
46
-
47
- Windowsを前提としています。
48
-
49
- 1. [このzipファイル](https://github.com/litagin02/Style-Bert-VITS2/releases/download/1.3/Style-Bert-VITS2.zip)をダウンロードして展開します。
50
- - グラボがある方は、`Install-Style-Bert-VITS2.bat`をダブルクリックします。
51
- - グラボがない方は、`Install-Style-Bert-VITS2-CPU.bat`をダブルクリックします。
52
- 2. 待つと自動で必要な環境がインストールされます。
53
- 3. その後、自動的に音声合成するためのWebUIが起動したらインストール成功です。デフォルトのモデルがダウンロードされるているので、そのまま遊ぶことができます。
54
-
55
- またアップデートをしたい場合は、`Update-Style-Bert-VITS2.bat`をダブルクリックしてください。
56
-
57
- #### GitやPython使える人
58
-
59
- ```bash
60
- git clone https://github.com/litagin02/Style-Bert-VITS2.git
61
- cd Style-Bert-VITS2
62
- python -m venv venv
63
- venv\Scripts\activate
64
- pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
65
- pip install -r requirements.txt
66
- python initialize.py # 必要なモデルとデフォルトTTSモデルをダウンロード
67
- ```
68
- 最後を忘れずに。
69
-
70
- ### 音声合成
71
-
72
- `App.bat`をダブルクリックか、`python app.py`するとWebUIが起動します(`python app.py --cpu`でCPUモードで起動、学習中チェックに便利です)。インストール時にデフォルトのモデルがダウンロードされているので、学習していなくてもそれを使うことができます。
73
-
74
- 音声合成に必要なモデルファイルたちの構造は以下の通りです(手動で配置する必要はありません)。
75
- ```
76
- model_assets
77
- ├── your_model
78
- │ ├── config.json
79
- │ ├── your_model_file1.safetensors
80
- │ ├── your_model_file2.safetensors
81
- │ ├── ...
82
- │ └── style_vectors.npy
83
- └── another_model
84
- ├── ...
85
- ```
86
- このように、推論には`config.json`と`*.safetensors`と`style_vectors.npy`が必要です。モデルを共有する場合は、この3つのファイルを共有してください。
87
-
88
- このうち`style_vectors.npy`はスタイルを制御するために必要なファイルで、学習の時にデフォルトで平均スタイル「Neutral」が生成されます。
89
- 複数スタイルを使ってより詳しくスタイルを制御したい方は、下の「スタイルの生成」を参照してください(平均スタイルのみでも、学習データが感情豊かならば十分感情豊かな音声が生成されます)。
90
-
91
- ### 学習
92
-
93
- 学習には2-14秒程度の音声ファイルが少なくとも5個以上、またそれらの音声ファイルの書き起こしデータが必要です。
94
-
95
- - 既存コーパスなどですでに分割された音声ファイルと書き起こしデータがある場合はそのまま(必要に応じて書き起こしファイルを修正して)使えます。下の「学習WebUI」を参照してください。
96
- - そうでない場合、(長さは問わない)音声ファイルのみがあれば、そこから学習にすぐに使えるようにデータセットを作るためのツールを同梱しています。
97
-
98
- #### データセット作り
99
-
100
- - `Dataset.bat`をダブルクリックか`python webui_dataset.py`すると、音声ファイルからデータセットを作るためのWebUIが起動します(音声ファイルを適切な長さにスライスし、その後に文字の書き起こしを自動で行います)。
101
- - 指示に従った後、閉じて下の「学習WebUI」でそのまま学習を行うことができます。
102
-
103
- 注意: データセットの手動修正やノイズ除去等、細かい修正を行いたい場合は[Aivis](https://github.com/tsukumijima/Aivis)や、そのデータセット部分のWindows対応版 [Aivis Dataset](https://github.com/litagin02/Aivis-Dataset) を使うといいかもしれません。ですがファイル数が多い場合などは、このツールで簡易的に切り出してデータセットを作るだけでも十分という気もしています。
104
-
105
- データセットがどのようなものがいいかは各自試行錯誤中してください。
106
-
107
- #### 学習WebUI
108
-
109
- - `Train.bat`をダブルクリックか`python webui_train.py`するとWebUIが起動するので指示に従ってください。
110
-
111
- ### スタイルの生成
112
-
113
- - デフォルトスタイル「Neutral」以外のスタイルを使いたい人向けです。
114
- - `Style.bat`をダブルクリックか`python webui_style_vectors.py`するとWebUIが起動します。
115
- - 学習とは独立しているので、学習中でもできるし、学習が終わっても何度もやりなおせます(前処理は終わらせている必要があります)。
116
- - スタイルについての仕様の詳細は[clustering.ipynb](clustering.ipynb)を参照してください。
117
-
118
- ### API Server
119
-
120
- 構築した環境下で`python server_fastapi.py`するとAPIサーバーが起動します。
121
- API仕様は起動後に`/docs`にて確認ください。
122
-
123
- デフォルトではCORS設定を全てのドメインで許可しています。
124
- できる限り、`config.yml`の`server.origins`の値を変更し、信頼できるドメインに制限ください(キーを消せばCORS設定を無効にできます)。
125
-
126
- ### マージ
127
-
128
- 2つのモデルを、「声音」「感情表現」「テンポ」の3点で混ぜ合わせて、新しいモデルを作ることが出来ます。
129
- `Merge.bat`をダブルクリックか`python webui_merge.py`するとWebUIが起動します。
130
-
131
- ### 自然性評価
132
-
133
- 学習結果のうちどのステップ数がいいかの「一つの」指標として、[SpeechMOS](https://github.com/tarepan/SpeechMOS) を使うスクリプトを用意しています:
134
- ```bash
135
- python speech_mos.py -m <model_name>
136
- ```
137
- ステップごとの自然性評価が表示され、`mos_results`フォルダの`mos_{model_name}.csv`と`mos_{model_name}.png`に結果が保存される。読み上げさせたい文章を変えたかったら中のファイルを弄って各自調整してください。またあくまでアクセントや感情表現や抑揚を全く考えない基準での評価で、目安のひとつなので、実際に読み上げさせて選別するのが一番だと思います。
138
-
139
- ## Bert-VITS2 v2.1との関係
140
-
141
- 基本的にはBert-VITS2 v2.1のモデル構造を少し改造しただけです。[事前学習モデル](https://huggingface.co/litagin/Style-Bert-VITS2-1.0-base)も、実質Bert-VITS2 v2.1と同じものを使用しています(不要な重みを削ってsafetensorsに変換したもの)。
142
-
143
- 具体的には以下の点が異なります。
144
-
145
- - [EasyBertVits2](https://github.com/Zuntan03/EasyBertVits2)のように、PythonやGitを知らない人でも簡単に使える。
146
- - 感情埋め込みのモデルを変更(1024次元の[wav2vec2-large-robust-12-ft-emotion-msp-dim](https://huggingface.co/audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim)から256次元の[wespeaker-voxceleb-resnet34-LM](https://huggingface.co/pyannote/wespeaker-voxceleb-resnet34-LM)へ、感情埋め込みというよりは話者識別のための埋め込み)
147
- - 埋め込みもベクトル量子化を取り払い、単なる全結合層に。
148
- - スタイルベクトルファイル`style_vectors.npy`を作ることで、そのスタイルを使って効果の強さも連続的に指定しつつ音声を生成することができる。
149
- - 各種WebUIを作成
150
- - bf16での学習のサポート
151
- - safetensors形式のサポート、デフォルトでsafetensorsを使用するように
152
- - その他軽微なbugfixやリファクタリング
153
-
154
- ## TODO
155
- - [x] LinuxやWSL等、Windowsの通常環境以外でのサポート ← おそらく問題ないとの報告あり
156
- - [x] 複数話者学習での音声合成対応(学習は現在でも可能)
157
- - [ ] 本家のver 2.1, 2.2, 2.3モデルの推論対応?(ver 2.1以外は明らかにめんどいのでたぶんやらない)
158
- - [x] `server_fastapi.py`の対応、とくにAPIで使えるようになると嬉しい人が増えるのかもしれない
159
- - [x] モデルのマージで声音と感情表現を混ぜる機能の実装
160
- - [ ] 英語等多言語対応?
161
- - [ ] ONNX対応
162
-
163
-
164
- ## 実験したいこと
165
- - [ ] 複数話者での学習の実験(原理的にはできるはず、スタイルがどう効くかが未知)
166
- - [ ] むしろ複数話者で単一話者扱いで学習しても、スタイル埋め込みが話者埋め込みでそこに話者の情報が含まれているので、スタイルベクトルを作ることで複数話者の音声を生成できるのではないか?
167
- - [ ] もしそうなら、大量の人数の音声を学習させれば、ある意味「話者空間から適当に選んだ話者(連続的に変えられる)の音声合成」ができるのでは?リファレンス音声も使えばゼロショットでの音声合成もできるのでは?
168
-
169
-
170
- ## References
171
- In addition to the original reference (written below), I used the following repositories:
172
- - [Bert-VITS2](https://github.com/fishaudio/Bert-VITS2)
173
- - [EasyBertVits2](https://github.com/Zuntan03/EasyBertVits2)
174
-
175
- [The pretrained model](https://huggingface.co/litagin/Style-Bert-VITS2-1.0-base) is essentially taken from [the original base model of Bert-VITS2 v2.1](https://huggingface.co/Garydesu/bert-vits2_base_model-2.1), so all the credits go to the original author ([Fish Audio](https://github.com/fishaudio)):
176
-
177
-
178
- Below is the original README.md.
179
  ---
180
-
181
- <div align="center">
182
-
183
- <img alt="LOGO" src="https://cdn.jsdelivr.net/gh/fishaudio/fish-diffusion@main/images/logo_512x512.png" width="256" height="256" />
184
-
185
- # Bert-VITS2
186
-
187
- VITS2 Backbone with multilingual bert
188
-
189
- For quick guide, please refer to `webui_preprocess.py`.
190
-
191
- 简易教程请参见 `webui_preprocess.py`。
192
-
193
- ## 请注意,本项目核心思路来源于[anyvoiceai/MassTTS](https://github.com/anyvoiceai/MassTTS) 一个非常好的tts项目
194
- ## MassTTS的演示demo为[ai版峰哥锐评峰哥本人,并找回了在金三角失落的腰子](https://www.bilibili.com/video/BV1w24y1c7z9)
195
-
196
- [//]: # (## 本项目与[PlayVoice/vits_chinese]&#40;https://github.com/PlayVoice/vits_chinese&#41; 没有任何关系)
197
-
198
- [//]: # ()
199
- [//]: # (本仓库来源于之前朋友分享了ai峰哥的视频,本人被其中的效果惊艳,在自己尝试MassTTS以后发现fs在音质方面与vits有一定差距,并且training的pipeline比vits更复杂,因此按照其思路将bert)
200
-
201
- ## 成熟的旅行者/开拓者/舰长/博士/sensei/猎魔人/喵喵露/V应当参阅代码自己学习如何训练。
202
-
203
- ### 严禁将此项目用于一切违反《中华人民共和国宪法》,《中华人民共和国刑法》,《中华人民共和国治安管理处罚法》和《中华人民共和国民法典》之用途。
204
- ### 严禁用于任何政治相关用途。
205
- #### Video:https://www.bilibili.com/video/BV1hp4y1K78E
206
- #### Demo:https://www.bilibili.com/video/BV1TF411k78w
207
- #### QQ Group:815818430
208
- ## References
209
- + [anyvoiceai/MassTTS](https://github.com/anyvoiceai/MassTTS)
210
- + [jaywalnut310/vits](https://github.com/jaywalnut310/vits)
211
- + [p0p4k/vits2_pytorch](https://github.com/p0p4k/vits2_pytorch)
212
- + [svc-develop-team/so-vits-svc](https://github.com/svc-develop-team/so-vits-svc)
213
- + [PaddlePaddle/PaddleSpeech](https://github.com/PaddlePaddle/PaddleSpeech)
214
- + [emotional-vits](https://github.com/innnky/emotional-vits)
215
- + [fish-speech](https://github.com/fishaudio/fish-speech)
216
- + [Bert-VITS2-UI](https://github.com/jiangyuxiaoxiao/Bert-VITS2-UI)
217
- ## 感谢所有贡献者作出的努力
218
- <a href="https://github.com/fishaudio/Bert-VITS2/graphs/contributors" target="_blank">
219
- <img src="https://contrib.rocks/image?repo=fishaudio/Bert-VITS2"/>
220
- </a>
221
-
222
- [//]: # (# 本项目所有代码引用均已写明,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;表示强烈谴责。)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: "プロジェクトのタイトル"
3
+ emoji: "😀"
4
+ colorFrom: blue
5
+ colorTo: pink
6
+ sdk: gradio
7
+ sdk_version: "latest"
8
+ app_file: "app.py"
9
+ pinned: false
10
+ ---