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

VOICEVOX COREエンジン複数対応 #12

Closed
7 tasks done
YuukiOgino opened this issue Jan 10, 2024 · 2 comments
Closed
7 tasks done

VOICEVOX COREエンジン複数対応 #12

YuukiOgino opened this issue Jan 10, 2024 · 2 comments
Assignees
Labels
優先度:高 次のバージョンに含めたい機能のため、優先的に対応 完了 作業完了(またはプルリク作成&マージ待ち)

Comments

@YuukiOgino
Copy link
Owner

YuukiOgino commented Jan 10, 2024

本家VOICEVOX ではNemoはプラグインとして提供されているため、CORE、Nemo CORE共に共通化出来る部分は別途プラグイン(モジュール)として切り離さないと今後新しいエンジンが追加されたら対応しきれなくなるため、分けます。

※COREは使用したいが、NEMO COREは不必要、NEMO COREは使用したいがCOREは不必要、みたいなケースが考えられるため、柔軟に対応できるようにプラグインのON,OFFで切り替えるようにしたい

以下のようにプラグインを分けるイメージ

  • VoicevoxUECore.uplugin
    • VOICEVOX CORE及びNEMO COREで共通使用できる構造体、列挙体、クラスをまとめたプラグイン
    • COREライブラリのAPI(voicevox_core.hへのアクセスが必要なAPI)以外は全て VoicevoxUECore.upluginにまとめてしまう。
      • 逆にCOREライブラリのAPIへアクセスが必要な関数は、コピペで各NativeCore Pluginに量産するのは仕方ないと割り切る
    • このプラグインはVOICEVOX UEプラグイン全て依存関係(必ずONになる)を持たせるようにする
    • CORE及びNEMO COREにアクセス、もしくは値取得のためEngineSubsystemでやり取りする前提で作成する
  • VoicevoxEngine.uplugin(既存)
    • 各VOICEVOX COREのライブラリ、及びAPIアクセスをまとめたプラグインに変更
    • Blueprit公開ノードはこのプラグインで実装する
    • 編集可能な拡張エディタをこのプラグインに格納する
  • VoicevoxNativeCore.uplugin
    • VOICEVOX COREのライブラリ、及びAPIアクセスをまとめたプラグイン
    • VOICEVOX COREのライブラリをここに配置してもらう(Nemoと共有しなければこれ一つのみ)
  • VoicevoxNativeCoreNemo.uplugin
    • VOICEVOX CORE NEMOのライブラリ、及びAPIアクセスをまとめたプラグイン
    • 大体がVoicevoxNaitiveCoreと構造が似通ってしまうが、仕方ないと割り切って実装
    • 今後、何かしらでCOREライブラリが増えた場合はこのプラグインを複製して作成する

タスク一覧

  • VoicevoxUECore.upluginを作成(エディタモジュールも含める)
  • 現時点でCOREのAPIに依存しない項目は全てVoicevoxUECore側に移植
  • 可能な限りインターフェースを実装。既存クラスにインターフェースを持たせるようにしたい。
  • SpeakerTypeを渡すAPIは、int64でも渡せるように可能な限りオーバーライドさせる(15がリリースされない限りはモデル変更程度なため、更新の手間を考えると256までしか持てないEnumに固執する必要が無くなった)
  • 複数ネイティブライブラリとやり取りを行うEngineSubsystem(VoicevoxEngineSubsystem)を作成
  • VoicevoxUECoreにCORE APIにアクセスできるデリゲートをEngineSubsystemに作成(UECoreからVoicevoxCoreUtilの参照は全てデリゲートを通すことで、CORE NEMOプラグインを作成した時に同様のAPIを作成してもデリゲートで参照できるようにしたい)
  • Editor Utility Widgetで実装したComponentは全て通常のウィジェットブループリントに移植し、Editor Utility Widgetは各UIコンポーネントを使用して作成するように変更(これもCORE NEMO対応を楽にするため)
@YuukiOgino YuukiOgino self-assigned this Jan 10, 2024
@YuukiOgino YuukiOgino added the 優先度:高 次のバージョンに含めたい機能のため、優先的に対応 label Jan 10, 2024
@YuukiOgino
Copy link
Owner Author

エディタα版の対応は一通り完了したため、各エンジンで共通になるUI項目全てCOREプラグインへ移植する

@YuukiOgino
Copy link
Owner Author

色々検証した結果、Subsystemの仕組みをカスタマイズすることでプラグインのON,OFFで切り替えることが可能になったので正式採用
『VoicevoxUECoreにCORE APIにアクセスできるデリゲート』は破棄するのでタスク完了

@YuukiOgino YuukiOgino added the 完了 作業完了(またはプルリク作成&マージ待ち) label Nov 15, 2024
@YuukiOgino YuukiOgino mentioned this issue Nov 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
優先度:高 次のバージョンに含めたい機能のため、優先的に対応 完了 作業完了(またはプルリク作成&マージ待ち)
Projects
None yet
Development

No branches or pull requests

1 participant