Text2Manim は、大規模言語モデル(LLM)と Manim を使用して、テキスト入力から自動的に数学的なアニメーションビデオを生成する API を提供するプロジェクトです。Docker Compose を使用して簡単にセットアップと実行が可能です。
主な特徴:
- テキスト入力から Manim コードを自動生成
- 生成された Manim コードからビデオアニメーションを作成
- RESTful API による簡単な統合
- Docker Compose による簡単なデプロイ
- Docker
- Docker Compose
- Git
-
リポジトリをクローンします:
git clone https://github.com/KinjiKawaguchi/text2manim.git cd text2manim -
環境変数を設定します:
-
api/.env.exampleをapi/.envにコピーし、必要な環境変数を設定します。cp api/.env.example api/.env設定項目:
API_KEYS: カンマ区切りの API キーリスト(例: "key1,key2")IP_WHITELIST: カンマ区切りの許可 IP アドレスリスト(例: "127.0.0.1,127.0.0.2")WORKER_ADDR: ワーカーサーバーアドレス(デフォルト: "localhost:50052")SERVER_PORT: API サーバーのポート(デフォルト: "50051")LOG_LEVEL: ログレベル(デフォルト: "INFO")DB_TYPE: データベースタイプ("postgres" または "memory")GRPC_SERVER_ADDRESS: gRPC サーバーアドレス(デフォルト: "localhost:50051")
postgres を選択した場合の追加設定:
DB_HOST: PostgreSQL データベースホストDB_PORT: PostgreSQL データベースポートDB_USER: PostgreSQL データベースユーザー名DB_PASSWORD: PostgreSQL データベースパスワードDB_NAME: PostgreSQL データベース名
注意:
- 実運用環境では、セキュリティのために API キーとデータベース認証情報を変更することを強く推奨します。
DB_TYPEを "memory" に設定した場合、PostgreSQL 関連の設定は無視されます。
-
worker/.env.exampleをworker/.envにコピーし、必要な環境変数を設定します。cp worker/.env.example worker/.env設定項目: a. サーバー設定:
WORKER_PORT: ワーカーのポート番号(デフォルト: 50052)
b. ストレージ設定:
STORAGE_TYPE: 使用するストレージタイプ(localまたはgcp)LOCAL_STORAGE_PATH: ローカルストレージを使用する場合の保存先パスGCP_BUCKET_NAME: GCP バケットの名前(GCP 使用時)USE_CLOUD_RUN_AUTH: Cloud Storageなどに対してCloud Run 認証を使用するかどうか(trueまたはfalse)GCP_CREDENTIALS_PATH: GCP サービスアカウントキーファイルのパス(GCP 使用時)
c. OpenAI 設定:
USE_OPENAI: OpenAI API の使用(trueまたはfalse)OPENAI_API_KEY: OpenAI の API キーOPENAI_MODEL: 使用する OpenAI モデル(例: "gpt-4")
d. Hugging Face Model 設定:
HF_MODEL_NAME: Hugging Face モデルの名前HF_TOKEN: Hugging Face の API トークンHF_CACHE_DIR: Hugging Face のキャッシュディレクトリ
e. モデル生成設定:
MODEL_NAME: 使用するモデルの名前MODEL_MAX_LENGTH: 生成するテキストの最大長MODEL_TEMPERATURE: 生成の温度MODEL_TOP_K: 生成時に考慮する上位 K 個のトークンMODEL_TOP_P: 生成時に考慮する累積確率の閾値
f. Manim 設定:
MANIM_QUALITY: Manim の出力品質(low_quality,medium_quality,high_quality)MANIM_OUTPUT_FILE: 出力ファイル名
g. ログ設定:
LOG_LEVEL: ログレベル(INFO, DEBUG, WARNING, ERROR など)LOG_FILE: ログファイルのパス
注意:
- OpenAI API 使用時は
USE_OPENAI=trueに設定し、OPENAI_API_KEYを必ず設定してください。 - GCP ストレージ使用時は
STORAGE_TYPE=gcpに設定し、関連設定を行ってください。 - 実運用環境では
ALLOWED_IPSを適切に設定してください。 - Cloud Run で本APIを展開する場合は
USE_CLOUD_RUN_AUTH=trueに設定し、使用するService AccountにCloud Storageへのアクセス権限を付与してください。
-
-
Docker イメージをビルドし、コンテナを起動します:
docker-compose up --build
これで、API サーバーとワーカーが起動し、サービスの利用準備が整います。
API を使用してビデオを生成するには、以下のように curl コマンドを使用して POST リクエストを送信します:
curl -X POST http://localhost:8080/v1/generations \
-H "Content-Type: application/json" \
-H "x-api-key: key1" \
-d '{"prompt": "比例と反比例について説明する動画を作成してください。"}'成功した場合、API は生成されたビデオの URL を含むレスポンスを返します。
開発者向けの情報はCONTRIBUTING.mdを参照してください。
-
Q: Docker コンテナが起動しない A: Docker 及び Docker Compose が正しくインストールされているか確認してください。また、ポートの競合がないか確認してください。
-
Q: API にアクセスできない A:
api/config/config.yamlのip_whitelist設定を確認し、クライアントの IP アドレスが許可されているか確認してください。 -
Q: ビデオ生成に失敗する A:
docker-compose logs workerコマンドでワーカーのログを確認し、エラーメッセージを確認してください。
問題が発生した場合は、GitHub Issuesをご確認ください。同様の問題がすでに報告されているかもしれません。新しい問題を見つけた場合は、イシューを作成してください。
プロジェクトへの貢献を歓迎します!詳細はCONTRIBUTING.mdを参照してください。
このプロジェクトは MIT ライセンスの下で公開されています。詳細はLICENSEファイルを参照してください。