-
Notifications
You must be signed in to change notification settings - Fork 126
Closed
Description
内容
現在、Synthesizer
にVVMのload/unloadをするためにはそのSynthesizer
を「専有」する必要があります。その「専有」がmutexで成されるにせよ規約で成されるにせよ、非同期(async)で実行可能というコンセプトを損います。先日#513の一応の結論が出ましたが、Python APIにおいてはIO-bound/CPU(GPU)-boundな処理をasyncioの文脈に統合するという役割が残っています。
そこで次のことをして、問題を解決します。
-
Status
の構造を根本的に変え、次のことを成す- 共有参照(
&Status
)からすべての実行をできるようにする- VVMの追加/削除とONNXモデル実行が衝突しないようにする
- CPU/GPU boundな処理は
tokio::task::spawn_blocking
で包む- モデルの実行に必要な
Session
や[impl AnyArray]
を、参照を断ち切った'static
な文脈で実行できるようにする
- モデルの実行に必要な
- 共有参照(
-
VVMの追加/削除と、音声合成
Pros 良くなる点
- 上記の問題が解決される
Cons 悪くなる点
実現方法
#513 (comment)で紹介した以下の実装から、「decode
の並列実行」を抜きます。
ただしこれは #551 と盛大に衝突しそうな気がします。例えば上記の実装では、id_relations
を丸ごと消し飛ばしています。ただその場合でもさっさとPRとして出さなかった私が悪いというのもあるので、 #551 ベースでまた考え直そうと思います。
VOICEVOXのバージョン
N/A
OSの種類/ディストリ/バージョン
- Windows
- macOS
- Linux
その他
Hiroshiba