Skip to content

tuna2134/sbv2-api

Repository files navigation

SBV2-API

注意:本バージョンはアルファ版です。

安定版を利用したい場合はこちらをご覧ください。

プログラミングに詳しくない方向け

こちらを参照してください。

コマンドやpythonの知識なしで簡単に使えるバージョンです。(できることはほぼ同じ)

このプロジェクトについて

このプロジェクトは Style-Bert-ViTS2 を ONNX 化したものを Rust で実行するのを目的としたライブラリです。

JP-Extra しか対応していません。(基本的に対応する予定もありません)

変換方法

こちらを参照してください。

Todo

  • REST API の実装
  • Rust ライブラリの実装
  • .sbv2フォーマットの開発
  • PyO3 を利用し、 Python から使えるようにする
  • 組み込み向けにCライブラリの作成
  • GPU 対応(CUDA)
  • GPU 対応(DirectML)
  • GPU 対応(CoreML)
  • WASM 変換(依存ライブラリの関係により現在は不可)
  • arm64のdockerサポート
  • MeCabを利用する

構造説明

  • sbv2_api - 推論用 REST API
  • sbv2_core - 推論コア部分
  • docker - docker ビルドスクリプト
  • convert - onnx, sbv2フォーマットへの変換スクリプト

プログラミングある程度できる人向けREST API起動方法

models をインストール

https://huggingface.co/googlefan/sbv2_onnx_models/tree/maintokenizer.json,debert.onnx,tsukuyomi.sbv2を models フォルダに配置

.env ファイルの作成

cp .env.sample .env

起動

CPUの場合は

docker run -it --rm -p 3000:3000 --name sbv2 \
-v ./models:/work/models --env-file .env \
ghcr.io/tuna2134/sbv2-api:cpu
Apple Silicon搭載のMac(M1以降)の場合 docker上で動作させる場合、.envのADDRをlocalhostから0.0.0.0に変更してください。
ADDR=0.0.0.0:3000

CPUの場合は

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

CUDAの場合は

docker run -it --rm -p 3000:3000 --name sbv2 \
-v ./models:/work/models --env-file .env \
--gpus all \
ghcr.io/tuna2134/sbv2-api:cuda

起動確認

curl -XPOST -H "Content-type: application/json" -d '{"text": "こんにちは","ident": "tsukuyomi"}' 'http://localhost:3000/synthesize' --output "output.wav"
curl http://localhost:3000/models

開発者向けガイド

Feature flags

sbv2_apisbv2_core共に

  • cuda featureでcuda
  • cuda_tf32 featureでcudaのtf32機能
  • tensorrt featureでbert部分のtensorrt利用
  • dynamic featureで手元のonnxruntime共有ライブラリを利用(ORT_DYLIB_PATH=./libonnxruntime.dllなどで指定)
  • directml featureでdirectmlの利用ができます。
  • coreml featureでcoremlの利用ができます。

環境変数

以下の環境変数はライブラリ側では適用されません。

ライブラリAPIについてはhttps://docs.rs/sbv2_coreを参照してください。

  • ADDR localhost:3000などのようにサーバー起動アドレスをコントロールできます。
  • MODELS_PATH sbv2モデルの存在するフォルダを指定できます。
  • RUST_LOG おなじみlog levelです。

謝辞

  • litagin02/Style-Bert-VITS2 - このコードの書くにあたり、ベースとなる部分を参考にさせていただきました。
  • Googlefan - 彼にモデルを ONNX ヘ変換および効率化をする方法を教わりました。