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

metas情報を返すようにする #30

Closed
Hiroshiba opened this issue Oct 27, 2021 · 5 comments · Fixed by #46
Closed

metas情報を返すようにする #30

Hiroshiba opened this issue Oct 27, 2021 · 5 comments · Fixed by #46

Comments

@Hiroshiba
Copy link
Member

内容

コアの機能の1つに、話者やスタイルの情報をjson形式で返すというものがあります。
https://github.com/Hiroshiba/voicevox_core/blob/f59c6fbe20f248a094afbe717a4c1127ed5ceb96/core.h#L42

こんな感じのjsonです。

[
  {
    "name": "話者1",
    "styles": [{ "name": "ノーマル", "id": 0 }],
    "speaker_uuid": "uuid1",
    "version": "X.X.X"
  },
  {
    "name": "話者2",
    "styles": [{ "name": "ノーマル", "id": 1 }],
    "speaker_uuid": "uuid2",
    "version": "X.X.X"
  }
]

実現方法

initializeで与えられたroot_dirの下にあるmetas.jsonを読み込んで返す、というのが良いと思っています。
https://github.com/Hiroshiba/voicevox_core/blob/f59c6fbe20f248a094afbe717a4c1127ed5ceb96/onnx/core.cpp#L60

こうすることで、ディレクトリの指定を変えるだけで別のコアを読み込めるためです。

@Yosshi999
Copy link
Contributor

Yosshi999 commented Nov 8, 2021

返すJSONがvalidであることを保証するかどうかで実装の重さが変わりそうですね。metas.jsonが壊れててもそのまま返してしまって良いのならテキスト読み込みだけで済みそうです

...と思ったんですが #31 をやるならパースが必須でしたね

@Yosshi999
Copy link
Contributor

header onlyなjsonパーサ(MIT License)
https://github.com/nlohmann/json/tree/develop/single_include

@Hiroshiba
Copy link
Member Author

これに取り組むために何かしらのjsonライブラリを使おうと思ったのですが、このリポジトリで外部ライブラリを取り込むデファクトの方法ってどれだと思われますか・・・? @Yosshi999

これとか良いのかなとか思って見ています。
https://github.com/nlohmann/json#cmake

git submoduleで取り込んでcmakeでadd_submoduleにする、とか・・・?
この辺り本当に全く知らず。。

@Yosshi999
Copy link
Contributor

せっかくヘッダオンリーなのでそのままファイルを持ってきてしまうという手もあります(ライセンス表記もソースコードに埋まってます)

@Hiroshiba
Copy link
Member Author

ヘッダーをコピペするとバージョンアップが大変かなと思いましたが、まあ気が向いた時に上げれば良い気がしました。良さそうです!!

ライセンス表記の意図は、ソースに埋まっているからユーザーに案内しなくても良いと言う意図でしょうか。
であればコンパイルしたら消えてしまうので、たしか別途ユーザーに案内する必要があるはずです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants