AIを使ったリアルタイムボイスチェンジャーのモデル学習用ツール
AIを使ったリアルタイムボイスチェンジャー「MMVC(RealTime-Many to Many Voice Conversion)」
で使用するモデルを学習するためのリポジトリです。
google colaboratoryを用いることで、個人の環境に依存せず、かつ簡単に機械学習の学習フェーズを実行可能です。
MMVCを実際に動かすClient software
https://github.com/isletennos/MMVC_Client
「簡単」「だれでも」「好きな声に」「リアルタイムで」
作成中
・Google アカウント
このリポジトリをダウンロードして、展開、展開したディレクトリをgoogle drive上にアップロードしてください。
-
学習用の話者の音声データとその音声データに対応するテキストを用意します。
ターゲットにしたい話者の音声データと変換したい話者の音声データと学習の効率化ために使うその他話者の音声データを用意することを推奨します。
その他話者の音声データには下記コーパス等利用することを推奨します。下記の公開コーパス等を利用することを推奨します。
-
JVS (Japanese versatile speech) corpus
contributors : 高道 慎之介様/三井 健太郎様/齋藤 佑樹様/郡山 知樹様/丹治 尚子様/猿渡 洋様
https://sites.google.com/site/shinnosuketakamichi/research-topics/jvs_corpus -
ITAコーパス マルチモーダルデータベース
contributors : 金井郁也様/千葉隆壱様/齊藤剛史様/森勢将雅様/小口純矢様/能勢隆様/尾上真惟子様/小田恭央様
CharacterVoice : 東北イタコ(木戸衣吹様)/ずんだもん(伊藤ゆいな様)/四国めたん(田中小雪様)
https://zunko.jp/multimodal_dev/login.php -
つくよみちゃんコーパス
contributor : 夢前黎様
CharacterVoice : つくよみちゃん(夢前黎様)
https://tyc.rei-yumesaki.net/material/corpus/
-
2.下記のようなディレクトリ構成になるように音声データとテキストデータを配置します。
dataset
├── textful
│ ├── 000_jvs001
│ │ ├── text
│ │ │ ├── VOICEACTRESS100_001.txt
│ │ │ ├── VOICEACTRESS100_002.txt
│ │ │ ├── ...
│ │ └── wav
│ │ ├── VOICEACTRESS100_001.wav
│ │ ├── VOICEACTRESS100_002.wav
│ │ ├── ...
│ ├── 001_jvs002
│ │ ├── text
│ │ │ ├── VOICEACTRESS100_001.txt
│ │ │ ├── VOICEACTRESS100_002.txt
│ │ │ ├── ...
│ │ └── wav
│ │ ├── VOICEACTRESS100_001.wav
│ │ ├── VOICEACTRESS100_002.wav
│ │ ├── ...
│ ├── 002_jvs003
│ │ ├── text
│ │ │ ├── VOICEACTRESS100_001.txt
│ │ │ ├── VOICEACTRESS100_002.txt
│ │ │ ├── ...
│ │ └── wav
│ │ ├── VOICEACTRESS100_001.wav
│ │ ├── VOICEACTRESS100_002.wav
│ │ ├── ...
│ ├── ...
│ │
│ │
│ │
│
│
│
└── textless
-
notebookディレクトリにある「Create_Configfile.ipynb」をgoogle colab 上で実行、学習に必要なconfigファイルを作成
-
学習したコンフィグファイル(json)の
- "eval_interval"
modelを保存する間隔です。 - "batch_size"
colabで割り当てたGPUに合わせて調整してください。
上記2項目を環境に応じて設定ください。
- "eval_interval"
-
notebookディレクトリにある「Train_MMVC.ipynb」をgoogle colab 上で実行してください。
logs/にモデルが生成されます。
- notebookディレクトリにある「MMVC_Interface.ipynb」をgoogle colab 上で実行
Q1. 下記のようなエラーが発生しました。どうしたらよいですか?
Traceback (most recent call last):
File "train_ms.py", line 302, in <module>
main()
File "train_ms.py", line 50, in main
mp.spawn(run, nprocs=n_gpus, args=(n_gpus, hps,))
File "/usr/local/lib/python3.7/dist-packages/torch/multiprocessing/spawn.py", line 200, in spawn
return start_processes(fn, args, nprocs, join, daemon, start_method='spawn')
File "/usr/local/lib/python3.7/dist-packages/torch/multiprocessing/spawn.py", line 158, in start_processes
while not context.join():
File "/usr/local/lib/python3.7/dist-packages/torch/multiprocessing/spawn.py", line 119, in join
raise Exception(msg)
Exception:
-- Process 0 terminated with the following error:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/torch/multiprocessing/spawn.py", line 20, in _wrap
fn(i, *args)
File "/content/drive/MyDrive/MMVC_Trainer/train_ms.py", line 126, in run
train_and_evaluate(rank, epoch, hps, [net_g, net_d], [optim_g, optim_d], [scheduler_g, scheduler_d], scaler, [train_loader, eval_loader], logger, [writer, writer_eval])
File "/content/drive/MyDrive/MMVC_Trainer/train_ms.py", line 172, in train_and_evaluate
hps.data.mel_fmax
File "/content/drive/MyDrive/MMVC_Trainer/mel_processing.py", line 105, in mel_spectrogram_torch
center=center, pad_mode='reflect', normalized=False, onesided=True)
File "/usr/local/lib/python3.7/dist-packages/torch/functional.py", line 465, in stft
return _VF.stft(input, n_fft, hop_length, win_length, window, normalized, onesided)
RuntimeError: cuFFT doesn't support signals of half type with compute capability less than SM_53, but the device containing input half tensor only has SM_37
A1. お手数ですがコンフィグファイル(json)の
"fp16_run": true,
を
"fp16_run": false,
に変更ください。
順次更新
なにか不明点があればお気軽にご連絡ください。
https://arxiv.org/abs/2106.06103
https://github.com/jaywalnut310/vits
Isle Tennos
Twitter : https://twitter.com/IsleTennos