- ในเกม เมื่อตัวละครพูดเป็นภาษาต่างประเทศ จะมีซับไตเติลเป็นภาษาต้นฉบับแสดงเหนือศีรษะของตัวละครก่อน แล้วจึงแปลเป็นภาษาของผู้เล่นแบบเรียลไทม์
- แนะนำโค้ดที่ลองสร้างฟีเจอร์นี้ด้วย DL การรู้จำเสียง/การรู้จำใบหน้า ฯลฯ พร้อมอธิบายรายละเอียดของวิธีการทำงาน
- OpenAI Whisper + NVDIA NeMo + DeepL + RetinaFace + DeepFace + Sckikit-learn + Gradio + Modal + PIL/OpenCV + ffpmpeg
วิธีการทำงาน
- ดาวน์โหลดวิดีโอ YouTube ด้วย
yt-dlp
- แยกวิดีโอ/เสียงด้วย
ffmpeg
- สำหรับเสียง
- ป้อนเข้า Whisper เพื่อสร้าง transcripts แล้วแปลด้วย DeepL
- ป้อนเข้า NeMo เพื่อดึง Speaker ID (ผู้พูด)
- จับคู่ทั้งสองอย่างตาม timestamp เพื่อสร้างข้อความที่มี Speaker ID กำกับ
- สำหรับวิดีโอ
- ใช้ MTCNN/RetinaFace เพื่อดึงตำแหน่งใบหน้า และเร่งความเร็วด้วยการประมวลผลขนานบน Modal
- ใช้ DeepFace/Scikit-Learn เพื่อดึง embedding ของแต่ละใบหน้าและกำหนด unique ID
- จับคู่ FaceID กับ SpeakerID ด้วย Jaccard Index
- ใช้ metadata ของเฟรมที่สร้างขึ้นมาเพื่อใส่ annotation ลงบนเฟรมด้วย PIL/OpenCV
- สร้างวิดีโอด้วย ffmpeg Writer
1 ความคิดเห็น
การออกแบบวิธีการทำงานนี่เจ๋งมากเลย