Closed kamakiri1192 closed 2 months ago
リポジトリGitHub: https://github.com/tuna2134/sbv2-api ライセンス: MITライセンス https://github.com/tuna2134/sbv2-api/blob/main/LICENSE
PythonのAIのTTS(読み上げ)機能のプロジェクトをもとにRustで書き直したプロジェクト
READMEをわかりやすくする事を目標にする。
一旦、環境を構築してつまづいたポイントなどをまとめる。
README通りに進めると、docker/run_cpu.sh から起動した際に起動できない。
envファイルの配置位置がシェルと同一ディレクトリにある想定になっているが、READMEに記載されていないため。
macのarm系cpuに対応していない。 ベースとなった元のプロジェクトではintel非対応・armのみ対応なので、起動時の回避策が記載されていると丁寧。
docker $ ./run_cpu.sh
Unable to find image 'ghcr.io/tuna2134/sbv2-api:cpu' locally
cpu: Pulling from tuna2134/sbv2-api
docker: no matching manifest for linux/arm64/v8 in the manifest list entries.
See 'docker run --help'.
一旦ChatGPTに聞いてみて、いくつか方法があるようです。
一旦時間があまりないので、使用したことのあるplatformで対応
platformで対応した。起動はしているようだ。 ただ、おそらくプロジェクト内のコード側のエラーでクラッシュしている。
sbv2-api $ docker run --platform linux/amd64 -it --rm -p 3001:3000 --name sbv2 \
-v ./models:/work/models --env-file .env \
ghcr.io/tuna2134/sbv2-api:cpu
Error: No such file or directory (os error 2)
追記: modelファイルを配置すれば解決した。
arm mac向けの回避策をreadmeに記載するPRはしても良さそう。 ただ根本的な対策ではないので、取り込まれるかは不明。
Error: No such file or directory (os error 2)
具体的に何のファイルやディレクトリが見つからなかったのか、コンソール上でも確認できると丁寧。
起動したが、動作しない。 envでログレベル変更できそうなので、debugに変更。
.env
BERT_MODEL_PATH=models/deberta.onnx
MODEL_PATH=models/tsukuyomi.sbv2
MODELS_PATH=models
TOKENIZER_PATH=models/tokenizer.json
ADDR=localhost:3001
#RUST_LOG=warn
RUST_LOG=debug
rustのログレベルの記事: https://qiita.com/fujitayy/items/590145c0f4b4e7d06de7 rustのログレベルは小文字表記らしい。
起動コマンド
sbv2-api $ docker run --platform linux/amd64 -it --rm -p 3001:3001 --name sbv2 \
-v ./models:/work/models --env-file .env \
ghcr.io/tuna2134/sbv2-api:cpu
起動はしているようだ。
[2024-09-21T05:54:23Z INFO sbv2_api] Loaded: tsukuyomi
[2024-09-21T05:54:23Z INFO sbv2_api] Listening on localhost:3001
dokcerのネットワーク系の問題の可能性がある 参考: https://qiita.com/wang_chang/items/b6ea4294215f1b34cc07
こちらもenvで書き換えできるようになっていたので、試しに変更してみる。
BERT_MODEL_PATH=models/deberta.onnx
MODEL_PATH=models/tsukuyomi.sbv2
MODELS_PATH=models
TOKENIZER_PATH=models/tokenizer.json
#ADDR=localhost:3001
ADDR=0.0.0.0:3001
#RUST_LOG=warn
RUST_LOG=debug
env変更前
sbv2-api $ curl http://localhost:3001
curl: (56) Recv failure: Connection reset by peer
sbv2-api $ curl http://0.0.0.0:3001
curl: (56) Recv failure: Connection reset by peer
env変更後
sbv2-api $ curl http://localhost:3001
Hello, World!%
sbv2-api $ curl http://0.0.0.0:3001
Hello, World!%
応答は返ってるようになった
モデル一覧APIとTTSでの音声ファイルの生成APIの動作確認済み。
sbv2-api $ curl http://localhost:3001/models
["tsukuyomi"]%
sbv2-api $ curl -X POST -H "Content-type: application/json" -d '{"text": "こんにちは","ident": "tsukuyomi"}' 'http://localhost:3001/synthesize' --output "output.wav"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 164k 100 164k 100 48 65687 18 0:00:02 0:00:02 --:--:-- 65696
動作確認までできたので、issueとPRに載せる文章を作成する。
README: https://github.com/tuna2134/sbv2-api
<details>
<summary>Apple Silicon搭載のMacの場合</summary>
docker run --platform linux/amd64 -it --rm -p 3000:3000 --name sbv2 \ -v ./models:/work/models --env-file .env \ ghcr.io/tuna2134/sbv2-api:cpu
- ネットワーク 0.0.0.0 の問題は表記方法を検討する
- おそらく、linux上などのdockerなど環境によっては動作する可能性があるため
サンプルのenvを変更する形だと問題が発生する可能性がある。macでしか検証できていないので、もう少し調査してみる。
ネットワーク 0.0.0.0 の問題
127.0.0.1
にすればネットワーク解決できるのではと提案があったので話があったので、試したが疎通できなかった。ネットワーク 0.0.0.0 の問題は表記方法を検討する
こんな感じ?
おつかれさまでした!
ワークショップの終了にともないissueを閉じますが、このまま作業メモとして使っても構いません :ok_hand:
ワークショップの感想を集めています!
ブログなどに書かれた際は、このページへリンクの追加をお願いします :pray:
またの参加をお待ちしています!
This is a work log of a "OSS Gate workshop". "OSS Gate workshop" is an activity to increase OSS developers. Here's been discussed in Japanese. Thanks.
作業ログ作成時の説明
以下のテンプレートを埋めてタイトルに設定します。埋め方例はスクロールすると見えてきます。
タイトル例↓:
OSS Gateワークショップ関連情報