-
Notifications
You must be signed in to change notification settings - Fork 78
下記は学習データのテキストファイルがUTF-8形式でない場合に生じるエラーログになります。
Traceback (most recent call last):
File "create_dataset_jtalk.py", line 103, in <module>
main()
File "create_dataset_jtalk.py", line 99, in main
n_spk = create_dataset(filename)
File "create_dataset_jtalk.py", line 49, in create_dataset
mozi = f.read().split("\n")
File "/usr/lib/python3.7/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte
このエラーはテキストファイルがUTF-8形式でない場合に出ると思われます。
以下の方法で学習に使用するテキストファイルの形式をご確認ください。
- テキストファイルをメモ帳で開く
- ファイル(F) -> 名前を付けて保存(A)を選択
- ファイル名、ファイルの種類の下にある文字コード(E)が「UTF-8」になっているか確認する
下記はファインチューニング用のモデルを読み込みに失敗したときのエラーログになります。
File "train_ms.py", line 303, in <module>
main()
File "train_ms.py", line 53, 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-main/train_ms.py", line 108, in run
_, _, _, epoch_str = utils.load_checkpoint(hps.fine_model_g, net_g, optim_g)
File "/content/drive/MyDrive/MMVC_Trainer-main/utils.py", line 19, in load_checkpoint
assert os.path.isfile(checkpoint_path)
AssertionError
ファインチューニング用のモデルの読み込みに失敗しています。
/finemodel 配下に finemodel用のモデルファイル(.pth)がありますか?
(v1.1.0 では G_232000.pthとD_232000.pth)
下記はファインチューニング用のモデルを読み込みに失敗したときのエラーログになります。
-- 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 59, in _wrap
fn(i, *args)
File "{GoogleドライブにMMVCを置いたパス}/train_ms.py", line 131, in run
_, _, _, epoch_str = utils.load_checkpoint(hps.fine_model_g, net_g, optim_g)
File "{GoogleドライブにMMVCを置いたパス}/utils.py", line 20, in load_checkpoint
checkpoint_dict = torch.load(checkpoint_path, map_location='cpu')
File "/usr/local/lib/python3.7/dist-packages/torch/serialization.py", line 593, in load
return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
File "/usr/local/lib/python3.7/dist-packages/torch/serialization.py", line 762, in _legacy_load
magic_number = pickle_module.load(f, **pickle_load_args)
EOFError: Ran out of input
ファインチューニング用のファイルは存在しますが、通信の失敗などが理由で中身が壊れているようです。
01_Create_Configfile.ipynbの「3 事前学習済みモデルのダウンロード」までを実行することで、正しいファイルを取得できます。
「3 事前学習済みモデルのダウンロード」が終わった後で、再度02_Train_MMVC.ipynbを実行すると学習が開始されます。
ValueError: loaded state dict contains a parameter group that doesn't match the size of optimizer's group
このエラーは、最初に読み込んでる学習済みデータG,Dがバージョン違いで読み込めない場合に出ます。
学習済みデータがバージョン毎に互換性がない場合があるため、バージョンに合った学習済みデータをダウンロードして利用してください。
RuntimeError: CUDA out of memory.
メモリが足りない場合に発生します。
{MMVCを置いた場所}/config/train_config.jsonか{MMVCを置いた場所}/config/train_config_zundamon.jsonにある"batch_size"の数値を下げると実行できるようになります。
下記はdetasetにデータが正しく配置されていないときのエラーログになります。
size mismatch for emb_g.weight:とエラーが出た場合、ほぼ確実にdetasetの配置ミスです。
-- 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-main/train_ms.py", line 108, in run
_, _, _, epoch_str = utils.load_checkpoint(hps.fine_model_g, net_g, optim_g)
File "/content/drive/MyDrive/MMVC_Trainer-main/utils.py", line 38, in load_checkpoint
model.module.load_state_dict(new_state_dict)
File "/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py", line 1045, in load_state_dict
self.__class__.__name__, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for SynthesizerTrn:
size mismatch for emb_g.weight: copying a param with shape torch.Size([106, 256]) from checkpoint, the shape in current model is torch.Size([104, 256]).
datasetに正しくデータが配置されていません。
下記は学習データのビットレートがあっていない場合に生じるエラーログになります。
Exception ignored in: <function _MultiProcessingDataLoaderIter.del at 0x7f799c9945f0>
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py", line 1101, in del
self._shutdown_workers()
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py", line 1050, in _shutdown_workers
if not self._shutdown:
AttributeError: '_MultiProcessingDataLoaderIter' object has no attribute '_shutdown'
Traceback (most recent call last):
File "train_ms.py", line 303, in <module>
main()
File "train_ms.py", line 53, 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 113, in join
(error_index, exitcode)
Exception: process 0 terminated with exit code 1
現在の学習元データは384Kbps(24000Hz 16bit 1ch)で行われています。
そのため、自分の声の音声データと変換したい声の音声データがこの条件に合っていない場合、このエラーが発生します。
録音ツールは24000Hzで録音できるものが少なく、近い周波数の22050Hzで録音した場合もエラーになるので注意してください。またchを1ch(モノラル)にするよう注意してください。
Audacityという録音ツールでは録音周波数を任意に指定できるため直接24000Hzで録音することができるのでおすすめです。
変換したい声の音声データに「ITAコーパス」や「つくよみちゃんコーパス」を利用する場合もこの条件に合わないため変換する必要があります。
変換には yatoyun 氏作成の https://colab.research.google.com/drive/1CXc7B_mZE3mZLm3MPXMNm_NB56mpBPZS などを利用してみてください。
下記のようなエラーが表示されて学習できません。
AssertionError: CPU training is not allowed.
Train_MMVC.ipynbの下にある
ランタイム→ランタイムのタイプの変更→ハードウェアアクセラレータ
のところを「GPU」に変更して再度実行します。
現在はTPUに対応していません。
データ修正後 config ファイルを作り直ししないとダメな場合があるので、作り直して再度試してください。
学習で使用するファイルによっては出ますが、問題なく学習できています。
安心して学習を継続してください。
train.logで記録されている値の方が正確です。
train.logをブラウザで開き、検索(Ctrl + F)で「loss/g/mel : tensor(」で検索します。
「(」の後の数字がloss/g/melです。
次の行に書いてあるG_0000.pthが対応しています。
以下はログの一例です。
太字になっているところがloss/g/melの値と対応するファイル名です。
2022-09-07 02:03:19,424 20220306_24000 INFO loss/g/mel : tensor(19.8860, device='cuda:0') lloss/g/kl : tensor(1.3589, device='cuda:0') lloss/g/note_kl : tensor(6.2868, device='cuda:0')
2022-09-07 02:03:19,426 20220306_24000 INFO Saving model and optimizer state at iteration 41 to ./logs/20220306_24000/G_4000.pth
こちらのページにある「main」ボタンを押すと開発中のバージョン一覧が出てきます。
β版のバージョンを選択してください。
(スクリーンショットはv1.3.1.3の時のものです。どのバージョンがβ版になるかは開発状況によって変わります。詳しくはDiscordをご確認ください)
選択すると「main」ボタンの表記がバージョン名になります。
その状態で画面右の緑色のボタン「Code」を押して、「Download ZIP」を押すとダウンロードができます。
以下がrt-mmvc-client-GPU.exeでmyprofile.jsonのパスを入力したときに生じるエラーログです
Traceback (most recent call last):
File "{あなたのパス}/rt-mmvc-client-GPU.py",line 424,in <module>
File "{あなたのパス}/rt-mmvc-client-GPU.py",line 402, in config_get
OSError:[Error 22] Invalid argument: "{あなたのパス}/myprofile.json"
パスを指定する際はなにもつけずに指定してください。
以下はrt-mmvc-client-GPU.exeで、myprofile.jsonに記述されているパス指定が間違っているときに生じるエラーログです。
Traceback (most recent call last):
File "{あなたのパス}/rt-mmvc-client-GPU.py",line 424,in <module>
File "{あなたのパス}/rt-mmvc-client-GPU.py",line 402, in config_get
File "{あなたのパス}/json/__init__.py",line 346, in loads
File "{あなたのパス}/json/decoder.py",line 357, in decode
File "{あなたのパス}/json/decoder.py",line 353, in raw_decode
json.decoder.JSONDecodeError:Invalid \escape: line 14 column 15 (char 255)
jsonファイル内ではパスの「\」を「\\」と表記する必要があります。
path指定の区切り子は下記例のように記述してください。
"path": {
"json":"C:\\Users\\example_user\\Programs\\rt-mmvc_client\\config.json",
"model":"C:\\Users\\example_user\\Programs\\rt-mmvc_client\\G_2000.pth",
"noise":"C:\\Users\\example_user\\Programs\\rt-mmvc_client\\noise.wav"
}
現在のバージョンではかなりCPU負荷がかかるため途切れ途切れになってしまいます。
GPU版でもCPUの負荷が結構高く逆にGPUの負荷がほとんどかからないためGPU版を利用してください。
myprofile.confのpathはコマンドライン引数でも指定することが可能です。
一例としてwindowsにおける設定方法を記載します。
- mmvc_client_GPU.exeのショートカットを作成する。
- 作成したmmvc_client_GPU.exeのショートカットのプロパティを開く。
- リンク先(T):の項目でmmvc_client_GPU.exeのpathの後ろに半角スペースを一つ開けmyprofile.confのpathを追記する。
(例)D:\mmvc_client_GPU\mmvc_client_GPU.exe D:\mmvc_client_GPU\myprofile.conf - OKボタンを押して設定を保存する。
- 作成したショートカットから起動すればmyprofile.confが自動で読み込まれます。
使用するCPUを1つだけに指定すると改善します。
タスクマネージャー → 詳細 → audiodg.exe右クリック → 関係の設定(win11) → 「すべてのプロセッサ」のチェックを外す → CPU1つのみ選択 → OK
mmvc_client_GPU_v0.3.0.0起動した際、VC開始しますと表示されてからも一向に動作せずCPU使用率が100%になり、PCも不安定になる。
再起動すれば正常な状態に戻るが、再度起動すると同じ状況になる。
CUDAとCUDNN入れ直したらGPU使用に切り替わったとの報告があります。
NVIDIAのディスプレイドライバの入れ直しで直るのかもしれません。
クライアントのコンフィグファイルをいじることになります。 こちらを参照してください。 https://discord.com/channels/957230290487619665/969040025469722664/1061789781983494184
一致しなくても大丈夫ですが、声優統計コーパスやATR503文(内100文程度で可)などの所謂音素分を読み上げることを推奨します。
文章量にもよりますが100文程度でも十分な精度がでます。
漢字さえ使わなければよいです。
基本はひらがなかカナに統一したほうがよいです。句読点はあったほうがよいです。
現在の推奨は384Kbps(24000Hz 16bit 1ch)です。
学習目標の声の音声ファイルと自分の声の音声ファイルはすべて同じサンプリングレート、bit、チャンネル数(すべてをかけ合わせて算出されるビットレート)にする必要があります。
ボイスチェンジャーを使用する際の設定は学習時に使用した音声のサンプリングレート、bit、チャンネル数と合わせてください。
自分の音声とターゲットの音声は同じ内容である必要はありません。 が、 音声とテキストの内容は、それぞれで揃える必要があります。 同様に、自分の音声ファイル名とターゲットの音声ファイル名は合わせる必要はありませんが、 それぞれで、wavとtxtファイルの名前は合わせる必要があります。 https://discord.com/channels/957230290487619665/958135053802676244/1073996076304048212 https://discord.com/channels/957230290487619665/1066526970696962138/1066526970696962138
ノイズは無いに越したことはないですが、 ある程度は入っていても問題ないようです。 https://discord.com/channels/957230290487619665/958135053802676244/1016338973704077393 https://discord.com/channels/957230290487619665/958135053802676244/1016345921128243296 https://discord.com/channels/957230290487619665/969040025469722664/1061809650925830174
抑揚をつけた音声を学習させると、変換後の音声も抑揚のついたものとなるようです。 https://discord.com/channels/957230290487619665/958135053802676244/972498515659989012
無音が多い場合、品質劣化する傾向があります。 https://discord.com/channels/957230290487619665/969040025469722664/1061809650925830174 https://twitter.com/pipo_lll/status/1606158151761293312
こちらにあります。一部 RECITATION324_041 の文が間違っているので適宜修正して使用してください。 https://discord.com/channels/957230290487619665/1066337577499623434/1066356489746399242
リアルタイム変換時にどのようにしゃべる予定か、に寄せるのが良いと考えられます。 例えばターゲット音声を真似て同じように抑揚をつけてしゃべる予定なら、学習用の録音音声も抑揚をつけて録音したほうがよいでしょう。
学習音声長がだいたいそろっていたほうが少しだけ学習速度に有利なのでそうしていますが、音質には影響ないです。
特に問題ありません。
g/melの計算のアルゴリズム上、そのように見えるだけで実際の性能には影響ないようです。 https://discord.com/channels/957230290487619665/958135053802676244/1075390873182933072
latest、best、数字の最も大きいモデルを残しておくと良いでしょう。 https://discord.com/channels/957230290487619665/969040025469722664/1074691047982112859 https://discord.com/channels/957230290487619665/969040025469722664/1055282963870400613 また、こちらを参考にバックアップを取る頻度を減らすのも良いでしょう。 https://discord.com/channels/957230290487619665/969040025469722664/1059265670849757294
g/melの値は目安のようで、そこまで当てにならないようです。 https://discord.com/channels/957230290487619665/958135053802676244/1074731132089802773 https://discord.com/channels/957230290487619665/969040025469722664/1061809650925830174
g/melは比較できません。 g/melが同数値でも変換結果に差は現れます。 https://discord.com/channels/957230290487619665/969040025469722664/1061809650925830174
g/melはあくまで指標なので、g/melが20を切らなくても精度が良い場合はあります。 一度変換してみて確認してみましょう。 https://discord.com/channels/957230290487619665/969040025469722664/1046783047657324617
おそらく大丈夫です。 ただし、データを追加した場合はファインチューニングで最初から学習をしたほうが学習がよく進む可能性があります。 https://discord.com/channels/957230290487619665/1058741301056643092/1063770968415273061 https://discord.com/channels/957230290487619665/959477423458639972/964063989866848307 https://discord.com/channels/957230290487619665/1058741301056643092/1058741301056643092
原作者のTwitterか、MMVCコミュニティサーバのIsleTennos#5740にDMにてお問合せください。
MMVCはVITSと呼ばれる技術、およびソースコードを元に作られています。
が概念を理解する上で大変参考になります。
バージョンは「v1.x.y.z」のような形で表記されます。
1、x、y、zの数値は以下の規則で変わります。
- 1
- MMVCの処理方法が根本的に変わった場合に数値が上がります。
- 滅多におきないので1固定です。
- x
- MMVCのアップデートで数値が上がります。
- この数値が違うバージョンで作られたファイルは、続きから学習したり、ボイチェンとして使用できません。
- y
- MMVCのアップデートで数値が上がります。
- この数値が変わっても、続きから学習したり、ボイチェンとして使用できます。
- z
- バグ修正で数値が上がります
- この数値が変わっても、続きから学習したり、ボイチェンとして使用できます。