diff --git a/.memory/worklog.json b/.memory/worklog.json index d6f6c78..ab86aeb 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -1,11 +1,5 @@ { "entries": [ - { - "files_changed": 1, - "message": "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-14 18:05 (~1)", - "ts": "2026-05-14T10:06:15Z", - "type": "session-heartbeat" - }, { "files_changed": 1, "message": "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-14 18:05 (~1)", @@ -3269,6 +3263,13 @@ "message": "auto-save 2026-05-17 13:18 (~5)", "hash": "f2742df", "files_changed": 5 + }, + { + "ts": "2026-05-17T13:23:56+08:00", + "type": "commit", + "message": "auto-save 2026-05-17 13:23 (~2)", + "hash": "6d684e0", + "files_changed": 2 } ] } diff --git a/RULES.md b/RULES.md index 2cbf422..5079e58 100644 --- a/RULES.md +++ b/RULES.md @@ -53,6 +53,7 @@ - `LLM_BASE_URL` / `LLM_API_KEY`:OpenAI 兼容网关,用于 ASR、翻译、文案改写、图像等模型调用 - `ASR_MODEL`:OpenAI Audio Transcriptions 音频转写模型,默认 `whisper-1` - `ASR_FALLBACK_MODEL`:当当前网关没有 `/audio/transcriptions` 时,用 Gemini 多模态 chat 直接识别 wav,默认 `gemini-2.5-flash` +- `ASR_TIMEOUT_SECONDS`:ASR 单次请求超时,默认 45 秒;`whisper-1` 超时后自动走 `ASR_FALLBACK_MODEL`,避免第一步长时间停在转录中 - `TRANSLATE_MODEL`:字幕翻译模型,默认 `gemini-2.5-flash` - `REWRITE_MODEL`:通用改写/分镜描述模型,默认 `gemini-2.5-pro` - `AUDIO_REWRITE_MODEL`:后续音频口播改写模型,默认跟随 `REWRITE_MODEL`;当前第一步不默认调用口播改写,只保留原文案和声音分析 diff --git a/docs/source-analysis.html b/docs/source-analysis.html index a2ca7e9..35380ca 100644 --- a/docs/source-analysis.html +++ b/docs/source-analysis.html @@ -818,7 +818,7 @@ SubjectAsset {
POST /jobs/uploaduploadJobDELETE /jobs/{id}deleteJobjobs/<id> 目录移除整个 job,包括源视频、关键帧、元素提取图和生成视频。POST /jobs/{id}/analyze?frames=&target=&mode=&quality=analyzeJobframes=12;target 支持透明骨架人、综合、清晰主体、转场变化、表情瞬间、动作峰值。当前第一步主流程不自动调用该接口。POST /jobs/{id}/transcribetriggerTranscribesource.mp4 提取 audio.wav 并回填 source_audio_url;随后用 ASR 提取原始文案,翻译成中文,写入 audio_script.source_text、source_zh 和逐句 transcript。再用 ASR_FALLBACK_MODEL 多模态音频分析讲话人、语速节奏、停顿、背景音乐/环境声/音效,写入 speaker_profile、rhythm_profile、background_audio_profile。当前第一步不默认生成 SKG 新口播和 MiniMax 配音。POST /jobs/{id}/transcribetriggerTranscribesource.mp4 提取 audio.wav 并回填 source_audio_url;随后用 ASR 提取原始文案,翻译成中文,写入 audio_script.source_text、source_zh 和逐句 transcript。ASR_TIMEOUT_SECONDS 默认 45 秒,whisper-1 超时或异常后自动 fallback 到 ASR_FALLBACK_MODEL。再用 ASR_FALLBACK_MODEL 多模态音频分析讲话人、语速节奏、停顿、背景音乐/环境声/音效,写入 speaker_profile、rhythm_profile、background_audio_profile。当前第一步不默认生成 SKG 新口播和 MiniMax 配音。GET /jobs/{id}/audio.wavsourceAudioUrltranscript 和 audio_script 展示文字与声音分析结果。GET /jobs/{id}/audio-script.mp3apiAssetUrl(job.audio_script.voice_url)POST /jobs/{id}/frames?t=addManualFrame问题:粘贴 TK 链接后视频已经下载到 source.mp4,但本机 Homebrew ffprobe/ffmpeg 因缺少 libx265.215.dylib 直接崩溃,后端误显示为“下载失败”。同时用户不再需要底部音频展示。
改动:api/main.py 新增媒体二进制选择逻辑,先验证 PATH 里的 ffmpeg/ffprobe 是否可执行,失败时回退到本机静态 ffmpeg;没有可用 ffprobe 时用 ffmpeg -i 解析时长和分辨率。下载阶段把“元数据解析失败”和“下载失败”区分开。web/app/page.tsx 不再导入和渲染 AudioStrip,AdRecreationBoard 移除“打开音轨”按钮。
改动:api/main.py 新增媒体二进制选择逻辑,先验证 PATH 里的 ffmpeg/ffprobe 是否可执行,失败时回退到本机静态 ffmpeg;没有可用 ffprobe 时用 ffmpeg -i 解析时长和分辨率。下载阶段把“元数据解析失败”和“下载失败”区分开。ASR 请求增加 ASR_TIMEOUT_SECONDS,whisper-1 长时间无响应时自动走 fallback。web/app/page.tsx 不再导入和渲染 AudioStrip,AdRecreationBoard 移除“打开音轨”按钮。
影响:api/main.py、web/app/page.tsx、web/components/ad-recreation-board.tsx、RULES.md、docs/source-analysis.html。后续音频预览如果需要恢复,应先明确是否仍放在右侧工作表,而不是默认恢复底部浮层。