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

0.16用のVVMダウンロードの流れ議論issue #922

Open
Hiroshiba opened this issue Jan 10, 2025 · 2 comments
Open

0.16用のVVMダウンロードの流れ議論issue #922

Hiroshiba opened this issue Jan 10, 2025 · 2 comments

Comments

@Hiroshiba
Copy link
Member

Hiroshiba commented Jan 10, 2025

内容

ダウンローダーでVVMをダウンロードできると良さそうですが、どのような流れにするかはまだ明確に決まってません。
ここで議論できればなと!

その他

今まで方針についての議論があったか調べてみたのですが、おそらくほとんど何も決まってなさそうでした!

関連しそうなリンク:

@Hiroshiba
Copy link
Member Author

Hiroshiba commented Jan 11, 2025

個人的な意見をリストアップしてみます!

ダウンローダーにVVMダウンロード機能を持たせるべきか

引き続き持たせた方が便利そう!
ダウンローダーはコアを使うためのいろんな素材(CUDAとかonnxruntime.dllとか)を持ってくる機能があり、その機能の一環としてモデルもダウンロードする機能があると便利そうなので。

どこからVVMファイルをダウンロードするか

今はコアのreleases内にあるmodel.zipに全部入れるけど、これからはvoicevox_fat_resourceから直接ダウンロードするようにしても良いかも?

ダウンローダーがデフォルトでどのバージョンのVVMを持ってくるか

そのコアバージョンに対応する vvm を持ってこれると便利そうではある。
つまり過去のダウンローダーは過去のモデルをデフォルトでダウンロードすると便利そう・・・?

今はたぶんコア.dllが配布されてるreleasesと対応するvvmがmodel.zipとして降ってきてるから、コアのバージョンを指定すればそれに対応するvvmを持ってくる実装になってそう。
(でもコアは最新のがデフォルト降ってくるはず)

仮にvvmをvoicevox_fat_resourceから得る場合は、対応するresourceバージョンをダウンローダーに刻むと良い・・・かもと思ったけど、うまくやらないとそれだとvvmが追加されるたびにコア側のreleaseをしないといけなそう!
voicevox_fat_resourceのバージョニングを頑張る手もある(メジャーバージョン変更でVVMのversion更新、マイナーバージョン変更でキャラクター追加、他の変更は全てパッチバージョン変更・・・?)けど、そうするとvoicevox_fat_resourcevoicevox_resourceのバージョンが異なるようになりそう。
まあ別に・・・・・・良い・・・・・?ちょっと見通しが立てづらい・・・。

(追記)あるいは今まで通りとりあえずlatestを持ってくる仕様でも良いかも・・・?
いやこれはとりあえずじゃなくてこれからずっとになりそう。

ダウンローダーで利用規約を表示するか

可能ならダウンロードでダウンロードする時にVVMの利用規約を表示して、規約に同意する時のみダウンロードするようにしたい。
もしそれをやる場合はVVMごとにtos.mdを置くか、全体で1つtos.mdを置くと良さそう。(たぶん後者になりそう。)

vvmなどのディレクトリ構造をどうするか

これはちょっと自明じゃなさそう。
雑にやるならこう?

root
┗core
 ┗vvm
  ┗0.vvm
  ┗1.vvm
  ┗・・・
  ┗README.md (このディレクトリの説明用、ダウンローダーからは使わなそう)
  ┗term.md (利用規約ファイル。VOICEVOX webページの利用規約ページがtermなので合わせただけ)


まとまってないけど一旦コメントまで 🙇
なんかうまい運用の仕方とか思いついたら是非コメント欲しいです!

とりあえずどうしましょう。。。。。
運用周りはさておいて先にダウンローダーの実装だけでも進める・・・?
例えばvoicevox_fat_resourceに新しいvvmをアップロードして、何でもいいから適当に1回タグを切り、コアのダウンローダを変更してvoicevox_fat_resourceからvvmをダウンロードできるようにする・・・?

@qryxip
Copy link
Member

qryxip commented Jan 11, 2025

ダウンローダーにVVMダウンロード機能を持たせるべきか

賛成です。

どこからVVMファイルをダウンロードするか

voicevox_fat_resourceから直接ダウンロード

同じく賛成。

[追記] 利用規約のSHA-256を鍵としたAESでVVMを暗号化しておく、というアイデアを前話したと思うのですが、費用対効果は…うーん…

ダウンローダーがデフォルトでどのバージョンのVVMを持ってくるか

対応するresourceバージョンをダウンローダーに刻む

latest

この二つのハイブリッドはありかも。基本的にlatestだけど、ダウンローダーが知らないやつだったらやんわりとwarningを出す感じで。

ダウンローダーで利用規約を表示するか

ダウンロードする時にVVMの利用規約を表示して、規約に同意する時のみダウンロード

賛成。ただvoicevox_onnxruntimeも同様にした方がよいですね。

VVMごとにtos.mdを置くか、全体で1つtos.mdを置くと良さそう。(たぶん後者になりそう。)

後者ですかね。VVMという形式自体の利用規約は共通のはずですし。

それとは別にVVM内に利用規約を埋め込むというのはありかもしれません。VoiceModelFile::eulaでVVM自体の利用規約を、metas内で各キャラクターの利用規約(URL)を出せるようにして。

[追記] コアの実行時に、voicevox_core::agree_to_eula(&self, eula_sha256s: &[[u8; 32]])みたいなのを用意しておいて、session config entryに入れてvoicevox_onnxruntimeに伝える、という感じにすれば、利用規約について「知らなかったとは言わせない」と十分に言えると思います。
(その際二重にやってもあれなので、利用規約のSHA256についてはvv_binのバイナリに対してすみやかに判定できるような形にする)

…まあそこまでやると利便性にも影響が出そう。

+VVORT_EULA_SHA256 = b"…"
+VVM_EULA_SHA256 = b"…"
+
+voicevox_core.agree_to_eula({VVORT_EULA_SHA256, VVM_EULA_SHA256})
 vvort = await Onnxruntime.load_once()
 ojt = await OpenJtalk.new(…)
 synth = Synthesizer(vvort, ojt, …)

vvmなどのディレクトリ構造をどうするか

root
┗core
 ┗vvm
  ┗0.vvm
  ┗1.vvm
  ┗・・・
  ┗README.md (このディレクトリの説明用、ダウンローダーからは使わなそう)
  ┗term.md (利用規約ファイル。VOICEVOX webページの利用規約ページがtermなので合わせただけ)

よさそう。

VOICEVOX webページの利用規約ページがtermなので合わせただけ

ダウンローダーで利用規約を表示するなら"eula"でよさそうな気がします。

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

2 participants