auto-save 2026-05-14 10:25 (~13)

This commit is contained in:
2026-05-14 10:25:50 +08:00
parent be1ae80750
commit 7bfbb38289
13 changed files with 118 additions and 52 deletions

View File

@@ -14,11 +14,11 @@ VIDEO_MODEL_VEO3=veo-3.1-fast
# 音频文案改写 + MiniMax 配音
AUDIO_REWRITE_MODEL=gemini-2.5-pro
AUDIO_PRODUCT_BRIEF=SKG 智能按摩产品,主打日常肩颈、腰背、眼部、膝盖或足部放松;广告表达要高级、干净、可信,不做医疗疗效承诺。
AUDIO_PRODUCT_BRIEF="SKG 智能按摩产品,主打日常肩颈、腰背、眼部、膝盖或足部放松;广告表达要高级、干净、可信,不做医疗疗效承诺。"
MINIMAX_API_KEY=
MINIMAX_TTS_BASE_URL=https://api.minimax.io
MINIMAX_TTS_MODEL=speech-2.8-turbo
MINIMAX_TTS_VOICE_ID=Chinese (Mandarin)_Reliable_Executive
MINIMAX_TTS_VOICE_ID="Chinese (Mandarin)_Reliable_Executive"
# Poe 视频 API优先用于 Seedance / Kling / Veo
POE_API_BASE_URL=https://api.poe.com/v1
@@ -41,6 +41,7 @@ VIDEO_CONTENT_PATH=/videos/{id}/content
VIDEO_DURATION_FIELD=seconds
# 工作目录
KEYFRAME_COUNT=12
JOBS_DIR=./jobs
# CORS

View File

@@ -9,7 +9,7 @@ cd api
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # 按需填 GEMINI_API_KEY
cp .env.example .env # 按需填 LLM_API_KEY / MINIMAX_API_KEY
uvicorn main:app --port 4291 --reload
```

View File

@@ -104,7 +104,7 @@ JobStatus = Literal[
"transcribing", "transcribed", "failed",
]
KEYFRAME_COUNT = int(os.getenv("KEYFRAME_COUNT", "5"))
KEYFRAME_COUNT = int(os.getenv("KEYFRAME_COUNT", "12"))
FrameExtractTarget = Literal["transparent_human", "balanced", "subject", "transition", "expression", "motion"]
FrameExtractMode = Literal["replace", "append"]
FrameExtractQuality = Literal["auto", "fast", "accurate", "ultra"]
@@ -1327,7 +1327,7 @@ async def analyze_queue_worker() -> None:
ANALYZE_WORKER_RUNNING = False
# ---------- Gemini ASR + 翻译 ----------
# ---------- 音频转写 + 翻译 + SKG 改写 + MiniMax 配音 ----------
def _transcribe_sync(wav: Path) -> list[dict]:
"""whisper-1 verbose_json → segments[{start, end, text}]"""
@@ -1347,7 +1347,7 @@ def _transcribe_sync(wav: Path) -> list[dict]:
def _translate_sync(segments: list[dict]) -> list[str]:
"""gemini-2.5-flash 批量翻译为中文,按段返回"""
"""批量翻译为中文,按段返回"""
payload = [{"i": i, "en": s.get("text", "").strip()} for i, s in enumerate(segments)]
prompt = (
"你是字幕翻译。把下列英文字幕段翻译为简体中文,保持原意、口语化、自然流畅。"