-
Notifications
You must be signed in to change notification settings - Fork 118
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
StyleMeta::r#type
を追加し、トークという区分を実装に導入する
#761
Conversation
PRのタイトルを変更し、最初のコメントにも追記を入れました。 #737 の準備ということで、実装上でトーク用モデルを"talk"いう名前を与えるようにしました。 |
|
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.
差分が多すぎて移動扱いされなくなってしまった。とりあえず私は
❯ diff -u <(git show main:crates/voicevox_core/src/infer/status.rs) crates/voicevox_core/src/status.rs | delta -s
のようにして確認しています。
(delta(1)
はMSYSにもあります: mingw-w64-x86_64-delta
)
(コードエディタの拡張 (e.g. VSCodeのGitLens)にもしかしたらそういう機能があるかもしれない)
crates/voicevox_core/src/status.rs
Outdated
|
||
impl InferenceDomainMap<[bool]> { | ||
fn accepts(&self, style_type: StyleType) -> bool { | ||
let InferenceDomainMap { talk } = *self; |
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.
InferenceSessionOptions, InferenceSignature, ParamInfo, | ||
}; | ||
|
||
pub(crate) struct SessionSet<R: InferenceRuntime, D: InferenceDomain>( |
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.
このSessionが何を指すか、初見だとわからないかもと思いました!
僕たちはonnxruntime.Sessionで見慣れてますが、なにか違うものだと勘違いするかも。
例えばInferenceSessionSetにするのはどうでしょう。SessionCellも同じく。
あとSessionとは何なのかの一言ドキュメントがあれば追いやすいのかなと思いました。まあ・・・説明難しいのですが・・・。
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.
これまではstatus.rsの中だけで使ってたので名前を簡潔にしていたのですが、pub(crates)
にするなら"Inference"は付けた方が確かにいいですね。
734564f
(#761)
"session"については語感でなんとなく把握してもらえないかなと思っています。とはいってもTFLiteとかに手を出すときは整理をつける必要がありますし、infer/下の諸々と一緒にドキュメントは整備したい感はあります。
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.
たしかにinfer以下にあれば察しはつくかもですね。
あーでも1回の推論ごとに1回セッションができると勘違いしてコード読み進めちゃう可能性はありそう。
モデル(Operation?)と対応する概念だという説明はまあなくても読んでればわかるけどあった方が良さそう。
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.
まああった方はよいですね。TODOを残しました。
275d3d4
(#761)
class StyleType(str, Enum): | ||
"""**スタイル** (_style_)に対応するモデルの種類。""" | ||
|
||
TALK = "TALK" |
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.
あ。小文字の snake_case でどうでしょう。
深い意味はないのですが、pythonエンジンがそう作っちゃったので合わせとこうかなと。
あと大文字が続くと英語勢には読みにくいらしいという言い訳もあります。
SINGING_TEACHER
とか読みづらいかもしれない。
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 API)だとsnake_caseなので、Python/Java API側のバグですね。Python APIだとvoice_model.metas
とかsynthesizer.metas
で死ぬ状態になってました。テストが無かったのでpytestを追加しておきました。
43fa77d
(#761)
Javaの方はmetasに対するテストがあったのですが、SCREAMING_SNAKE_CASEのままでも通ってたようです。確認してはいないのですが、GSONってデフォルトでcase insensitiveでデシリアライズするのかな…?
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の方はmetasに対するテストがあったのですが、SCREAMING_SNAKE_CASEのままでも通ってたようです。確認してはいないのですが、GSONってデフォルトでcase insensitiveでデシリアライズするのかな…?
確認してみたところ、SCREAMING_SNAKE_CASEだとtype
がnull
になってました。case sensitiveではあるようです。失念していたのですがGSONはenum
に限らずJSON中の読めなかった部分を全部サイレントにnull
とかにするので、何とかしたいですね。何とかできないのなら…まあテストを書く?
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!!
いろいろコメントしましたが、こちらのPRでクリティカルに問題になりそうなとこは思いつかなかったです!
実装ありがとうございました!!!!!!
どのstructがどういう役割を持っているのか、設計を見失っちゃいそうなりますね!
Synthesizerとかstatusとか。(どちらも1つのインスタンスから全推論ドメインの情報を見れる)
sing APIを実装すると役割がわかりやすくなりそうなので楽しみです。
approveなので特に再レビュー不要そうだったらマージしていただければ!
レビュー対応しました。 |
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!!
チェックをVoiceModelに移動したのなるほどでした。こっちのほうが良い気がしました!
内容
#737 の下準備として、VVMがトーク用モデルセットを必ずしも持たなくてよいようにします。
manifest.jsonは次のようにします。
(edit) その他にも、実装の各所に"talk"という名前を導入します。
関連 Issue
#581 (?)
その他