Skip to content

voice versionという概念を導入する #77

@qryxip

Description

@qryxip

内容

VOICEVOXは学習更新や調整で、「同じスタイルでも音が変わる」ことがあります。そのため「古い音を利用したい」という需要が発生しうります(例1, 例2)。この需要に対応する機能として、ENGINEにはコアの差し換え及び複数コアの読み込みがありますが、これには後述する難点があります。そこで voice version という概念を導入し、過去版の固定や再現を簡単にできるようにする案です。

現在「声」の識別子は、例えばエディタ視点だとこうなっていると思います。

(EngineId, SpeakerUuid, StyleId)

ここに"voice version"という概念を導入し、

(EngineId, SpeakerUuid, StyleId, Optional VoiceVersion)

のようにします。具体的には、metasにおけるスタイルの下にvoice_versionというプロパティを追加します。またキャラクター下のversionはdeprecated扱いにします。

今のENGINEにある"core version"では駄目な理由
  • 「コア」ではなくVVMで区別する方が利便性が高い。コアのバージョンにしておくメリットもユーザーには無いはず
  • "core version"は現在「コアが出すmetasにおける、先頭のCharacterVersion」という意味になっている。これが不便であることは明らかとして、これを別の意味で置き換えることも混乱を招きうる

voice versionの具体的なデータ構造はまだ議論していません。個人的には、エディタレベルでユーザーにvoice versionの値を直接見せることも視野に入れた方がよいかなと思ってます。

  • 連番による整数か?それとも"yyyy-mm"のような文字列か?それともUUIDか?
    • 先行配布のときは"n-beta.1"にしておく、という手もありそう
  • OpenAPIの事情を一旦脇に置いておくと、実質的にオプショナルであるべきか?オプショナルの場合、 デフォルトではどういう扱いにするべきか?
    • VOICEVOX以外のエンジンのことを考えるとオプショナル一択
  • ストリーミングでは「声は全く変わらない」といった感じだが、このときvoice versionは変化するべきか?

これまでの議論:

Pros 良くなる点

  • 「古い声の復刻版」のVVMを提供できる
  • それにより、エディタレベルでの声のバージョン切り替えの話が進みやすくなる

Cons 悪くなる点

実現方法

VOICEVOXのバージョン

OSの種類/ディストリ/バージョン

その他

Metadata

Metadata

Assignees

No one assigned

    Labels

    機能向上要議論実行する前に議論が必要そうなもの

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions