Project Beatrice
commited on
Commit
•
79c3b57
1
Parent(s):
079f987
Add 2.0.0-beta.2 features
Browse files
README.md
CHANGED
@@ -27,13 +27,33 @@ Beatrice 2 は、以下を目標に開発されています。
|
|
27 |
* VST と [VC Client](https://github.com/w-okada/voice-changer) での動作
|
28 |
* その他 (内緒)
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
## Prerequisites
|
31 |
|
32 |
Beatrice は、既存の学習済みモデルを用いて声質の変換を行うだけであれば GPU を必要としません。
|
33 |
しかし、新たなモデルの作成を効率良く行うためには GPU が必要です。
|
34 |
|
35 |
学習スクリプトを実行すると、デフォルト設定では 9GB 程度の VRAM を消費します。
|
36 |
-
GeForce RTX 4090 を使用した場合、
|
37 |
|
38 |
GPU を手元に用意できない場合でも、以下のリポジトリを使用して Google Colab 上で学習を行うことができます。
|
39 |
|
@@ -122,6 +142,8 @@ your_training_data_dir_with_only_one_speaker
|
|
122 |
python3 beatrice_trainer -d <your_training_data_dir> -o <output_dir>
|
123 |
```
|
124 |
|
|
|
|
|
125 |
学習の状況は、 TensorBoard で確認できます。
|
126 |
|
127 |
```sh
|
@@ -132,6 +154,7 @@ tensorboard --logdir <output_dir>
|
|
132 |
|
133 |
学習が正常に完了すると、出力ディレクトリ内に `paraphernalia_(data_dir_name)_(step)` という名前のディレクトリが生成されています。
|
134 |
このディレクトリを[公式 VST](https://prj-beatrice.com) や [VC Client](https://github.com/w-okada/voice-changer) で読み込むことで、ストリーム (リアルタイム) 変換を行うことができます。
|
|
|
135 |
|
136 |
## Detailed Usage
|
137 |
|
@@ -196,16 +219,35 @@ python3 beatrice_trainer -d <your_training_data_dir> -o <output_dir> -r
|
|
196 |
## Reference
|
197 |
|
198 |
* [wav2vec 2.0](https://arxiv.org/abs/2006.11477) ([Official implementation](https://github.com/facebookresearch/fairseq), [MIT License](https://github.com/facebookresearch/fairseq/blob/main/LICENSE))
|
|
|
199 |
* [EnCodec](https://arxiv.org/abs/2210.13438) ([Official implementation](https://github.com/facebookresearch/encodec), [MIT License](https://github.com/facebookresearch/encodec/blob/main/LICENSE))
|
|
|
200 |
* [HiFi-GAN](https://arxiv.org/abs/2010.05646) ([Official implementation](https://github.com/jik876/hifi-gan), [MIT License](https://github.com/jik876/hifi-gan/blob/master/LICENSE))
|
|
|
201 |
* [Vocos](https://arxiv.org/abs/2306.00814) ([Official implementation](https://github.com/gemelo-ai/vocos), [MIT License](https://github.com/gemelo-ai/vocos/blob/main/LICENSE))
|
|
|
202 |
* [BigVSAN](https://arxiv.org/abs/2309.02836) ([Official implementation](https://github.com/sony/bigvsan), [MIT License](https://github.com/sony/bigvsan/blob/main/LICENSE))
|
203 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
* [Soft-VC](https://arxiv.org/abs/2111.02392)
|
|
|
|
|
|
|
205 |
* [StreamVC](https://arxiv.org/abs/2401.03078)
|
|
|
|
|
|
|
206 |
* [EVA-GAN](https://arxiv.org/abs/2402.00892)
|
|
|
207 |
* [Subramani et al., 2024](https://arxiv.org/abs/2309.14507)
|
|
|
208 |
* [Agrawal et al., 2024](https://arxiv.org/abs/2401.10460)
|
|
|
209 |
|
210 |
## License
|
211 |
|
|
|
27 |
* VST と [VC Client](https://github.com/w-okada/voice-changer) での動作
|
28 |
* その他 (内緒)
|
29 |
|
30 |
+
## Release Notes
|
31 |
+
|
32 |
+
* **2024-10-20**: Beatrice Trainer 2.0.0-beta.2 をリリースしました。
|
33 |
+
* **[公式 VST](https://prj-beatrice.com) や [VC Client](https://github.com/w-okada/voice-changer) を最新版にアップデートしてください。新しい Trainer で生成したモデルは、古いバージョンの公式 VST や VC Client で動作しません。**
|
34 |
+
* [Scaled Weight Standardization](https://arxiv.org/abs/2101.08692) の導入により、学習の安定性が向上しました。
|
35 |
+
* 無音に非常に近い音声に対する損失の計算結果が nan になる問題を修正し、学習の安定性が向上しました。
|
36 |
+
* 周期信号の生成方法を変更し、事前学習モデルを用いない場合により少ない学習ステップ数で高品質な変換音声を生成できるようになりました。
|
37 |
+
* [FIRNet](https://ast-astrec.nict.go.jp/release/preprints/preprint_icassp_2024_ohtani.pdf) に着想を得たポストフィルタ構造を導入し、変換音声の品質が向上しました。
|
38 |
+
* [D4C](https://www.sciencedirect.com/science/article/pii/S0167639316300413) を損失関数に導入し、変換音声の品質が向上しました。
|
39 |
+
* [Multi-scale mel loss](https://arxiv.org/abs/2306.06546) を導入しました。
|
40 |
+
* 冗長な逆伝播の除去や `torch.backends.cudnn.benchmark` の部分的な無効化などにより、学習速度が向上しました。
|
41 |
+
* 学習データにモノラルでない音声ファイルが含まれる場合にエラーが発生する問題を修正しました。
|
42 |
+
* 音量計算の誤りを修正し、学習時と推論時の変換結果の不一致が解消されました。
|
43 |
+
* PyTorch のバージョンの下限を修正しました。
|
44 |
+
* Windows 環境で CPU 版の PyTorch がインストールされる問題を修正しました。
|
45 |
+
* Windows 環境で DataLoader の動作が非常に遅くなる問題を修正しました。
|
46 |
+
* その他いくつかの変更を行いました。
|
47 |
+
* **2024-07-27**: Beatrice Trainer 2.0.0-beta.0 をリリースしました。
|
48 |
+
|
49 |
+
|
50 |
## Prerequisites
|
51 |
|
52 |
Beatrice は、既存の学習済みモデルを用いて声質の変換を行うだけであれば GPU を必要としません。
|
53 |
しかし、新たなモデルの作成を効率良く行うためには GPU が必要です。
|
54 |
|
55 |
学習スクリプトを実行すると、デフォルト設定では 9GB 程度の VRAM を消費します。
|
56 |
+
GeForce RTX 4090 を使用した場合、 30 分程度で学習が完了します。
|
57 |
|
58 |
GPU を手元に用意できない場合でも、以下のリポジトリを使用して Google Colab 上で学習を行うことができます。
|
59 |
|
|
|
142 |
python3 beatrice_trainer -d <your_training_data_dir> -o <output_dir>
|
143 |
```
|
144 |
|
145 |
+
(Windowns の場合、 `beatrice_trainer` の代わりに `.\beatrice_trainer\__main__.py` を指定しないと正しく動作しないという報告があります。)
|
146 |
+
|
147 |
学習の状況は、 TensorBoard で確認できます。
|
148 |
|
149 |
```sh
|
|
|
154 |
|
155 |
学習が正常に完了すると、出力ディレクトリ内に `paraphernalia_(data_dir_name)_(step)` という名前のディレクトリが生成されています。
|
156 |
このディレクトリを[公式 VST](https://prj-beatrice.com) や [VC Client](https://github.com/w-okada/voice-changer) で読み込むことで、ストリーム (リアルタイム) 変換を行うことができます。
|
157 |
+
**読み込めない場合は公式 VST や VC Client のバージョンが古い可能性がありますので、最新のバージョンにアップデートしてください。**
|
158 |
|
159 |
## Detailed Usage
|
160 |
|
|
|
219 |
## Reference
|
220 |
|
221 |
* [wav2vec 2.0](https://arxiv.org/abs/2006.11477) ([Official implementation](https://github.com/facebookresearch/fairseq), [MIT License](https://github.com/facebookresearch/fairseq/blob/main/LICENSE))
|
222 |
+
* FeatureExtractor の実装に利用。
|
223 |
* [EnCodec](https://arxiv.org/abs/2210.13438) ([Official implementation](https://github.com/facebookresearch/encodec), [MIT License](https://github.com/facebookresearch/encodec/blob/main/LICENSE))
|
224 |
+
* GradBalancer の実装に利用。
|
225 |
* [HiFi-GAN](https://arxiv.org/abs/2010.05646) ([Official implementation](https://github.com/jik876/hifi-gan), [MIT License](https://github.com/jik876/hifi-gan/blob/master/LICENSE))
|
226 |
+
* DiscriminatorP の実装に利用。
|
227 |
* [Vocos](https://arxiv.org/abs/2306.00814) ([Official implementation](https://github.com/gemelo-ai/vocos), [MIT License](https://github.com/gemelo-ai/vocos/blob/main/LICENSE))
|
228 |
+
* ConvNeXtBlock の実装に利用。
|
229 |
* [BigVSAN](https://arxiv.org/abs/2309.02836) ([Official implementation](https://github.com/sony/bigvsan), [MIT License](https://github.com/sony/bigvsan/blob/main/LICENSE))
|
230 |
+
* SAN モジュールの実装に利用。
|
231 |
+
* [D4C](https://www.sciencedirect.com/science/article/pii/S0167639316300413) ([Unofficial implementation by tuanad121](https://github.com/tuanad121/Python-WORLD), [MIT License](https://github.com/tuanad121/Python-WORLD/blob/master/LICENSE.txt))
|
232 |
+
* 損失関数の実装に利用。
|
233 |
+
* [UnivNet](https://arxiv.org/abs/2106.07889) ([Unofficial implementation by maum-ai](https://github.com/maum-ai/univnet), [BSD 3-Clause License](https://github.com/maum-ai/univnet/blob/master/LICENSE))
|
234 |
+
* DiscriminatorR の実装に利用。
|
235 |
+
* [NF-ResNets](https://arxiv.org/abs/2101.08692)
|
236 |
+
* Scaled Weight Standardization のアイデアを利用。
|
237 |
* [Soft-VC](https://arxiv.org/abs/2111.02392)
|
238 |
+
* PhoneExtractor の基本的なアイデアとして利用。
|
239 |
+
* [Descript Audio Codec](https://arxiv.org/abs/2306.06546)
|
240 |
+
* Multi-scale mel loss のアイデアを利用。
|
241 |
* [StreamVC](https://arxiv.org/abs/2401.03078)
|
242 |
+
* 声質変換スキームの基本的なアイデアとして利用。
|
243 |
+
* [FIRNet](https://ast-astrec.nict.go.jp/release/preprints/preprint_icassp_2024_ohtani.pdf)
|
244 |
+
* FIR フィルタを Vocoder に適用するアイデアを利用。
|
245 |
* [EVA-GAN](https://arxiv.org/abs/2402.00892)
|
246 |
+
* SiLU を vocoder に適用するアイデアを利用。
|
247 |
* [Subramani et al., 2024](https://arxiv.org/abs/2309.14507)
|
248 |
+
* PitchEstimator の基本的なアイデアとして利用。
|
249 |
* [Agrawal et al., 2024](https://arxiv.org/abs/2401.10460)
|
250 |
+
* Vocoder の基本的なアイデアとして利用。
|
251 |
|
252 |
## License
|
253 |
|
assets/default_config.json
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
{
|
2 |
-
"
|
3 |
-
"
|
|
|
|
|
4 |
"adam_betas": [
|
5 |
0.8,
|
6 |
0.99
|
@@ -8,13 +10,14 @@
|
|
8 |
"adam_eps": 1e-6,
|
9 |
"batch_size": 8,
|
10 |
"grad_weight_mel": 1.0,
|
11 |
-
"
|
12 |
-
"
|
|
|
13 |
"grad_balancer_ema_decay": 0.995,
|
14 |
"use_amp": true,
|
15 |
"num_workers": 16,
|
16 |
-
"n_steps":
|
17 |
-
"warmup_steps":
|
18 |
"in_sample_rate": 16000,
|
19 |
"out_sample_rate": 24000,
|
20 |
"wav_length": 96000,
|
@@ -24,7 +27,11 @@
|
|
24 |
"in_ir_wav_dir": "assets/ir",
|
25 |
"in_noise_wav_dir": "assets/noise",
|
26 |
"in_test_wav_dir": "assets/test",
|
27 |
-
"pretrained_file": "assets/pretrained/
|
28 |
"hidden_channels": 256,
|
29 |
-
"san": false
|
|
|
|
|
|
|
|
|
30 |
}
|
|
|
1 |
{
|
2 |
+
"learning_rate_g": 2e-4,
|
3 |
+
"learning_rate_d": 1e-4,
|
4 |
+
"min_learning_rate_g": 1e-5,
|
5 |
+
"min_learning_rate_d": 5e-6,
|
6 |
"adam_betas": [
|
7 |
0.8,
|
8 |
0.99
|
|
|
10 |
"adam_eps": 1e-6,
|
11 |
"batch_size": 8,
|
12 |
"grad_weight_mel": 1.0,
|
13 |
+
"grad_weight_ap": 2.0,
|
14 |
+
"grad_weight_adv": 3.0,
|
15 |
+
"grad_weight_fm": 3.0,
|
16 |
"grad_balancer_ema_decay": 0.995,
|
17 |
"use_amp": true,
|
18 |
"num_workers": 16,
|
19 |
+
"n_steps": 10000,
|
20 |
+
"warmup_steps": 2000,
|
21 |
"in_sample_rate": 16000,
|
22 |
"out_sample_rate": 24000,
|
23 |
"wav_length": 96000,
|
|
|
27 |
"in_ir_wav_dir": "assets/ir",
|
28 |
"in_noise_wav_dir": "assets/noise",
|
29 |
"in_test_wav_dir": "assets/test",
|
30 |
+
"pretrained_file": "assets/pretrained/079_checkpoint_libritts_r_200_02400000.pt",
|
31 |
"hidden_channels": 256,
|
32 |
+
"san": false,
|
33 |
+
"compile_convnext": false,
|
34 |
+
"compile_d4c": false,
|
35 |
+
"compile_discriminator": false,
|
36 |
+
"profile": false
|
37 |
}
|
assets/pretrained/{040c_checkpoint_libritts_r_200_02300000.pt → 079_checkpoint_libritts_r_200_02400000.pt}
RENAMED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:3c2c87af05cb645f96fe6df651999f9b20bf66fa4e98af17c84211a742b62fe6
|
3 |
+
size 186736305
|
beatrice_trainer/__main__.py
CHANGED
The diff for this file is too large to render.
See raw diff
|
|
pyproject.toml
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
[tool.poetry]
|
2 |
name = "beatrice-trainer"
|
3 |
-
version = "2.0.
|
4 |
description = "A tool to train Beatrice models"
|
5 |
license = "MIT"
|
6 |
authors = ["Project Beatrice <167534685+prj-beatrice@users.noreply.github.com>"]
|
@@ -9,14 +9,25 @@ homepage = "https://prj-beatrice.com/"
|
|
9 |
repository = "https://huggingface.co/fierce-cats/beatrice-trainer"
|
10 |
|
11 |
[tool.poetry.dependencies]
|
12 |
-
python = "
|
13 |
-
torch =
|
14 |
-
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
numpy = "^1"
|
17 |
-
tensorboard = "
|
18 |
-
soundfile = "
|
19 |
-
pyworld = "
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
[build-system]
|
22 |
requires = ["poetry-core"]
|
|
|
1 |
[tool.poetry]
|
2 |
name = "beatrice-trainer"
|
3 |
+
version = "2.0.0b2"
|
4 |
description = "A tool to train Beatrice models"
|
5 |
license = "MIT"
|
6 |
authors = ["Project Beatrice <167534685+prj-beatrice@users.noreply.github.com>"]
|
|
|
9 |
repository = "https://huggingface.co/fierce-cats/beatrice-trainer"
|
10 |
|
11 |
[tool.poetry.dependencies]
|
12 |
+
python = ">=3.9"
|
13 |
+
torch = [
|
14 |
+
{ version = ">=2.1", markers = "sys_platform == 'win32'", source = "torch-cuda" },
|
15 |
+
{ version = ">=2.1", markers = "sys_platform != 'win32'" },
|
16 |
+
]
|
17 |
+
torchaudio = [
|
18 |
+
{ version = ">=2.1", markers = "sys_platform == 'win32'", source = "torch-cuda" },
|
19 |
+
{ version = ">=2.1", markers = "sys_platform != 'win32'" },
|
20 |
+
]
|
21 |
+
tqdm = ">=4"
|
22 |
numpy = "^1"
|
23 |
+
tensorboard = ">=2"
|
24 |
+
soundfile = ">=0.11"
|
25 |
+
pyworld = ">=0.3.2"
|
26 |
+
|
27 |
+
[[tool.poetry.source]]
|
28 |
+
name = "torch-cuda"
|
29 |
+
url = "https://download.pytorch.org/whl/cu121"
|
30 |
+
priority = "explicit"
|
31 |
|
32 |
[build-system]
|
33 |
requires = ["poetry-core"]
|