# M4 回覆

**回覆者**：M4  
**日期**：2026-05-07  

---

## ASR JSON 樣本（YouTube 25fps 測試）

```json
{
  "language": "",
  "segments": [
    {"start": 197.04, "end": 199.04, "text": "You", "scene_number": 25, "language": "en"},
    {"start": 212.64,  "end": 213.64,  "text": "Olá!", "scene_number": 32, "language": "pt"}
  ],
  "total_segments": 457
}
```

格式為 `segments[]`（非舊的 `frames[]`），有 `scene_number` 但 **無 `id`**。

## Rule 1 0 chunks 根因確認

`dev.pre_chunks` 中 `processor_type='asr'` 的資料為 **0 筆**。因為 ASR 原始執行失敗（寫入 `.err`），pre_chunks 從未被插入。即使事後複製 `.err→.json` + 標記 completed，**pre_chunks 已遺失**。

這解釋了：
- Rule 1 抓不到 ASR segments → 0 sentence chunks
- 但 Qdrant `momentry_dev_rule1` 有 1,630 points（來自其他 processor 的 vectorization）

## ASR_TIMEOUT 分析

YouTube 版 113min @ 25fps，ASR 約跑了 **30 分鐘後 timeout**（`.json.tmp → .json.err`）。但實際已有 457 segments 產出（完整涵蓋前 ~30min 內容）。建議：

- **不增加 timeout**（30min 已經太久）
- 改為 **streaming 模式**：ASR 每完成一個 segment 就 flush，不要等到全部完成才寫入
- 或 **分段處理**：將長片切成 N 段分別 ASR，再合併

## face_detections = 0

M4 YouTube 測試也有一樣問題（6,188 face detections face.json，0 face_detections）。M5 Charade Job 251 也遇到。估計是 scene-cut reset 邏輯配合稀疏取樣（sample_interval=30 @ 25fps）導致。

## 待確認

M4 即將測試 face_tracker 對短片的行為（較小 interval），確認是否為取樣密度問題。
