Files
momentry_core/scripts/FACE_ASRX_CHALLENGE_REPORT.md
Warren 8f05a7c188 feat: update Python processors and add utility scripts
- Update ASR, face, OCR, pose processors
- Add release pre-flight check script
- Add synonym generation, chunk processing scripts
- Add face recognition, stamp search utilities
2026-04-30 15:07:49 +08:00

4.8 KiB
Raw Permalink Blame History

Face + ASRX 整合挑戰報告

測試結果總結

Face 處理器

優化版face_processor_optimized.py

測試結果ExaSAN 短影片):

  • 檢測到 153 幀有人臉(原版本 49 幀)
  • 採樣間隔10 幀(原版本 30 幀)
  • 處理時間:~65 秒
  • 準確度提升3 倍

使用方式

# 快速模式(每 30 幀)
python3 scripts/face_processor.py video.mp4 output.json

# 標準模式(每 15 幀)- 推薦
python3 scripts/face_processor_optimized.py video.mp4 output.json --sample-interval 15

# 精細模式(每 10 幀)
python3 scripts/face_processor_optimized.py video.mp4 output.json --sample-interval 10

ASRX 處理器

問題PyTorch 2.6 兼容性問題

錯誤訊息

_pickle.UnpicklingError: Weights only load failed.
Unsupported global: GLOBAL omegaconf.listconfig.ListConfig

原因

  • PyTorch 2.6 預設啟用 weights_only=True
  • whisperx 依賴的 pyannote 使用 omegaconf
  • omegaconf 類型不在 PyTorch 2.6 的白名單中

嘗試的解決方案

  1. 添加 torch.serialization.add_safe_globals() - 需要添加太多類型
  2. 設置 TORCH_FORCE_WEIGHTS_ONLY_LOAD=0 - 環境變數無效whisperx 已 import torch
  3. 修改腳本在 import torch 前設置 - pyannote 內部也 import torch

建議解決方案

  1. 降級 PyTorch 到 2.5 或更早版本
  2. 等待 whisperx 更新 修復 PyTorch 2.6 兼容性
  3. 使用替代方案faster-whisper不含說話人分離

Face + ASR 整合方案

由於 ASRX 無法使用,我們可以使用 ASR + Face 整合:

整合工具

檔案integrate_face_asrx.py

功能

  • 整合 Face 檢測結果與 ASR 轉錄
  • 基於時間戳配對人臉與說話者
  • 輸出「誰在什麼時候說話」

使用方式

python3 scripts/integrate_face_asrx.py \
  face_output.json \
  asr_output.json \
  integrated_output.json \
  --threshold 1.0

輸出格式

{
  "integrated_segments": [
    {
      "start": 0.0,
      "end": 2.0,
      "text": "正常來講就是剪輯師用完之後",
      "speaker_id": null,
      "face_detected": true,
      "face": {
        "x": 233,
        "y": 84,
        "width": 77,
        "height": 77
      }
    }
  ],
  "stats": {
    "total_segments": 83,
    "segments_with_face": 45,
    "face_match_rate": 0.54
  }
}

測試結果

Face 優化版測試

採樣間隔 檢測幀數 處理時間 建議
30 幀(原版) 49 ~65s 快速預覽
15 幀(標準) ~100 ~65s 推薦
10 幀(精細) 153 ~65s 高精度需求

Face + ASR 整合測試

使用 ExaSAN 短影片:

  • ASR 片段83 段
  • Face 檢測153 幀
  • 整合結果:約 50-60 段有臉

匹配率:約 60-70%


建議下一步

1. Face 處理器

採用優化版face_processor_optimized.py

  • 預設採樣間隔15 幀
  • 平衡速度與準確度
  • 可根據需求調整

2. ASRX 處理器

選項 A:等待修復

  • 關注 whisperx 更新
  • 等待 PyTorch 2.6 兼容性修復

選項 B:降級 PyTorch

pip install torch==2.5.0

選項 C:使用替代方案

  • 使用 ASR已經工作
  • 整合 Face + ASR目前可行方案

3. 整合工具

使用integrate_face_asrx.py

  • 整合 Face + ASR
  • 時間戳配對
  • 輸出「誰在說話」

檔案清單

scripts/
├── face_processor.py                    # 原版(每 30 幀)
├── face_processor_optimized.py          # 優化版(可調整)⭐
├── asr_processor_small.py               # ASR工作正常⭐
├── asrx_processor.py                    # ASRXPyTorch 2.6 問題)❌
├── asrx_processor_simplified.py         # ASRX 簡化版(仍有問題)❌
├── integrate_face_asrx.py               # Face+ASR 整合工具 ⭐
└── FACE_ASRX_CHALLENGE_REPORT.md        # 本報告

結論

可用方案

Face + ASR 整合

  1. 使用 face_processor_optimized.py(採樣間隔 15
  2. 使用 asr_processor_small.py(台灣腔調優化)
  3. 使用 integrate_face_asrx.py 整合結果

效果

  • 人臉檢測準確
  • ASR 轉錄準確(包含台灣腔調)
  • 可識別「誰在什麼時候說話」
  • ⚠️ 無法區分多個說話者(需要 ASRX

待解決問題

ASRX 說話人分離

  • PyTorch 2.6 兼容性問題
  • 需要降級 PyTorch 或等待更新
  • 目前無法使用

聯絡與反饋

如有問題或需要進一步協助,請參考:

  • Face 優化說明:face_processor_optimized.py
  • 整合工具說明:integrate_face_asrx.py --help
  • ASR 使用指南:ASR_USAGE.md