NNSVSのエラー対策
ステージ0でエラーが出るとき
発声区間がマイナスになっている音素がある、ってエラー
→ DBの mono-label をチェック
発声開始時刻が前の音素の発声終了時刻と合わない、ってエラー
→ musicxml で「っ」が独立した音符になっていた場合は直す。
→ mono-label のファイル数を musicxml と合わせる。
ステージ1でエラーが出るとき①
ValueError: x and y arrays must have at least 2 entries
たぶんセグメント内のラベル(?)が1つしかないってエラーです。
セグメント分割を調節するために、 config,py の3つの値を書き換えてください。どのくらいの値が適切かはデータによると思います。
# Split song by silences (in sec)
segmentation_threshold = 1
# Min duration for a segment
# note: there could be some execptions (e.g., the last segment of a song)
segment_min_duration = 4
# Force split segments if long silence is found regardless of min_duration
force_split_threshold = 60
ステージ1のエラー②
楽譜が音声より長いときに出るらしい(ほんまか?)
楽譜末尾の全休符を削ったら回避できた。
Traceback (most recent call last):
File "/home/crazy/.local/lib/python3.8/site-packages/nnsvs/bin/prepare_features.py", line 133, in my_app
x, (y, wave) = in_acoustic[idx], out_acoustic[idx]
File "/home/crazy/.local/lib/python3.8/site-packages/nnmnkwii/datasets/__init__.py", line 146, in __getitem__
return self.__collect_features(paths)
File "/home/crazy/.local/lib/python3.8/site-packages/nnmnkwii/datasets/__init__.py", line 131, in __collect_features
return self.file_data_source.collect_features(*paths)
File "/home/crazy/.local/lib/python3.8/site-packages/nnsvs/data/data_source.py", line 202, in collect_features
diff_lf0 = lf0 - lf0_score
ValueError: operands could not be broadcast together with shapes (4467,1) (4159,1)
ステージ2からステージ4でエラーが出るとき
Traceback (most recent call last):
File "c:\users\crazy\appdata\local\programs\python\python38\lib\site-packages\nnsvs\bin\train.py", line 275, in my_app
train_loop(config, device, model, optimizer, lr_scheduler, data_loaders)
File "c:\users\crazy\appdata\local\programs\python\python38\lib\site-packages\nnsvs\bin\train.py", line 179, in train_loop
y_hat = model(x, sorted_lengths)
File "c:\users\crazy\appdata\local\programs\python\python38\lib\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
result = self.forward(*input, **kwargs)
File "c:\users\crazy\appdata\local\programs\python\python38\lib\site-packages\nnsvs\model.py", line 122, in forward
h = self.relu(self.first_linear(x))
File "c:\users\crazy\appdata\local\programs\python\python38\lib\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
result = self.forward(*input, **kwargs)
File "c:\users\crazy\appdata\local\programs\python\python38\lib\site-packages\torch\nn\modules\linear.py", line 93, in forward
return F.linear(input, self.weight, self.bias)
File "c:\users\crazy\appdata\local\programs\python\python38\lib\site-packages\torch\nn\functional.py", line 1692, in linear
output = input.matmul(weight.t())
RuntimeError: mat1 dim 1 must match mat2 dim 0
conf/train/*/model/*.yaml の設定ファイルに記されている次元数と、ステージ1で使ったhedファイルの次元が合わないときに表示されます。
hedファイルの次元数を調べて設定ファイルを書き換え、ステージ2からやり直しましょう。
ステージ4でエラーが出るとき
File "/home/crazy/.local/lib/python3.8/site-packages/torch/utils/data/_utils/signal_handling.py", line 66, in handler
_error_if_any_worker_fails()
RuntimeError: DataLoader worker (pid 1234) is killed by signal: Killed.
メモリ不足です。run,sh のバッチサイズを小さくしましょう。
WSL2だとRAMが上限に達していなくてもこのエラーが出るようです。
なお、WSL2のメモリは物理RAMの80%まで使える仕様になっています。
私はバッチサイズを 2 にしています。
ステージ1のエラー回避のために分割を抑制すると、メモリの食い方が尋常じゃないので気を付けましょう。
私の環境はこちら。
・WSL2(Ubuntu 20.04 LTS)
・Windows 10 Home Insider Preview(Version: 2004, Build: 20197)
・CPU: Intel Core i7-7700
・RAM: 32GB(DDR4, 2400MHz)
・GPU: NVIDIA Geforce GTX 1070
・ストレージは M.2 SSD
ステージ6以降でエラーが出た
わからん
File "/home/crazy/.local/lib/python3.8/site-packages/nnmnkwii/frontend/merlin.py", line 242, in load_labels_with_phone_alignment
label_feature_matrix[label_feature_index:label_feature_index +
ValueError: could not broadcast input array from shape (136,424) into shape (37,424)