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
This commit is contained in:
Warren
2026-04-30 15:07:49 +08:00
parent f4697396e4
commit 8f05a7c188
256 changed files with 60505 additions and 299 deletions

View File

@@ -0,0 +1,160 @@
# 嘴部動作檢測結果 - 完整版
**測試日期**: 2026-04-02
**測試影片**: ExaSAN PCIe series (2 分 39 秒)
---
## 📊 OpenCV 檢測結果
### 統計數據
| 指標 | 數值 |
|------|------|
| **總處理幀數** | 351 幀 (每 10 幀採樣) |
| **檢測到人臉** | 144 幀 (41.0%) |
| **說話幀數** | 131 幀 (37.3%) |
| **平均嘴部開合度** | 0.1546 |
| **最大嘴部開合度** | 0.55 |
### 檢測結果範例
```
幀數 時間 (s) 人臉 開合度 說話 人臉位置
--------------------------------------------------------------------------------
9 0.409 ❌ 0.0000 ❌ -
19 0.864 ✅ 0.4150 ✅ (243, 84) 83x83
29 1.318 ✅ 0.3850 ✅ (232, 83) 77x77
39 1.773 ✅ 0.2950 ❌ (252, 107) 59x59
49 2.227 ✅ 0.3100 ✅ (248, 108) 62x62
```
### 嘴部開合度分佈
```
0.0 (無臉) 207 幀 ( 59.0%) █████████████████████████████
0.0-0.2 (閉合) 0 幀 ( 0.0%)
0.2-0.3 (微張) 8 幀 ( 2.3%) █
0.3-0.4 (正常) 68 幀 ( 19.4%) █████████
0.4-0.5 (張大) 61 幀 ( 17.4%) ████████
>0.5 (很大) 7 幀 ( 2.0%) █
```
---
## 🎬 檢測方法說明
### OpenCV + Face Detection
**原理**:
1. 使用 Haar Cascade 檢測人臉
2. 從人臉邊框估算嘴部位置
3. 假設人臉越寬,嘴部可能越張開
**開合度計算**:
```python
openness = 人臉寬度 / 200.0 # 假設 200px 為最大張開
speaking = openness > 0.3 # 閾值 0.3
```
**優點**:
- ✅ 快速351 幀僅需幾秒)
- ✅ 不需要額外模型
- ✅ 能識別說話狀態
**缺點**:
- ⚠️ 只能估算嘴部開合度
- ⚠️ 無法檢測精確嘴部輪廓
- ⚠️ 準確度依賴人臉檢測
---
## 📁 輸出檔案
**位置**: `/tmp/lip_cv_test.json`
**結構**:
```json
{
"frame_count": 3512,
"fps": 22.0,
"processed_frames": 351,
"sample_interval": 10,
"frames": [
{
"frame": 19,
"timestamp": 0.864,
"face_detected": true,
"lip_openness": 0.415,
"lip_width": 83.0,
"lip_height": 8.0,
"is_speaking": true,
"face_bbox": {"x": 243, "y": 84, "width": 83, "height": 83}
}
],
"stats": {
"speaking_frames": 131,
"speaking_rate": 0.3732,
"avg_openness": 0.1546,
"max_openness": 0.55,
"frames_with_face": 144
}
}
```
---
## 🔍 與 Face + ASR 整合比較
| 方法 | 說話幀數 | 準確度 | 速度 | 資訊量 |
|------|---------|--------|------|--------|
| **OpenCV Lip** | 131 幀 | 估算 | 快 | 嘴部開合度 |
| **Face + ASR** | 55 段 | 66% | 最快 | 語音 + 人臉 |
**建議**:
- OpenCV Lip: 適合需要嘴部開合度資訊
- Face + ASR: 適合需要語音內容 + 說話者識別
---
## 📋 使用方式
### OpenCV 嘴部檢測
```bash
python3 scripts/lip_processor_cv.py \
video.mp4 \
output.json \
--sample-interval 10
```
### Face + ASR 整合
```bash
python3 scripts/integrate_face_asrx.py \
face.json \
asr.json \
integrated.json
```
---
## ✅ 結論
**OpenCV 嘴部檢測**:
- ✅ 快速檢測嘴部開合度
- ✅ 能識別說話狀態37.3% 說話率)
- ⚠️ 只能估算,非精確檢測
**Face + ASR 整合**(推薦):
- ✅ 已整合測試
- ✅ 66.3% 匹配率
- ✅ 包含語音內容
**建議**: 根據需求選擇
- 需要嘴部開合度 → OpenCV Lip
- 需要說話者識別 → Face + ASR
---
**報告完成**: 2026-04-02