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

エンジン側でいろいろ設定できるGUIを提供する #522

Closed
Hiroshiba opened this issue Dec 4, 2022 · 10 comments
Closed

エンジン側でいろいろ設定できるGUIを提供する #522

Hiroshiba opened this issue Dec 4, 2022 · 10 comments

Comments

@Hiroshiba
Copy link
Member

内容

サードパーティアプリでエンジンだけを利用するという機会がそこそこ増えています。
エンジン単体でエンジンを設定できるGUIがあると便利そうです。

直近でCORS設定のために需要が増すと感じており、優先度を高めに設定しています。

Pros 良くなる点

エンジン単体で設定できたりする

Cons 悪くなる点

実現方法

Streamlitが便利だと思います。
ブラウザでGUIを表示できるのでお手軽です。

その他

ついでに簡単な音声合成ができるとデバッグなどにも便利かも?

@takana-v
Copy link
Member

Streamlitの実行には、streamlit run xxx.py を実行する必要があり、ビルド周りが大変そうです。
(不可能ではないですが、run.exeでボイボエンジンとstreamlitの両方を起動させようとすると、大きな変更が必要になりそうです)

現状、GUIの実装方法は大きく分けて2種類あります。

  • 設定用exeファイルを提供する
    • wxPythonなどを使用?
    • ボイボがインストールされるパスを案内する必要がある
  • 設定webページを返す
    • fastapiのappを2つ同時並行で動かす?
    • bootstrap(とjinja2)の利用

どちらの方法で進めるかは要検討です。

@Hiroshiba
Copy link
Member Author

まとめありがとうございます!!
Streamlit、静的HTMLをレンダリングできないのは個人的に予想外でした)

ユーザー目線で考えると、パスを探す必要がない「設定webページを返す」方が良いだろうなと思いました!
もし簡単に実装できるなら(開発者目線で)「設定用exeファイルを提供する」も良いかもと思いました!

@Hiroshiba
Copy link
Member Author

wxPython・bootstrap+htmlどちらが良いかを考えていたのですが、どちらも一長一短だなという感じです。
前者はwxPythonの知識が必要になってきますが、pythonのみで書けるのでフォーマッターなどの導入がいりません。
後者はHTML+jsを生で書く煩わしさがありますが、webコーディングは一般的なので必要な知識が少なくてすみます。

とにかくGUIが提供されていることが一番大事だと思うのでう、実装はどの方針でも良いのかなと思いました!
もし取り組んでくださる方がいらっしゃったらアサインさせて頂きたいのでご連絡ください・・・!

@My-MC
Copy link
Contributor

My-MC commented Dec 17, 2022

横から失礼します。

PythonはGILが使わているため複数のウェブサービスを動かそうとするとレスポンスなどが遅くなる可能性があります。
そのためFastAPIのhtmlresponseとjinjaのテンプレートエンジンを使ってWebGUIを実装するのがいいかと思います。この場合ですと、新しくappを作成する必要もなくなり、エンドポイントを追加するだけで実装できます。

@Hiroshiba
Copy link
Member Author

プロセスを分けたらGILを無視できるので、その点は気にしなくて大丈夫だと思います!
WebGUIを実装して専用のエンドポイント追加するという方針はありだと思います!

@My-MC
Copy link
Contributor

My-MC commented Dec 17, 2022

私はいまこのissueに取り組もうと思っているのですがひとつ相談があります。

設定の保存はファイルで行う必要があると思うのですが、どのファイル形式が良いでしょうか。具体的には以下のような形式があります

  • iniファイル 標準モジュールconfigpaserで実装可能
  • yamlファイル PyYAMLで実装可能
  • json 標準モジュールjsonで実装可能
  • toml tomlで実装可能

このように簡単にあげたものだけでも、様々な形式があり、VOICEVOXにはどれが相応しいでしょうか。

@Hiroshiba
Copy link
Member Author

ありがとうございます!!
yamlでお願いします!理由はプリセットをyamlで管理しているためです。

@My-MC
Copy link
Contributor

My-MC commented Dec 18, 2022

すみませんもう一つ質問があります。

このissueはCORSの設定をWebGUIから設定できるようにするということから作成されたと思うのですが、設定できるものはrun,pyを実行するときのコマンドライン引数で指定できるものでよろしいでしょうか。

@Hiroshiba
Copy link
Member Author

そうですね!!
CORSに関連するのはcors_policy_modeallow_originで、特にほしいのはallow_originです!

@Hiroshiba
Copy link
Member Author

あ、こちらcloseしたほうが良さそうですね!
@My-MC さん、ありがとうございました!!!

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

No branches or pull requests

3 participants