VOICEVOX / voicevox_core

無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXのコア
https://voicevox.hiroshiba.jp/
MIT License
861 stars 117 forks source link

WebGPUに対応させる #491

Open tuna2134 opened 1 year ago

tuna2134 commented 1 year ago

内容

Voicevoxをブラウザ上で使うために、webGPUを使えるようにする

Pros 良くなる点

ブラウザでvoicevoxが使える

Cons 悪くなる点

実現方法

Hiroshiba commented 1 year ago

onnxruntimeが対応しているかどうかが重要な気がします。 @tuna2134 今の所のonnxruntime×webGPUの情報をまとめて、issueに追記しちゃうのはどうでしょう? 👀

tuna2134 commented 1 year ago

https://github.com/microsoft/onnxruntime/issues/11695 https://github.com/microsoft/onnxruntime/issues/15796 これらのissue見ると開発中っぽいですね!

tuna2134 commented 1 year ago

https://github.com/webonnx/wonnx

tuna2134 commented 1 year ago

https://github.com/microsoft/onnxruntime/pull/14579 webの方は対応済みですね

fs-eire commented 1 year ago

Please give a try and feel free to comments in https://github.com/microsoft/onnxruntime/issues/15796 if you get into any issue. Thanks!

hyranno commented 10 months ago

WebGPUはブラウザ専用規格というわけではなく、ネイティブでも動かせるバックエンド(wgpu)が開発されています。 なので、ブラウザやMacを含む全環境のGPU実装をWebGPU版で統一できたりする可能性も見れないでしょうか。 先程出たwonnxはwgpuを使ってるみたいですね。

tuna2134 commented 10 months ago

そうなんですね、、、

hyranno commented 10 months ago

ブラウザで動作させるならWebAssemblyにコンパイルすることになりそうです。(https://developer.mozilla.org/ja/docs/WebAssembly/Rust_to_Wasm)

  1. CPU版をWebAssemblyにコンパイルして、ブラウザで動くようにする
  2. WebGPU featureをオンにできるようにする

にタスクを分解した方が個々のハードルが下がりそうに思いますが、どうでしょう。

onnxruntimeのブラウザ対応ですが、ちょっと調べてみた感じだと、WebAssemblyにビルドするとき

すればよさそうな?

また、voicevox_coreのWebAssemblyを使うために

を含む voicevox_core_javascript_api クレートもあると使い易そうです。 npmパッケージとして公開できるとなお良しでしょうか。

Hiroshiba commented 10 months ago

たしかwasmは他のwasmをimportできないのですが、静的ライブラリにする形ならできるかもですね!! onnxruntime-webのドキュメントのFAQに.aの作り方案内が書かれてるのは知りませんでした。 難度がわからないですね・・・。難しそうな気がしないでもないですが・・・。

sevenc-nanashi commented 10 months ago

675 でonnxruntimeの依存が割と切り離せる(はず)のでwasm-cpu版のビルドはかなり現実的になってきてると思います。

自分が前試した時の記憶ですが、

はずです。それさえなんとかできればwasm-cpuビルドはなんとかできそうな気がします。

sevenc-nanashi commented 2 months ago

そういえば:wasmビルドだけは出来ました。現時点ではWebGPUは無理そうでした。 https://github.com/Hiroshiba/vv_core_inference/pull/5 あたりで色々変わってきそう?

https://github.com/sevenc-nanashi/voicevox_core/tree/add/wasm-build/example/wasm