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 のコアライブラリのみプロプライエタリになっている理由が知りたい #23

Closed
tsukumijima opened this issue Oct 20, 2021 · 10 comments

Comments

@tsukumijima
Copy link

タイトルの通りですが、VOICEVOX のコアライブラリのみプロプライエタリになっている理由を伺いたいです。

VOICEVOX 本体、そして VOICEVOX ENGINE に関しては、ヒロシバさん自身が初学者もコミットできるような取り組みを積極的に行われていますし、Contribute 大歓迎といった方針に見えます。
VOICEVOX 自体も、公式サイトでも謳われている通り OSS ソフトウェアだという点が、各種メディアでもフィーチャーされている特色の一つのように思います。

その一方で、この VOICEVOX CORE は、コードとして配置されているのはライブラリを利用するためのヘッダファイルとそのサンプルコードのみで、実際の音声合成の推論コードはプロプライエタリです。
実際のコアライブラリ本体は Release にバイナリの状態で公開されていますし、ライセンスにはリバースエンジニアリングの禁止の条項もあります。

仮に OSS になったとしても、私を含め音声合成の専門家以外には Contribute はおろか、処理を把握するのも困難な代物であるのは想像に難くありません。
ただ、コアも OSS にした方がより他のコントリビューターの開発がやりやすくなるのは間違いないでしょうし、この Issue を見ても、実際のコードが公開されていないことが OSS 開発としての障壁になっているように感じられます。
また、現時点での VOICEVOX CORE のバイナリには、Windows x64 と Linux x64 のアーキテクチャ向けのものしか同梱されています。これはつまり、ラズパイなどの ARM デバイスでは現時点で VOICEVOX を実行できない事を意味します。

また、vv_core_inference にて VOICEVOX CORE の推論コードが公開されています。これは libtorch をより軽量な手段で代替するための議論や Contribute を受けられるようにという意図からのようですが、コア全体が公開されていた方がより有益な Contribute を受けやすいでしょうし、プロプライエタリにすることに、敢えて別のモデルを用意しコードの一部分のみを公開するという遠回りな作業が必要になること以上の動機があるようには私には思えません。

VOICEVOX は DTMStation の記事で語られている経緯からして、今後も有料化や販売などの展開はないように思います。
UI 、そしてエンジン部分は OSS でむしろ Contribute を推奨しているのに、コアだけがプロプライエタリになっているのは、いささか不可解に思えます。
前述の通り OSS としての開発に支障すること、アーキテクチャの自由が狭まること、有料化や販売の予定がないであろう事を鑑みると、本来ヒロシバさんに VOICEVOX CORE をプロプライエタリにする動機はないはずです。

明示的にリバースエンジニアリング禁止条項を記載している事、さらに vv_core_interface に『諸事情により「第三者が簡単にモデルの内容を得られない」ようにする必要があります。pythonコードは容易にコードを推測できるので使えません』とあるあたり、ヒロシバさん本人の意向以外の何らかの事情が影響しているのだとは思いますが、そのあたりの経緯を明示していただけないでしょうか。

また、コア部分がプロプライエタリにも関わらず、あたかも音声合成周りのコアを含めた全てがオープンソースであると誤解させるような記述を公式サイトを含めた各媒体でなされているのは個人的にいささか不誠実であるように感じているところですが、そのあたりに関してどうお考えなのかもお伺いできればと思います。


このほか、少し話がそれますが、GitHub でも各所で使われている「製品版 VOICEVOX」とは何を示すものなのかに関してもお伺いしたいです。
「製品版」という表現は、一般的には価格をつけて販売されるものを意味するものだと思います。無料である VOICEVOX の場合、どれが製品版で、どれがそうでないのかが曖昧です。

また、公式サイト に記載されており、また VOICEVOX 内部から閲覧できる利用規約も、OSS である事とは裏腹に、VOICEVOX CORE と同じくリバースエンジニアリングの禁止事項や再配布禁止規定が記載されています。
コアだけならばともかく、OSS である VOICEVOX と VOICEVOX ENGINE にまで適用されるとなるとそれはオープンソースであるとは言えないのではないかと思いますが、それらの曖昧になっている部分を明示していただけないでしょうか。

OSS にしろゴラァと言いたいわけではありませんし公開できない事情があるのかと思いますが、私も最初全て OSS であると誤解していましたし、そのあたりの関係性や意図が非常に気になっています。よろしくお願いいたします。

@Hiroshiba
Copy link
Member

Hiroshiba commented Oct 21, 2021

@tsukumijima さん
ご質問ありがとうございます。
コアがプロプライエタリになっているのには理由がありますが、OSS版と製品版(キャラクター+OSS版)の違いから説明したく、時間がかかります。ドキュメントとしてまとめたいと思うので、今しばらくお待ちください。

@tsukumijima
Copy link
Author

tsukumijima commented Oct 21, 2021

ドキュメントとしてまとめたいと思うので、今しばらくお待ちください。

了解です。丁寧に対応していただき感謝します。

@Hiroshiba
Copy link
Member

VOICEVOXのOSS版と製品版の違いや、モジュールごとの役割の違いをドキュメント化しました。
https://github.com/Hiroshiba/voicevox/blob/93dd21ed4839ae41598e9c78916d50e338418eb9/docs/%E5%85%A8%E4%BD%93%E6%A7%8B%E6%88%90.md

全体構成の説明ができたので、本題であるコアがプロプライエタリになっている理由を説明します。

理由は2つあります。

1つ目は、上記のドキュメントでも触れたように、キャラクターが含まれている部分があるためです。こちらの理由はエディターやエンジンでも同じことが言えます。

2つ目は、OSS化が間に合っていなかったためです。コアの元となっているリポジトリは(未整備な状態ですが)公開していて、整備が間に合っていなかったという経緯があります。
https://github.com/Hiroshiba/yukarin_soso_connector

現在は色んな人の力を借りてコードの整備を進めています。
ただ現状もまだ手が足りていない状態なので、もしよろしければ @tsukumijima さんのお力もお借りしたいです。

コアに関して更に質問がなければcloseをお願いします。

@tsukumijima
Copy link
Author

丁寧にご返答いただきありがとうございます。ドキュメントも読ませていただきました。

上記のドキュメントでも触れたように、キャラクターが含まれている部分があるためです。こちらの理由はエディターやエンジンでも同じことが言えます。

OSS 版にキャラクターの要素(立ち絵やメタデータを含むのでしょうか?)を同梱したものが製品版 VOICEVOX という理解であっていますでしょうか?
確かにキャラクターの利用に関してのライセンスと OSS は両立し得ないでしょうし、区別して管理されているのにも納得です。

そちらとしては、OSS 版の成果物を利用し、それにキャラクターデータを組み込む事で開発されたプロプライエタリ(ライセンスとしては非 OSS )なソフトウェアとして製品版 VOICEVOX をリリースしているのだと推察します。
ですが、以前前述した通り、本体が OSS であるのにも関わらず製品版のライセンスがプロプライエタリなライセンスになっているのには、やはり違和感を覚えます(ヒロシバさん本人が著作権者である以上、ライセンス上の問題はないとは思いますが)。
たとえば Chromium と Chrome の関係(Chrome は Chromium OSS プロジェクトの成果物を利用したプロプライエタリソフトウェア)、または VSCode と Code - OSS のように、製品版 VOICEVOX の中に OSS 版 VOICEVOX のライセンス表記があるのであればそういう形もありだとは思いますが、今のところサードパーティライセンスとして VOICEVOX は含まれていないように見えます。

そこで、製品版 VOICEVOX のライセンス上の扱いを OSS なソフトウェア部分と、独自のプロプライエタリなライセンスが適用される音声ライブラリやリソースにプラグインのような形で分ける事を提案したいと思います。
OSS 版にはプラグインが搭載されておらず、公式サイトからダウンロードできる製品版にはプラグインが同梱されているようなイメージです。

現在の製品版では両方とも一緒くたにプロプライエタリなソフトウェアとして扱われていますが、これを

ソフトウェア部分はオープンソースで公開されており、ライセンスもソフトウェアに準じます。
音声ライブラリなどのキャラクターリソースには別の下記の利用規約が適用され、このキャラクターリソースを利用して制作された制作物も同じ規約が適用されます。

といった具合で、ソフトウェアは OSS であること、プラグインのような形で同梱されたキャラクターに関連するリソースは別のライセンスで、ソフトウェアとキャラクターリソースを組み合わせて利用して制作された制作物にもそのライセンスが適用されることを明示するように変更してはどうでしょうか。

こうすることで、同様の規約を維持しつつ、ライセンス上の区別と透明性を担保する事ができると思っています。
さらに、将来的に音声ライブラリが増えた際の各種対応もしやすくなるのではないかと思います。

OSS化が間に合っていなかったためです。コアの元となっているリポジトリは(未整備な状態ですが)公開していて、整備が間に合っていなかったという経緯があります。

というと、そちらとしてはキャラクターリソースが含まれるものに関してはライセンスの制約上 OSS としては公開できないが、それらを除いた純粋なソフトウェアのコア部分に関しては将来的にドキュメントを整備して公開する予定、ということでしょうか?

率直に意外でした。リバースエンジニアリングの禁止条項が明示されていること、 vv_core_interface に『諸事情により「第三者が簡単にモデルの内容を得られない」ようにする必要があります。pythonコードは容易にコードを推測できるので使えません』とあるあたり、技術的な面でコアのコードを開示できない理由(たとえば業務として開発した技術ノウハウを使っているため、会社との関係上ソースを公開できないといった事情)があるのかと思っていました。

現在 VOICEVOX CORE の方では ONNX 版のコア(?)を整備中だそうですが、これは学習させた音声ライブラリのモデルをlibcore に依存しない汎用的な ONNX フォーマットに変更し、かつ VOICEVOX CORE の(モデルなどを除いた)ソフトウェア部分を OSS として切り分けるための準備をしているのでしょうか。

以上2点、お伺いできればと思います。よろしくお願いいたします。

@Hiroshiba
Copy link
Member

ソフトウェアは OSS であること、プラグインのような形で同梱されたキャラクターに関連するリソースは別のライセンスで、ソフトウェアとキャラクターリソースを組み合わせて利用して制作された制作物にもそのライセンスが適用されることを明示するように変更してはどうでしょうか。

最適な解決策だと思います。
今はキャラクターの立ち絵などがビルドに含まれてしまっていますが、そういった別ライセンスを持つキャラクターリソースは全てコア(動的ライブラリ)に移していくのがきれいなのかなと思っています。
こうすればOSS版VOICEVOXのLGPLライセンスを使った製品版VOICEVOX、とできそうなので、その形を目指すつもりです。

現在 VOICEVOX CORE の方では ONNX 版のコア(?)を整備中だそうですが、これは学習させた音声ライブラリのモデルをlibcore に依存しない汎用的な ONNX フォーマットに変更し、かつ VOICEVOX CORE の(モデルなどを除いた)ソフトウェア部分を OSS として切り分けるための準備をしているのでしょうか。

認識のずれがあるかもしれないのでこちらから説明しますと、「VOICEVOX COREのコードをビルドするとONNXモデルを用いるためのlibcore(動的ライブラリ)ができ、キャラクターリソースであるONNXモデルと合わせて配布できるように準備している」という形です。


要点だと感じた箇所を重点的に答えてみました。

キャラクターリソースは全てコアに移す件に関しては、現状、まずはエディタからエンジンに移す作業を行っています。
https://github.com/Hiroshiba/voicevox/discussions/431
https://github.com/Hiroshiba/voicevox/issues/429

ただこの作業は設計レベルから再考する必要があるため、非常に時間がかかると思います。
もしよろしければ @tsukumijima さんのお力もお借りしたいです。

@tsukumijima
Copy link
Author

tsukumijima commented Nov 4, 2021

今はキャラクターの立ち絵などがビルドに含まれてしまっていますが、そういった別ライセンスを持つキャラクターリソースは全てコア(動的ライブラリ)に移していくのがきれいなのかなと思っています。
こうすればOSS版VOICEVOXのLGPLライセンスを使った製品版VOICEVOX、とできそうなので、その形を目指すつもりです。

ありがとうございます。私も別ライセンスになる学習済みモデルやキャラクターの画像、メタデータなどが本体とは別のフォルダにまとまっている形(=分割可能)が、ライセンス上も今後の拡張という面でもクリーンでいいのかなーと思っています。

認識のずれがあるかもしれないのでこちらから説明しますと、「VOICEVOX COREのコードをビルドするとONNXモデルを用いるためのlibcore(動的ライブラリ)ができ、キャラクターリソースであるONNXモデルと合わせて配布できるように準備している」という形です。

と言いますと、学習済みモデルの ONNX 化により libcore を通さずに利用できるようになるというだけで、VOICEVOX CORE のコード(キャラクターリソースは含まない)自体は今後もプロプライエタリのまま、という認識であっていますでしょうか。

詳細な構成を理解していていないのでなんとも言えないのですが、私の理解が正しければ、ONNX フォーマットの汎用的なモデルに変更することでおそらく libcore とモデルが密結合になっている状態が解消され、そうすると libcore のソースコードを公開できなかった要因(キャラクターリソースと不可分な状態になっているので、OSS としては公開できない)が解消されるのではないかと思っていますが、どうお考えなのかお伺いしたいです。

それともう一点、製品版 VOICEVOX や VOICEVOX CORE がプロプライエタリになっている理由が単にキャラクター関連のライセンスと相容れないからだけであれば、本来リバースエンジニアリング禁止事項を設けたり第三者が簡単にモデルの内容を得られないようにするようにコアを変更したり… といった所まで敢えて制限する必要はないように思います。
一見相反するように見えますが、どういう意図からなのかご説明いただけないでしょうか。


完全に興味本位の質問にも関わらず、丁寧に返答していただき感謝します。
他のタスクが山積している事もありすぐに手伝ったりといったことは難しいですが、時間があれば何か Contribute できればと思います。

@Hiroshiba
Copy link
Member

学習済みモデルの ONNX 化により libcore を通さずに利用できるようになるというだけで、VOICEVOX CORE のコード(キャラクターリソースは含まない)自体は今後もプロプライエタリのまま、という認識であっていますでしょうか。

いえ、キャラクターリソースを含まないCOREのコードはオープンソースです。

それともう一点、製品版 VOICEVOX や VOICEVOX CORE がプロプライエタリになっている理由

ここはOSSのリポジトリなので、製品版VOICEVOXに関しての受け答えはしないほうがOSSらしいと思いますので、お答えしません。

(もし個人的に興味がおありでしたら、毎日開発生放送をしていますのでそちらにお越しください。
https://com.nicovideo.jp/community/co3686550

@tsukumijima
Copy link
Author

いえ、キャラクターリソースを含まないCOREのコードはオープンソースです。

vv_core_inference とは別に、今後 OSS として整備する予定があるという理解であっていますでしょうか?
プロプライエタリであったり OSS になっていたりの差やライセンス上の扱いがどうしても気になっていたのですが、重ね重ねご返答いただき、概ね疑問を解消できたように思います。ありがとうございました。

ここはOSSのリポジトリなので、製品版VOICEVOXに関しての受け答えはしないほうがOSSらしいと思いますので、お答えしません。

確かにそうですね。了解です。

@Hiroshiba
Copy link
Member

Hiroshiba commented Nov 4, 2021

今後 OSS として整備する予定があるという理解であっていますでしょうか?

そうです!

ただ先ほどもありましたとおり、非常に時間がかかります。
フロントエンド(エディター)バックエンド(エンジン)計算処理(コア)のどこでも大量のissueが溜まっています。
もしよければお力お借りしたいです。

ご質問が以上でしたら、issueのcloseをお願いします。

@tsukumijima
Copy link
Author

了解しました。確かに色々と Issue がたまってますね…
時間があれば何か手伝わせていただければと思いますので、その時はまたよろしくお願いいたします。ありがとうございました。

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

No branches or pull requests

2 participants