Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement GPT-SoVITS #1422

Open
wants to merge 26 commits into
base: master
Choose a base branch
from
Open

Implement GPT-SoVITS #1422

wants to merge 26 commits into from

Conversation

kyakuno
Copy link
Collaborator

@kyakuno kyakuno commented Mar 18, 2024

@kyakuno
Copy link
Collaborator Author

kyakuno commented Mar 21, 2024

vitsモデルがSTFTを使用しているのでailia SDKの更新が必要。

    vits = ailia.Net(weight = WEIGHT_PATH_VITS, stream = MODEL_PATH_VITS, memory_mode = memory_mode, env_id = args.env_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/ailia/wrapper.py", line 256, in __init__
    self._open_weight(weight)
  File "/usr/local/lib/python3.11/site-packages/ailia/wrapper.py", line 287, in _open_weight
    core.check_error(code, self.__net)
  File "/usr/local/lib/python3.11/site-packages/ailia/core.py", line 909, in check_error
    raise e(detail)
ailia.core.AiliaUnsupportNetException: code: -9 (Unsupported network.)
+ error detail : Layer:/STFT(STFT) Error:Unsupported layer: STFT

@kyakuno kyakuno changed the title [WIP] Implement GPT-SoVITS Implement GPT-SoVITS Mar 21, 2024
@kyakuno
Copy link
Collaborator Author

kyakuno commented Mar 21, 2024

vitsだけonnx runtimeで動かす。

python3 gpt-sovits.py -e 1 --onnx_vits

@kuguma
Copy link
Contributor

kuguma commented Apr 17, 2024

STFT導入済みの最新Masterで実行。

ailia.core.AiliaInvalidLayerException: code: -10 (Incorrect layer parameter. [broken or unsupported AI model file])
+ error detail : Layer:/STFT_output_0(STFT) Error:Input signal shape must be [batch_size][signal_length][1 or 2].

@kuguma
Copy link
Contributor

kuguma commented Apr 17, 2024

モデルが不正。
https://github.com/onnx/onnx/blob/main/docs/Operators.md#stft

signal (non-differentiable) : T1
Input tensor representing a real or complex valued signal. For real input, the following shape is expected: [batch_size][signal_length][1]. For complex input, the following shape is expected: [batch_size][signal_length][2], where [batch_size][signal_length][0] represents the real component and [batch_size][signal_length][1] represents the imaginary component of the signal.

@kuguma
Copy link
Contributor

kuguma commented Apr 17, 2024

image

@kuguma
Copy link
Contributor

kuguma commented Apr 17, 2024

onnxruntimeの実装では[batch_size][signal_length]の入力にも対応していた記憶があるが、onnxの規格外

@kyakuno
Copy link
Collaborator Author

kyakuno commented Apr 17, 2024

@kuguma onnxruntimeでは動作しており、torchと公式のonnxパッケージからエクスポートしているため、onnxのドキュメントの方が追いついてないのかもしれません。ailiaもこのモデルが動く範囲まで仕様拡張可能でしょうか?

@kuguma
Copy link
Contributor

kuguma commented Apr 18, 2024

@kyakuno 対応してみます。

@kuguma
Copy link
Contributor

kuguma commented Apr 22, 2024

実装を拡張しましたが(テストも追加して確認済み)、別のエラーで停止しました。

ailia.core.AiliaInvalidStateException: code: -7 (The internal state of the ailia is invalid.)
+ error detail : Layer:/vq_model/ref_enc/If_output_0(If) Error:Execute layer failed. layer:/vq_model/ref_enc/If_output_0

@kuguma
Copy link
Contributor

kuguma commented Apr 23, 2024

OnnxReferenceを利用するようにこのスクリプトを書き換えてみて試してみましたが、仕様通りエラーとなりました。

また、torchのonnx.exporterの実装を確認してみましたが、こちらはruntimeと同様に入力は2次元を想定する形になっています。
https://github.com/pytorch/pytorch/blob/main/torch/onnx/symbolic_opset17.py

torch, onxxruntimeとonnx公式側で差が出ているようで、どっちに寄せるかは公開リポジトリ上での相談が必要なので追々コントリビュートするとして、とりあえずailiaではどちらも対応できるように進めます。

Ifで落ちたのは別に原因がありそう(@mmitti さんが対処中)
ということなので、そちらが解消されたら再度試してみる予定です。

@kuguma
Copy link
Contributor

kuguma commented Apr 25, 2024

もろもろの修正を取り込んだailia本体のmaster最新で、手元での動作を確認しました。

@kyakuno
Copy link
Collaborator Author

kyakuno commented Apr 30, 2024

ailia SDK 1.4.0 betaで動作を確認しました。

@kyakuno
Copy link
Collaborator Author

kyakuno commented May 2, 2024

TODO : モデル名からnahidaを削除、英語での音声合成に対応

@kyakuno
Copy link
Collaborator Author

kyakuno commented May 3, 2024

英語の音声合成の対応と、モデル名の変更を行なった。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants