# Face + ASR 整合使用指南 ## 概述 由於 ASRX(說話人分離)目前存在 PyTorch 2.6 兼容性問題,我們使用 **Face 檢測 + ASR 轉錄** 的整合方案來識別「誰在什麼時候說話」。 --- ## 工作流程 ``` 影片 → Face 檢測 → face_output.json ↓ ├─→ 整合工具 → integrated_output.json ↓ 影片 → ASR 轉錄 → asr_output.json ``` --- ## 使用步驟 ### 步驟 1:Face 檢測 ```bash # 標準模式(推薦) python3 scripts/face_processor_optimized.py \ video.mp4 \ face_output.json \ --sample-interval 15 # 快速模式 python3 scripts/face_processor.py \ video.mp4 \ face_output.json # 精細模式 python3 scripts/face_processor_optimized.py \ video.mp4 \ face_output.json \ --sample-interval 10 ``` **參數說明**: - `--sample-interval 15`:每 15 幀檢測一次(推薦) - `--sample-interval 10`:每 10 幀檢測一次(更準確但更慢) - `--sample-interval 30`:每 30 幀檢測一次(快速) --- ### 步驟 2:ASR 轉錄 ```bash # 使用 small 模型(台灣腔調優化) python3 scripts/asr_processor_small.py \ video.mp4 \ asr_output.json ``` --- ### 步驟 3:整合結果 ```bash python3 scripts/integrate_face_asrx.py \ face_output.json \ asr_output.json \ integrated_output.json \ --threshold 1.0 ``` **參數說明**: - `--threshold 1.0`:時間戳配對閾值(秒) - 較小值(0.5):更嚴格,匹配較少 - 較大值(2.0):更寬鬆,匹配較多 - 推薦:1.0 秒 --- ## 輸出格式 ```json { "integration_time": "2026-04-02T00:00:00", "face_source": "face_output.json", "asrx_source": "asr_output.json", "time_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, "confidence": 0.8 }, "time_diff": 0.5 } ], "stats": { "total_segments": 83, "segments_with_face": 55, "segments_without_face": 28, "face_match_rate": 0.66, "total_faces_detected": 153 } } ``` --- ## 測試結果 ### ExaSAN 短影片(2.6 分鐘) | 指標 | 結果 | |------|------| | **ASR 片段** | 83 段 | | **Face 檢測** | 153 幀 | | **匹配成功** | 55 段 | | **匹配率** | 66.3% | | **無臉片段** | 28 段 | ### 分析 **66.3% 匹配率**: - ✅ 約 2/3 的說話內容可檢測到人臉 - ⚠️ 1/3 的內容無人臉(可能是: - 說話者不在鏡頭內 - 採樣間隔錯過 - 側面/低頭無法檢測 - 多人場景 --- ## 優化建議 ### 提高匹配率 **1. 減少採樣間隔** ```bash # 從 15 改為 10 python3 scripts/face_processor_optimized.py \ video.mp4 face_output.json \ --sample-interval 10 ``` **效果**:匹配率可提升至 70-75% **代價**:處理時間增加 50% **2. 增加時間閾值** ```bash python3 scripts/integrate_face_asrx.py \ face.json asr.json output.json \ --threshold 2.0 ``` **效果**:匹配率提升 **代價**:可能配對錯誤的說話者 **3. 使用多人臉追蹤**(未來功能) - 添加 face_id 追蹤 - 區分不同說話者 - 需要額外模型(MediaPipe 或 DeepFace) --- ## 使用場景 ### ✅ 適合場景 - **單人鏡頭**:採訪、演講 - **雙人對話**:訪談、會議 - **紀錄片**:旁白 + 訪談 - **教學影片**:講師講解 ### ⚠️ 限制場景 - **多人會議**:無法區分多個說話者 - **快速切換**:可能錯過說話者 - **側面/低頭**:臉檢測失敗 - **遠距離**:臉太小無法檢測 --- ## 批次處理 ```bash #!/bin/bash # batch_integrate.sh VIDEO_DIR="/path/to/videos" OUTPUT_DIR="/path/to/output" for video in "$VIDEO_DIR"/*.mp4; do basename=$(basename "$video" .mp4) echo "Processing $basename..." # Face detection python3 scripts/face_processor_optimized.py \ "$video" \ "$OUTPUT_DIR/${basename}_face.json" # ASR transcription python3 scripts/asr_processor_small.py \ "$video" \ "$OUTPUT_DIR/${basename}_asr.json" # Integration python3 scripts/integrate_face_asrx.py \ "$OUTPUT_DIR/${basename}_face.json" \ "$OUTPUT_DIR/${basename}_asr.json" \ "$OUTPUT_DIR/${basename}_integrated.json" echo "Done: $basename" done ``` --- ## 效能基準 ### 短影片(2-3 分鐘) | 步驟 | 時間 | 備註 | |------|------|------| | Face 檢測 | ~65s | 採樣間隔 15 | | ASR 轉錄 | ~50s | small 模型 | | 整合 | ~1s | 純 JSON 處理 | | **總計** | **~116s** | 可並行處理 | ### 長影片(114 分鐘) | 步驟 | 時間 | 備註 | |------|------|------| | Face 檢測 | ~25min | 採樣間隔 15 | | ASR 轉錄 | ~15min | small 模型 | | 整合 | ~5s | 純 JSON 處理 | | **總計** | **~40min** | 7.3x 實時 | --- ## 常見問題 ### Q1: 匹配率太低(<50%)怎麼辦? **A**: 1. 減少採樣間隔(15 → 10) 2. 增加時間閾值(1.0 → 2.0) 3. 檢查影片品質(光線、解析度) ### Q2: 為什麼沒有 speaker_id? **A**: 目前 ASRX(說話人分離)有 PyTorch 2.6 兼容性問題。 解決方案: - 使用 Face 檢測替代(目前方案) - 降級 PyTorch 到 2.5 - 等待 whisperx 更新 ### Q3: 如何區分多個說話者? **A**: 目前限制: - 無法自動區分多個說話者 - 需要人臉追蹤功能(未來) - 可手動標記或使用其他工具 --- ## 檔案清單 ``` scripts/ ├── face_processor.py # Face 檢測(原版) ├── face_processor_optimized.py # Face 檢測(優化版)⭐ ├── asr_processor_small.py # ASR 轉錄(small 模型)⭐ ├── integrate_face_asrx.py # 整合工具 ⭐ ├── FACE_ASR_INTEGRATION_GUIDE.md # 本文件 └── FACE_ASRX_CHALLENGE_REPORT.md # 技術挑戰報告 ``` --- ## 聯絡與反饋 如有問題或建議,請參考: - 整合工具說明:`python3 scripts/integrate_face_asrx.py --help` - Face 優化說明:`python3 scripts/face_processor_optimized.py --help` - ASR 使用指南:`scripts/ASR_USAGE.md`