-
Notifications
You must be signed in to change notification settings - Fork 120
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
音声合成の処理を丸ごとスレッド分離して実行する #692
音声合成の処理を丸ごとスレッド分離して実行する #692
Conversation
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.
補足: #662 を念頭に置いています。
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.
Synthesizer
がstruct Synthesizer(Arc<_>)
という構造になったことにより、Arc
で包む意味が無くなったため。
(Python APIも同様)
追記: #662 のときには結局Arc<voicevox_core::blocking::Synthesizer>
ってなってそうですが、今放置しておく理由も特に無いし、diff的にも別にいいかなと。
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.
Java APIと同様。
追記: こっちは #662 以降もそのままのはず (何故ならこっちはasyncなAPIなので)
self.use_gpu | ||
} | ||
|
||
// FIXME: ブロッキング版を作る |
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.
async_zip さえ差し替えられればよいはず。
(tokio::fs
はstd::fs
の単なるラッパーなので、std::fs
に置き換えた上で丸ごとスレッドに包めばよい)
tokio::fs
の方、タスクキャンセルを考えると丸ごと包むのはやめた方が良いかも
|
||
use super::InferenceRuntimeImpl; | ||
|
||
pub(super) struct Synthesizer { |
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.
#662 のときになったら、これはvoicevox_core::blocking::Synthesizer
として配置(re-export)する。
/// | ||
/// # Performance | ||
/// | ||
/// CPU/GPU-boundな操作であるため、非同期ランタイム上では直接実行されるべきではない。 |
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.
すみません! 前にもみたいなこと聞いたかもなのですが、これって何ででしたっけ 🙇
非同期ランタイムはRustの文脈(というよりtokio?)でグローバルにたった1つだけしかなく、別の非同期処理(ファイルI/Oなど)が実行されなくなるから、とかでしたっけ
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.
LGTM!!!
1つ質問コメント書いているのですが、おそらく理解はあってると思うのでOKかなと!
マーズします!
mod user_dict; | ||
mod version; | ||
mod voice_model; | ||
|
||
#[doc(hidden)] |
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.
あ、ここ手元でcargo doc
で確認するときに外して、そのまま忘れてgit add
してしまったやつですね...
内容
Synthesizer
の音声合成系のメソッドを、すべて丸ごとスレッド分離して実行するようにし、asyncのランタイムを阻害しないようにします。#545 の以下のタスクを完全に解決します。
関連 Issue
#545
その他