mirror of
https://github.com/calesthio/OpenMontage.git
synced 2026-08-05 15:20:40 +08:00
Implements the Jimeng/Volcengine part of issue #249, as agreed with @xucailiang (who is handling the Kling provider separately). Adds a first-class Jimeng video provider that calls the Volcengine visual API directly (visual.volcengineapi.com) using HMAC-SHA256 V4 request signing with IAM AK/SK credentials. This is the first provider in OpenMontage to use V4 signing (all others use Bearer token auth). API flow: POST CVSync2AsyncSubmitTask -> poll CVSync2AsyncGetResult -> download video_url. Features: - Text-to-video and image-to-video (Jimeng 3.0 Pro) - Configurable frame count (121=5s, 241=10s at 24fps) - Aspect ratio selection (16:9, 9:16, 1:1, etc.) - Seed for reproducibility - Full V4 HMAC-SHA256 request signing (not Bearer token) - Error handling with Jimeng code 10000 success convention - API key redaction in error messages (both env vars, no empty-string bug) Env vars: VOLC_ACCESSKEY + VOLC_SECRETKEY (IAM AK/SK pair). Idempotency keys include all output-affecting fields. Files: - tools/video/jimeng_video.py — new tool (V4 signing + submit/poll/download) - tests/contracts/test_jimeng_video.py — 46 contract tests (no AK/SK needed) - .env.example — VOLC_ACCESSKEY + VOLC_SECRETKEY - docs/PROVIDERS.md — Volcengine Jimeng provider section End-to-end tested with real Volcengine IAM credentials: generated a 1920x1088 H.264 5.04s video, ffprobe verified. Test results: python -m pytest tests/contracts/test_jimeng_video.py -q # 46 passed
52 lines
3.0 KiB
Plaintext
52 lines
3.0 KiB
Plaintext
# OpenMontage - Environment Variables
|
|
# Copy this to .env and fill in your keys
|
|
|
|
# --- Image + video gateway ---
|
|
FAL_KEY= # FLUX images, Google Veo video, Kling video, MiniMax video, Recraft images
|
|
# Get one at https://fal.ai/dashboard/keys
|
|
|
|
# --- Google (one key unlocks image gen + TTS) ---
|
|
GOOGLE_API_KEY= # Google Imagen images, Google Cloud TTS (700+ voices, 50+ languages)
|
|
# Get one at https://aistudio.google.com/apikey
|
|
# Alternative to the API key: service-account JSON auth.
|
|
# TTS uses Cloud Text-to-Speech; Imagen routes to Vertex AI.
|
|
GOOGLE_APPLICATION_CREDENTIALS= # path to a service-account JSON key file
|
|
GOOGLE_CLOUD_PROJECT= # GCP project id (required for Imagen via Vertex AI)
|
|
GOOGLE_CLOUD_LOCATION= # Vertex AI region, default us-central1
|
|
|
|
# --- Voice ---
|
|
ELEVENLABS_API_KEY= # TTS narration, music generation, sound effects
|
|
OPENAI_API_KEY= # OpenAI TTS fallback and GPT Image 2 image generation
|
|
XAI_API_KEY= # Grok image generation/editing and Grok video generation
|
|
DOUBAO_SPEECH_API_KEY= # Volcengine Doubao Speech TTS (new console API Key)
|
|
DOUBAO_SPEECH_VOICE_TYPE= # Default Doubao speaker/voice type, e.g. zh_female_vv_uranus_bigtts
|
|
# Piper local voices do not require env vars; install `piper-tts` via pip
|
|
|
|
# --- DashScope (Alibaba Cloud Bailian) ---
|
|
DASHSCOPE_API_KEY= # Qwen image gen (qwen-image-2.0-pro), TTS (qwen3-tts-flash), ASR with word timestamps (qwen3-asr-flash-filetrans)
|
|
# Get one at https://dashscope.aliyun.com/
|
|
|
|
# --- Music ---
|
|
SUNO_API_KEY= # Suno AI music generation (full songs, instrumentals, any genre)
|
|
|
|
# --- Video Generation ---
|
|
HEYGEN_API_KEY= # HeyGen API (VEO, Sora, Runway, Kling, Seedance via single key)
|
|
RUNWAY_API_KEY= # Runway Gen-4 (direct API, alternative to fal.ai routing)
|
|
VOLC_ACCESSKEY= # Volcengine Jimeng (即梦 AI) video generation via official API (HMAC-SHA256 V4 signing)
|
|
VOLC_SECRETKEY= # Secret Access Key paired with VOLC_ACCESSKEY. Get both at https://console.volcengine.com/iam/keymanage
|
|
VIDEO_GEN_LOCAL_ENABLED= # Set to "true" for local video gen (needs GPU + diffusers)
|
|
VIDEO_GEN_LOCAL_MODEL= # Local model: wan2.1-1.3b, wan2.1-14b, hunyuan-1.5, ltx2-local, cogvideo-5b
|
|
MODAL_LTX2_ENDPOINT_URL= # Modal self-hosted LTX-2 endpoint (optional)
|
|
|
|
# --- Stock Media ---
|
|
PEXELS_API_KEY= # Pexels stock footage/images (free)
|
|
PIXABAY_API_KEY= # Pixabay stock footage/images (free)
|
|
UNSPLASH_ACCESS_KEY= # Unsplash stock images (free developer key)
|
|
|
|
# --- Analysis ---
|
|
HF_TOKEN= # HuggingFace token — enables speaker diarization in transcriber
|
|
|
|
# --- Avatar (local installs) ---
|
|
# WAV2LIP_PATH= # Path to cloned Wav2Lip repo (for lip sync)
|
|
# SADTALKER_PATH= # Path to cloned SadTalker repo (for talking head avatars)
|