-
Notifications
You must be signed in to change notification settings - Fork 305
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
VVPPをデフォルトエンジンに指定可能にし、未インストール時にインストールするか聞くようにする #2270
base: main
Are you sure you want to change the base?
The head ref may contain hidden characters: "\u6307\u5B9A\u3055\u308C\u3066\u3044\u308BVVPP\u304C\u306A\u304B\u3063\u305F\u3089\u78BA\u8A8D\u5F8C\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3001\u4F7F\u3048\u308B\u3088\u3046\u306B\u3059\u308B\u3088\u3046\u306B\u3059\u308B"
VVPPをデフォルトエンジンに指定可能にし、未インストール時にインストールするか聞くようにする #2270
Conversation
…後にインストールし、使えるようにするようにする
実装方針メモ
|
エンジンがインストールされているか判定するために、アプリを起動する前にエンジン情報を2回取得する必要が出てきました。 |
デフォルトエンジンが複数ある件の考慮
|
とりあえずVVPPをダウンロードしてインストールしてから起動できるようにしてみました! 一旦main.tsに書いた一連の機構はEngineControllerでやった方が良さそう。 |
97d03df
to
f5f705d
Compare
main.tsに書いた一連の機構をEngineControllerに移しました! あとは環境変数からエンジンの情報を読み込むのを |
EngineInfoManagerを、「利用可能になってるエンジンの情報のマネージャー」とするとすっきりすることがわかりました! ↓こうだったものを
↓こうしてみました
結構いい感じになったと思うので、リファクタリングプルリクエストを2つほど出してから完成になりそうです! |
…後にインストールし、使えるようにするようにする
… 指定されているVVPPがなかったら確認後にインストールし、使えるようにするようにする
…後にインストールし、使えるようにするようにする
できたのでドラフトあけます! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sabonerune さん
(もしよければ @sevenc-nanashi さんも)
いつも頼ってばかりですみません!! 🙇
もしよければ眺めたり実行したりしてみて、疑問に思ったこととか設計上の不安とかあればコメントいただけると・・・ 🙇
どうにも設計に自信がなく、このまま進んで行って大丈夫なのか結構不安で 😇
.envのVITE_DEFAULT_ENGINE_INFOS
を、"type": "downloadVvpp",
にしてlatestUrl
を追加してexecutionFilePath
を消せば動くはずです。
もし試す場合はVOICEVOXのVVPPが残ってしまうので、vvpp-engines
から手動で消す必要があります。
タスクとしては↓に一覧があって、このPRでは3番目と4番目を解決してます。
#1194 (comment)
開発者が.envを変えたときにVVPPをダウンロードできるようにもなってるだけ、という感じです。
後ほど開発者向けにVVPPダウンロード機能を提供する予定です。
(READMEに書くだけの予定。.env.developを作ってそっちにお手本いろいろ書いても良いかも)
ダウンロード中画面などを追加して UX をもっと綺麗にしたら一般提供したい予定です。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
とりあえず一通り動かして変更したコードを眺めたコメントです。
設計に関しては今のところ思い浮かびませんね…
const { url, name, size } = p; | ||
|
||
log.info(`Download ${name} from ${url}, size: ${size}`); | ||
const res = await fetch(url); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
globalのfetchを使っていますがelectronのfetch(net.fetch)を使うべきだと思います。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
みた感じそこまで変わらなさそう?( https://www.electronjs.org/ja/docs/latest/tutorial/progress-bar が適用されるというわけでもなさそうだし)
const buffer = await res.arrayBuffer(); | ||
if (failed) return; // 他のダウンロードが失敗していたら中断 | ||
|
||
const downloadPath = path.join(downloadDir, name); | ||
await fs.promises.writeFile(downloadPath, Buffer.from(buffer)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1GBを超えるファイルをメモリに載せるのは流石に良くない気がします。
Streamを使うべき?
内容
タスクの第3弾です。
.env
のVITE_DEFAULT_ENGINE_INFOS
の定義を変更すれば実際に起動時にVVPPをインストールするか尋ねられます。定義は例えばこんな感じ。(
executionFilePath
を消し、type
とlatestUrl
を足す。)起動後に別のPRを実行しようとすると、vvpp版と今までのエンジンが重なって挙動が変になるはず 😇
そのときは
AppData\Roaming\voicevox-dev
のvvpp-engines
から直接VOICEVOX Engineを消してください 🙇エンジンのアップデート可能だとしてもまだ再インストールは求められないようになっています。
またGPU版がある場合はそちらをインストールするようになってます。
デフォルトの挙動は一切変わってないはずです。
READMEでの案内はまだ書いていません。後々に書く予定。
関連 Issue
ref #1194
その他
こんな感じで.envを書いて
;
でコメントアウトを切り替えるとVVPPインストール版と通常起動版を切り替えられるはず。