-
Notifications
You must be signed in to change notification settings - Fork 206
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
Linux用実行バイナリの動作検証 #106
Comments
想定環境ではありませんが、以下環境にて、おそらくSSL証明書周りが原因と思われるエラーで動きませんでした。
コマンド実行結果strings /lib64/libstdc++.so.6 | grep GLIBCXX_
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_DEBUG_MESSAGE_LENGTH
_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
GLIBCXX_3.4.21
GLIBCXX_3.4.9
_ZSt10adopt_lock@@GLIBCXX_3.4.11
GLIBCXX_3.4.10
GLIBCXX_3.4.16
GLIBCXX_3.4.1
_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
GLIBCXX_3.4.28
_ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4
GLIBCXX_3.4.25
_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
_ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
_ZSt10defer_lock@@GLIBCXX_3.4.11
_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4
GLIBCXX_3.4.24
_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
GLIBCXX_3.4.20
_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
GLIBCXX_3.4.12
_ZNSi6ignoreEv@@GLIBCXX_3.4.5
GLIBCXX_3.4.2
_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.15
_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
_ZNSs9_M_assignEPcmc@GLIBCXX_3.4
GLIBCXX_3.4.19
_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
GLIBCXX_3.4.27
_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4
_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
GLIBCXX_3.4.23
GLIBCXX_3.4.3
GLIBCXX_3.4.7
_ZNSi6ignoreEl@@GLIBCXX_3.4.5
_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
GLIBCXX_3.4.18
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
_ZSt15future_category@@GLIBCXX_3.4.14
_ZNSi6ignoreEl@GLIBCXX_3.4
GLIBCXX_3.4.29
_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
_ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4
_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4
_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
_ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4
_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4
_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
GLIBCXX_3.4.22
_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
_ZNSi6ignoreEv@GLIBCXX_3.4
_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
GLIBCXX_3.4.8
GLIBCXX_3.4.13
_ZSt11try_to_lock@@GLIBCXX_3.4.11
_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
GLIBCXX_3.4.17
GLIBCXX_3.4.4
_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
GLIBCXX_3.4.26
バイナリ側 $ ./run リクエスト側 $ text=`ruby -e "require('uri')" -e "puts URI.encode_www_form_component('Linux上でのバイナリ動作テスト')"`
$ curl -s \
-X POST \
"localhost:50021/audio_query?text=$text&speaker=1"\
> query.json
curl -s \
-H "Content-Type: application/json" \
-X POST \
-d @query.json \
localhost:50021/synthesis?speaker=1 \
> audio.wav
以下エラーで正常動作せず CPU $ ./run
INFO: Started server process [73672]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:50021 (Press CTRL+C to quit)
Downloading: "https://downloads.sourceforge.net/open-jtalk/open_jtalk_dic_utf_8-1.11.tar.gz"
INFO: 127.0.0.1:53516 - "POST /audio_query?text=Linux%E4%B8%8A%E3%81%A7%E3%81%AE%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E5%8B%95%E4%BD%9C%E3%83%86%E3%82%B9%E3%83%88&speaker=1 HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/ytjvdcm/Downloads/linux-cpu/uvicorn/protocols/http/h11_impl.py", line 373, in run_asgi
File "/home/ytjvdcm/Downloads/linux-cpu/uvicorn/middleware/proxy_headers.py", line 75, in __call__
File "/home/ytjvdcm/Downloads/linux-cpu/fastapi/applications.py", line 208, in __call__
File "/home/ytjvdcm/Downloads/linux-cpu/starlette/applications.py", line 112, in __call__
File "/home/ytjvdcm/Downloads/linux-cpu/starlette/middleware/errors.py", line 181, in __call__
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1091)>
INFO: 127.0.0.1:53518 - "POST /synthesis?speaker=1 HTTP/1.1" 422 Unprocessable Entity GPU $ ./run --use_gpu
INFO: Started server process [73891]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:50021 (Press CTRL+C to quit)
Downloading: "https://downloads.sourceforge.net/open-jtalk/open_jtalk_dic_utf_8-1.11.tar.gz"
INFO: 127.0.0.1:53524 - "POST /audio_query?text=Linux%E4%B8%8A%E3%81%A7%E3%81%AE%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E5%8B%95%E4%BD%9C%E3%83%86%E3%82%B9%E3%83%88&speaker=1 HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/ytjvdcm/Downloads/linux-nvidia/uvicorn/protocols/http/h11_impl.py", line 373, in run_asgi
File "/home/ytjvdcm/Downloads/linux-nvidia/uvicorn/middleware/proxy_headers.py", line 75, in __call__
File "/home/ytjvdcm/Downloads/linux-nvidia/fastapi/applications.py", line 208, in __call__
File "/home/ytjvdcm/Downloads/linux-nvidia/starlette/applications.py", line 112, in __call__
File "/home/ytjvdcm/Downloads/linux-nvidia/starlette/middleware/errors.py", line 181, in __call__
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1091)>
INFO: 127.0.0.1:53526 - "POST /synthesis?speaker=1 HTTP/1.1" 422 Unprocessable Entity |
これが想定している挙動ではないですね.. もしかすると、自動ビルドの方に問題があるかもと思いました。 #100 ( b8c1c78 ) で自動ビルド時の辞書ダウンロード機能を修正して、一応の対策を施しているので、もし、それ以前のバイナリを使っているようであれば、新しいバイナリを試してみてほしいです。 ちなみに、#100 の開発時にUbuntu 20.04で検証していた限りでは、同様の問題(SSL検証エラー)は起きませんでした。ArchLinux特有かもしれません。 Issue本文のダウンロード用URLは、以下の古いバイナリになっていましたが、新しいもの bb681d0 に置き換えておきました。 3eed8e0: https://github.com/Hiroshiba/voicevox_engine/actions/runs/1250933554 bb681d0 を手元でArchLinuxのDockerイメージ
|
新しいビルド(bb681d0)で同様に実行したところ、ArchLinux上でもCPUでは正常に動作したことを確認しました。 その後いろいろ確認してみたのですが、どうやら特定箇所のデコードに失敗するのではなく、毎回別の位置のデコード(具体的な規則性があるかは不明)に失敗するらしく、CPUもGPUも、何度も起動するとまれに起動することがあるようです。 |
utf-8エラーが出る問題は0.7.4で解決されたと思います。 |
Windows向けビルドにはlibsndfile( |
同梱していない理由は、bastibe/python-soundfileの配布パッケージにlibsndfileが含まれていなかったため、 #88, #95, #96 ではLinux上でのENGINE動作を優先して先送りしたというものです。 個人的には、少なくともVOICEVOXソフトウェアにはWindows版と同様にlibsndfileを同梱するのがいいように思います。 python-soundfileにおいて、Windowsと同じように共有ライブラリを読み込ませるには、詳しい仕様をよくわかっていないですが、いくらか検討が必要そうに思っていました。 検討事項
|
そうですね、おそらくSoundFileの実装面については十分対応可能だと思います。 依存ライブラリの点については、一旦すべて入れておいたほうが良さそうな気がします。 互換性の点については、x64/aarch64などで分けてビルド処理することになると思います。 ライセンスの点については、libsndfileや依存関係のライブラリの多くがLGPL v2.1になっています。 |
なるほどです! 2021/11/14 18:52 追記 後者のissue作りました! @HyodaKazuaki 依存パッケージは何か、どうやって調べたかなどをコメントいただけるととても助かります・・・!! |
そうですね、失念していました。
libsndfile1はlibc6に依存していますが、殆どの環境でlibc6は入っているかと思います。
Windows/Mac向けビルドに同梱されているlibsndfileの情報は、bastibe/libsndfile-binariesにあります。 |
詳細をありがとうございます! |
libsndfileの同梱については、別にIssueを立ててみました。 そろそろこのIssue(Discussion)はクローズしてもいいかなと思ったので、クローズしておきます。 このIssueは、十分な検証ができていなかった、自動ビルドされたLinux用バイナリの、主に開発者からの動作報告を募集するためのものでした。 今後は個別にIssueを立ててもらう形でいいかなと思いました。 検証など、ありがとうございます! CloseしてもSubscribeは残ると思うので、何かこちらに投稿されれば気づけるとは思います。 もしIssue化のハードルが高いかもというのがあれば、ソフトウェアの方にDiscussionを作るとかでしょうか... 当初の目的は達成されたと思うのでいったんクローズしましたが、Discussion Issueを作り直したりしてもいいのかもです。 |
ref: #96
ref: #95
VOICEVOX ENGINEのLinux用実行バイナリを試した方がおられましたら、動作環境を返信で教えてくださるとうれしいです!
Linux用実行バイナリは、 masterブランチにコミットが追加されたときに自動実行されるWorkflowの実行結果(Summary)から、zipファイルとしてダウンロードすることができます。
展開すると、実行バイナリ
run
を含むファイル群を取り出せます。zip内にディレクトリがないため、カレントディレクトリに直接中身が展開されるおそれがあるので注意してください(あらかじめディレクトリを作ってから、
unzip -d dest/ file.zip
)。GitHub Artifactの仕様(zipの仕様)により、
run
ファイルに実行権限が付与されていないため、手動でchmod +x run
する必要があります( actions/upload-artifact#38 )。想定動作環境における、ある程度の調査ができた段階で、このIssueはいったんCloseし、個別のIssueを立てる形に移行するのがいいかな、と思っています。
想定している動作環境
amd64/x86_64
、NVIDIA GPU)amd64/x86_64
)amd64/x86_64
)想定環境以外で動作した・動作しなかったときも、(動かした・動かそうとした方法を含めて)ぜひ教えてください!
詳細な動作環境
以下は、 #116 以前の動作環境になります。#116 以降については、未調査です。
/lib/x86_64-linux-gnu/libc.so.6
を実行/lib64/libc.so.6
を実行apt update && apt install binutils
、strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_
を実行yum install binutils
、strings /lib64/libstdc++.so.6 | grep GLIBCXX_
を実行知りたいこと
amd64/x86_64
cat /etc/os-release
cat /etc/os-release
cat /etc/os-release
cat /etc/os-release
/lib/x86_64-linux-gnu/libc.so.6
を実行/lib64/libc.so.6
を実行apt list --installed libstdc++*
を実行rpm -q libstdc++
を実行GLIBCXX_
対応バージョンapt update && apt install binutils
、strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_
を実行yum install binutils
、strings /lib64/libstdc++.so.6 | grep GLIBCXX_
を実行--use_gpu
)470.57.02
)11.4.1
)動かし方
libsndfile(VOICEVOX ENGINEのAPIが返す、wavファイルの作成に使用)をインストール。
CUDA/cuDNNをインストール(GPU実行の場合)。
実行バイナリをGithub ActionsのSummaryからダウンロード、展開、実行。
既知の問題
libcore側のwarning表示
The text was updated successfully, but these errors were encountered: