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

動的ライブラリ(dllとかso)にモデルファイルを同梱させたい #86

Closed
Hiroshiba opened this issue Mar 8, 2022 · 3 comments

Comments

@Hiroshiba
Copy link
Member

Hiroshiba commented Mar 8, 2022

内容

C++だけでTTSできるライブラリを開発中です。
将来的には言語ごとのラッパー、もしくはdllなどで配布することになると思います。

もしdllとして配布する場合は、今の形式だと、dllの他に機械学習済みモデルやmetas.jsonなどのファイルを別ファイルとして同梱する必要があり、若干扱いづらいです。
dllの中にこれらのファイルを埋め込むことができれば、dll単体で動作可能になるのでとても便利そうです。

このissueはファイルを埋め込む方法を探ったり、実装したりすることが目的です。

Pros 良くなる点

動的ライブラリファイル1つをソフトウェアに組み込めば動くようになるので便利

Cons 悪くなる点

実現方法

動的ライブラリにファイルを埋め込むにはどうすれば良いのかが不明です。
最悪、ファイルのバイナリを返す関数をC++コードとして組み込めば実現できそうですが、もっとスマートな方法があれば知りたいです・・・。

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

linux、mac、windows全てで実現できると嬉しい

@Oyaki122
Copy link
Member

.hファイルに1バイトづつテキストにした.onnxファイルを配列としてincludeする方法を試してみました
https://github.com/Oyaki122/voicevox_core/tree/embed_bin

私のPCでビルドしたところ正常に推論可能であることが確認できました
しかし上記リポジトリのActions実行結果の通り、Actionsではコンパイラがヒープを使い果たすため、ビルド不可能ということがわかりました。
何かメモリを節約してビルドする方法があれば教えていただきたいですが、当面はobjcopyを使用する方針で進めていきます

@Hiroshiba
Copy link
Member Author

検討ありがとうございます!!
なるほど、コンパイラがエラー・・・。
objcopyする方法はOS依存がありそうに感じていますが、それが突破できそうであれば嬉しいですね。。

@Hiroshiba
Copy link
Member Author

こちら、実装ができた(thx @Oyaki122 !! )と思うのでcloseしたいと思います!

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