Files
momentry_core/scripts/LIP_MOVEMENT_INTEGRATION_PLAN.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

8.5 KiB
Raw Permalink Blame History

嘴部動作整合計畫

更新日期: 2026-04-02


🎯 目標

整合 Pose 嘴部動作檢測 提升說話人識別準確度。


📊 技術方案

方案 1: MediaPipe Face Mesh推薦

技術: 3D 人臉關鍵點檢測

關鍵點:

  • 468 個人臉關鍵點
  • 包含嘴唇輪廓(點 0-10
  • 實時檢測30+ FPS

優點:

  • 輕量級
  • 實時處理
  • 準確度高
  • 開源免費

缺點:

  • ⚠️ 需要額外安裝
  • ⚠️ 僅檢測人臉

方案 2: OpenPose

技術: 全身姿態估計

關鍵點:

  • 全身 135 個關鍵點
  • 包含臉部 70 點
  • 包含手部細節

優點:

  • 全身檢測
  • 包含手勢
  • 準確度高

缺點:

  • 計算量大
  • 處理速度慢
  • 需要 GPU 加速

方案 3: Dlib + Face Landmarks

技術: 68 點人臉關鍵點

關鍵點:

  • 68 個人臉關鍵點
  • 嘴唇輪廓 20 點
  • 輕量級

優點:

  • 輕量
  • 快速
  • 成熟穩定

缺點:

  • ⚠️ 準確度較 MediaPipe 低
  • ⚠️ 關鍵點較少

🔧 整合流程

完整流程

影片 → ASR 轉錄 → 文字 + 時間戳
       ↓
    Face 檢測 → 人臉位置
       ↓
    Pose 檢測 → 嘴部動作
       ↓
    pyannote → 說話人分離
       ↓
    多模態整合 → 最終結果

整合邏輯

多模態驗證:

# 1. 語音檢測pyannote
speaker_audio = detect_speaker(audio)

# 2. 嘴部動作檢測MediaPipe
speaker_lip = detect_lip_movement(video)

# 3. 人臉檢測Face
speaker_face = detect_face(video)

# 4. 多模態整合
if speaker_audio and speaker_lip and speaker_face:
    confidence = 0.95  # 高置信度
elif speaker_audio and speaker_lip:
    confidence = 0.85  # 中置信度
elif speaker_audio:
    confidence = 0.65  # 低置信度

📈 預期效果

準確度提升

場景 當前準確度 整合後準確度 提升
雙人對話 90% 95-98% +5-8%
三人會議 85% 92-95% +7-10%
多人會議 80% 88-92% +8-12%
重疊說話 70% 80-85% +10-15%

處理速度影響

處理器 當前速度 整合後速度 影響
ASR 50s 50s 0%
Face 65s 65s 0%
Pose - +30s +30s
pyannote 180s 180s 0%
總計 ~300s ~330s +10%

💻 實作範例

MediaPipe 嘴部檢測

import cv2
import mediapipe as mp

# 初始化
mp_face_mesh = mp.solutions.face_mesh
face_mesh = mp_face_mesh.FaceMesh()

# 檢測嘴部動作
def detect_lip_movement(frame):
    results = face_mesh.process(frame)
    
    if results.multi_face_landmarks:
        for face_landmarks in results.multi_face_landmarks:
            # 提取嘴唇關鍵點
            # 上嘴唇:點 13, 14, 15, 16
            # 下嘴唇:點 17, 18, 19, 20
            
            # 計算嘴唇開合度
            upper_lip = face_landmarks.landmark[13]
            lower_lip = face_landmarks.landmark[17]
            
            lip_distance = abs(upper_lip.y - lower_lip.y)
            
            # 判斷是否在說話
            is_speaking = lip_distance > 0.05
            
            return is_speaking
    
    return False

多模態整合

from pyannote.audio import Pipeline
import mediapipe as mp
import cv2

class MultimodalSpeakerDetection:
    def __init__(self):
        # 語音分離
        self.audio_pipeline = Pipeline.from_pretrained(
            "pyannote/speaker-diarization-3.1"
        )
        
        # 嘴部檢測
        self.face_mesh = mp.solutions.face_mesh.FaceMesh()
    
    def detect(self, video_path, audio_path):
        # 1. 語音檢測
        audio_diarization = self.audio_pipeline(audio_path)
        
        # 2. 視覺檢測
        video_diarization = self.detect_lip_movement(video_path)
        
        # 3. 多模態整合
        integrated = self.integrate_modalities(
            audio_diarization,
            video_diarization
        )
        
        return integrated
    
    def detect_lip_movement(self, video_path):
        cap = cv2.VideoCapture(video_path)
        speaking_segments = []
        
        while cap.isOpened():
            ret, frame = cap.read()
            if not ret:
                break
            
            # 轉換顏色
            rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
            
            # 檢測
            results = self.face_mesh.process(rgb_frame)
            
            if results.multi_face_landmarks:
                # 計算嘴唇開合度
                # ... (詳細邏輯見上方)
                pass
        
        cap.release()
        return speaking_segments
    
    def integrate_modalities(self, audio, video):
        # 整合語音和視覺結果
        # 使用投票機制或機器學習模型
        pass

📋 實施步驟

階段 1: MediaPipe 安裝與測試

# 1. 安裝 MediaPipe
pip install mediapipe

# 2. 測試基本功能
python3 scripts/test_mediapipe_lip.py

# 3. 驗證準確度
python3 scripts/validate_lip_detection.py

預計時間: 1-2 小時


階段 2: Pose 處理器升級

# 升級現有 pose_processor.py
# 添加嘴部動作檢測功能

class PoseProcessor:
    def __init__(self):
        self.face_mesh = mp.solutions.face_mesh.FaceMesh()
    
    def process(self, video_path):
        # 現有人臉檢測
        # + 新增嘴部動作檢測
        pass

預計時間: 2-3 小時


階段 3: 多模態整合

# 創建整合處理器
class MultimodalIntegration:
    def __init__(self):
        self.asr_processor = ASRProcessor()
        self.face_processor = FaceProcessor()
        self.pose_processor = PoseProcessor()
        self.pyannote_pipeline = Pipeline.from_pretrained(...)
    
    def process(self, video_path):
        # 1. ASR 轉錄
        asr_result = self.asr_processor.process(video_path)
        
        # 2. 人臉檢測
        face_result = self.face_processor.process(video_path)
        
        # 3. 嘴部動作檢測
        pose_result = self.pose_processor.process(video_path)
        
        # 4. 說話人分離
        speaker_result = self.pyannote_pipeline(video_path)
        
        # 5. 多模態整合
        integrated_result = self.integrate_all(
            asr_result,
            face_result,
            pose_result,
            speaker_result
        )
        
        return integrated_result

預計時間: 3-4 小時


階段 4: 測試與優化

# 1. 短影片測試
python3 scripts/test_multimodal_short.py

# 2. 長影片測試
python3 scripts/test_multimodal_long.py

# 3. 準確度驗證
python3 scripts/validate_accuracy.py

# 4. 效能優化
python3 scripts/optimize_performance.py

預計時間: 4-6 小時


📊 資源需求

硬體需求

組件 最低需求 推薦配置
CPU 4 核心 8 核心
記憶體 8 GB 16 GB
GPU 可選 M4 Mac Mini
儲存 10 GB 50 GB

軟體依賴

# 核心依賴
mediapipe>=0.9.0
opencv-python>=4.5.0
pyannote.audio>=3.4.0
whisperx>=3.7.0

# 可選依賴
torch>=2.5.0
numpy>=1.20.0

預期成果

功能提升

  • 說話人識別準確度 +5-15%
  • 重疊說話檢測改善 +10-15%
  • 多人會議識別改善 +8-12%
  • 噪音環境魯棒性提升

效能指標

  • ⚠️ 處理時間增加 10%
  • ⚠️ 記憶體使用增加 2-4 GB
  • 準確度提升至 95%+

🎯 決策建議

立即實施如果:

  • 需要最高準確度95%+
  • 多人會議場景多
  • 重疊說話常見
  • 硬體資源充足

暫緩實施如果:

  • ⚠️ 當前準確度已足夠85-90%
  • ⚠️ 雙人對話為主
  • ⚠️ 硬體資源有限
  • ⚠️ 時間緊迫

📁 相關文件

scripts/
├── LIP_MOVEMENT_INTEGRATION_PLAN.md   # 本計畫
├── pose_processor.py                  # 現有 Pose 處理器
├── test_mediapipe_lip.py              # MediaPipe 測試(待創建)
├── multimodal_integration.py          # 多模態整合(待創建)
└── validate_accuracy.py               # 準確度驗證(待創建)

計畫完成日期: 2026-04-02
實施難度: (高)
預計時間: 10-15 小時
預期效果: 準確度 +5-15%