auto-save 2026-05-14 11:36 (~3)
This commit is contained in:
@@ -1,19 +1,5 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "029b895",
|
||||
"message": "auto-save 2026-05-13 03:30 (~1)",
|
||||
"ts": "2026-05-13T03:30:47+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "fc9b90c",
|
||||
"message": "auto-save 2026-05-13 03:36 (~1)",
|
||||
"ts": "2026-05-13T03:36:41+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "7158468",
|
||||
@@ -3301,6 +3287,19 @@
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-14 11:21 (~7)",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-14T11:30:57+08:00",
|
||||
"type": "commit",
|
||||
"message": "auto-save 2026-05-14 11:30 (~1)",
|
||||
"hash": "6f72994",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-14T03:36:10Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 3 项未提交变更 · 最近提交:auto-save 2026-05-14 11:30 (~1)",
|
||||
"files_changed": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
12
api/main.py
12
api/main.py
@@ -1104,10 +1104,11 @@ def _score_transparent_human_frame(img_path: Path) -> TransparentHumanFrameScore
|
||||
max_tokens=1200,
|
||||
)
|
||||
raw = (resp.choices[0].message.content or "").strip()
|
||||
if raw.startswith("```"):
|
||||
import re as _re
|
||||
match = _re.search(r"\{[\s\S]*\}", raw)
|
||||
raw = match.group(0) if match else raw
|
||||
if not raw:
|
||||
raw = (getattr(resp.choices[0].message, "reasoning_content", "") or "").strip()
|
||||
import re as _re
|
||||
match = _re.search(r"\{[\s\S]*\}", raw)
|
||||
raw = match.group(0) if match else raw
|
||||
data = json.loads(raw)
|
||||
except Exception as e:
|
||||
return TransparentHumanFrameScore(qualified=False, reject_reason=f"AI 评分失败:{e}")
|
||||
@@ -1611,7 +1612,8 @@ def _build_audio_script_sync(job_id: str, segments: list[TranscriptSegment]) ->
|
||||
voice_url = _minimax_tts_sync(job_id, rewritten)
|
||||
except Exception as e:
|
||||
voice_error = str(e)
|
||||
errors = ";".join(x for x in [rewrite_error, voice_error] if x)
|
||||
# 改写失败时已有本地 SKG 模板兜底,不把它标成用户可见错误;配音失败才需要提示。
|
||||
errors = voice_error
|
||||
return AudioScript(
|
||||
status="completed",
|
||||
source_text=source_text,
|
||||
|
||||
@@ -950,7 +950,7 @@ SubjectAsset {
|
||||
</header>
|
||||
<div class="body">
|
||||
<p><strong>问题:</strong>等待抽帧完成后自动启动音频,不符合“先把声音文案拿出来审核”的工作流;用户需要在音频卡片上直接触发。</p>
|
||||
<p><strong>改动:</strong>移除前端抽帧完成后的自动转写逻辑;<code>AudioNode</code> 保留并固定显示“提取音频 / 重新提取音频”按钮。后端 <code>/transcribe</code> 不再要求 <code>frames_extracted</code>,视频就绪后可直接从 <code>source.mp4</code> 拆出 <code>audio.wav</code>,并继续 ASR、翻译、SKG 改写和 MiniMax 配音;抽帧中触发时不抢主状态,而是用 <code>audio_script.status</code> 表示音频处理中。当当前网关的 <code>whisper-1</code> audio endpoint 返回 404 时,会 fallback 到 Gemini 多模态音频识别。</p>
|
||||
<p><strong>改动:</strong>移除前端抽帧完成后的自动转写逻辑;<code>AudioNode</code> 保留并固定显示“提取音频 / 重新提取音频”按钮。后端 <code>/transcribe</code> 不再要求 <code>frames_extracted</code>,视频就绪后可直接从 <code>source.mp4</code> 拆出 <code>audio.wav</code>,并继续 ASR、翻译、SKG 改写和 MiniMax 配音;抽帧中触发时不抢主状态,而是用 <code>audio_script.status</code> 表示音频处理中。当当前网关的 <code>whisper-1</code> audio endpoint 返回 404 时,会 fallback 到 Gemini 多模态音频识别;改写模型解析失败时使用本地 SKG 口播模板兜底,不再把可用文案标成前端错误。</p>
|
||||
<p><strong>影响:</strong><code>web/app/page.tsx</code>、<code>web/components/nodes/index.tsx</code>、<code>api/main.py</code>、<code>docs/source-analysis.html</code>。</p>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
Reference in New Issue
Block a user