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)

この記事が気に入ったらサポートをしてみませんか?