Audio-to-Audio
audio
speech
voice-conversion
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 を使用した場合、 1 時間程度で学習が完了します。
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
- * [UnivNet](https://arxiv.org/abs/2106.07889) ([Unofficial implementation](https://github.com/maum-ai/univnet), [BSD 3-Clause License](https://github.com/maum-ai/univnet/blob/master/LICENSE))
 
 
 
 
 
 
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
- "learning_rate": 1e-4,
3
- "min_learning_rate": 5e-6,
 
 
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
- "grad_weight_adv": 1.0,
12
- "grad_weight_fm": 1.0,
 
13
  "grad_balancer_ema_decay": 0.995,
14
  "use_amp": true,
15
  "num_workers": 16,
16
- "n_steps": 20000,
17
- "warmup_steps": 10000,
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/040c_checkpoint_libritts_r_200_02300000.pt",
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:d9a698c3e87a3a8ad81f676834f6b9e4e7f8e69ab5633b2aa5a638ec45aac42d
3
- size 183806696
 
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.0b0"
4
  description = "A tool to train Beatrice models"
5
  license = "MIT"
6
  authors = ["Project Beatrice <[email protected]>"]
@@ -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 = "^3.9"
13
- torch = "^2,<2.3"
14
- torchaudio = "^2"
15
- tqdm = "^4"
 
 
 
 
 
 
16
  numpy = "^1"
17
- tensorboard = "^2"
18
- soundfile = "^0.11"
19
- pyworld = "^0.3.2"
 
 
 
 
 
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 <[email protected]>"]
 
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"]