tinbc tinbc

Bài 6: Khớp khẩu hình, dựng và xuất bản video

Code Dạo 5 phút đọc
Bài 6: Khớp khẩu hình, dựng và xuất bản video

Đã có video từng cảnh đạt chuẩn, giờ là ba bước cuối do Claude điều phối: khớp khẩu hình, dựng bằng ffmpeg, và kiểm duyệt rồi xuất bản. Bài này chỉ cách nhờ Claude chạy ba bước đó, và nhớ rằng mắt bạn vẫn là chốt chặn cuối cùng.

⚠️ Nhắc lại về RAM: khớp khẩu hình là bước ngốn RAM nhất (tới ~27 GB). Trước khi chạy, tắt mọi app nặng (đặc biệt Docker/OrbStack). Thiếu RAM khiến bước này chậm gấp 5–10 lần.

1. Khớp khẩu hình (LatentSync)

Với mỗi cảnh đang nói, Claude chạy LatentSync (bản MLX, có sẵn scripts/inference.py) vẽ lại miệng cho khớp đúng đoạn giọng của cảnh đó:

Với mỗi cảnh đang nói, chạy LatentSync inference.py: lấy video cảnh + đoạn giọng tương ứng,
xuất video khớp miệng. Cảnh im lặng giữ nguyên. Dùng bản 1.5 ở 256px, nhớ RAM đã trống.

Lệnh LatentSync đại khái (Claude chạy giúp):

PYTHONPATH=. python scripts/inference.py \
  --video_path shots/detail_1.mp4 \
  --audio_path build/tts/detail_1.wav \
  --video_out_path shots_lipsync/detail_1.mp4

Vì chạy ở 256px, miệng hơi mờ → Claude làm nét lại vùng miệng sau đó. Cách làm (Claude tự viết đoạn xử lý): khoanh vùng mặt/miệng → tăng nét có chọn lọc (unsharp) → ghép trở lại khung, chỉ tác động vùng miệng để không ảnh hưởng phần còn lại. Nhờ Claude kiểm: mọi cảnh nói đã xử lý, cảnh im lặng không bị đụng, số khung giữ nguyên, tìm được mặt ở hầu hết khung.

🛠 Nếu không cần cầu kỳ, có thể bỏ qua bước làm nét (chấp nhận miệng hơi mềm) — với gương mặt cỡ vừa trong khung thì thường vẫn ổn.

💡 Ba trạng thái một khung: gốc (miệng không khớp lời) → sau LatentSync (khớp nhưng hơi mờ vì 256px) → sau khi làm nét (khớp và rõ).

2. Dựng bằng ffmpeg

Nhờ Claude ghép và hoàn thiện bằng ffmpeg:

Ghép các cảnh theo trục thời gian thành một video. Chèn phụ đề trong vùng an toàn
(cách mép dưới một khoảng), lồng giọng, và chuẩn hoá âm lượng về -14 LUFS (loudnorm).
Kiểm: hình–tiếng dài bằng nhau, không khung đen/đứng, màu giữa các cảnh không chênh mạnh.
  • Ghép cảnh theo đúng trục thời gian.
  • Chèn phụ đề trong vùng an toàn (không bị viền/giao diện che).
  • Chuẩn âm lượng về -14 LUFS (bộ lọc loudnorm của ffmpeg).

🔧 ffmpeg là công cụ chuẩn cho các việc này; Claude viết sẵn câu lệnh (gồm drawtext/subtitles cho phụ đề và loudnorm cho âm lượng). Bạn không cần nhớ cú pháp.

3. Kiểm duyệt nội dung

Trước khi xuất, nhờ Claude lập danh sách mọi câu có con số, phần trăm, tên nhãn hàng/đối tác, hoặc từ ngữ hứa hẹn, kèm mốc giây. Với sản phẩm tài chính, bảo hiểm, y tế, người có thẩm quyền phải duyệt từng câu.

Claude kiểm lần cuối:

  • Mọi câu nhạy cảm đã có kết luận (duyệt hoặc đã sửa), lời không đổi sau khi duyệt.
  • Không còn cụm từ cấm trong lời, phụ đề, tiêu đề.
  • File xuất đúng thông số (độ phân giải theo khổ, H.264 + AAC 48 kHz).
  • Có ảnh bìa đúng tỉ lệ.

🔒 Bước này bắt buộc với nội dung quảng cáo có yếu tố nhạy cảm. Claude chỉ bắt được “có cụm từ cấm hay không”; đánh giá nội dung có đúng/được phép là việc của người có thẩm quyền.

4. Kết quả

File Nội dung
final.mp4 Bản cuối
export/<dự án>.mp4 Bản đăng: H.264, AAC 48 kHz, -14 LUFS (độ phân giải theo khổ — 1920×1080 cho 16:9; 9:16/1:1 đổi số tương ứng)
export/cover.jpg Ảnh bìa

👁 Xem hết một lượt trước khi đăng. Claude kiểm được thời lượng, âm lượng, khung đen, phụ đề — nhưng không thay được mắt người về biểu cảm, nhịp, cảm giác tổng thể.

5. Nếu cần sửa ở bước cuối

Nếu bạn làm lại một cảnh, chỉ cảnh đó cần khớp khẩu hình lại, rồi nhờ Claude dựng lại và kiểm duyệt lại — không phải làm lại từ đầu. Sửa ở đâu, chạy lại từ đó.

6. Thuật ngữ bài này

Thuật ngữ Nghĩa
LatentSync Model khớp khẩu hình (vẽ lại miệng theo giọng)
inference.py Script có sẵn của LatentSync bản MLX để chạy khớp khẩu hình
256px Độ phân giải LatentSync chạy — nhẹ máy, nên cần làm nét miệng
ffmpeg / loudnorm Công cụ dựng video / bộ lọc chuẩn hoá âm lượng
LUFS Đơn vị độ to cảm nhận; -14 LUFS là mức YouTube khuyến nghị
Vùng an toàn Vùng đặt phụ đề để không bị che

🧪 Tự kiểm tra

  1. Vì sao sau khớp khẩu hình cần làm nét vùng miệng?
  2. Claude dùng công cụ gì để ghép và chuẩn âm lượng, và về mức bao nhiêu?
  3. Claude kiểm được gì ở bản cuối, và việc gì chỉ mắt người làm được?

Tóm lại

Ba bước cuối biến các cảnh rời thành video sẵn đăng, đều do Claude điều phối: khớp khẩu hình (LatentSync inference.py, 256px rồi làm nét — nhớ tắt app nặng cho đủ RAM), dựng bằng ffmpeg (ghép theo trục thời gian, phụ đề vùng an toàn, -14 LUFS), và kiểm duyệt rồi xuất (soát câu nhạy cảm, kiểm cụm từ cấm, xuất file + ảnh bìa). Claude bắt mọi lỗi đo/nhìn được, nhưng bạn xem hết một lượt trước khi đăng. Bài cuối: nâng cao & mẹo thực chiến — khổ 9:16, ghép quay màn hình, thư viện hành động và lỗi hay gặp.

Chia sẻ:
0.0 ★ 0 lượt đánh giá

Câu hỏi thường gặp

Khớp khẩu hình (lip-sync) hoạt động thế nào trong quy trình này?

Sau khi có video từng cảnh và giọng đọc, Claude chạy LatentSync vẽ lại vùng miệng của người dẫn cho khớp với đúng đoạn giọng của cảnh đó. LatentSync bản MLX có sẵn script inference.py nhận video vào, âm thanh vào và xuất video khớp miệng. Vì chạy ở độ phân giải 256px cho nhẹ máy, vùng miệng hơi mờ, nên Claude làm nét lại vùng miệng sau đó. Đây là bước ngốn RAM nhất (tới ~27 GB), nên nhớ tắt app nặng trước khi chạy. Chỉ các cảnh đang nói mới cần khớp khẩu hình; cảnh im lặng giữ nguyên.

Bước dựng (bằng ffmpeg) làm những gì?

Claude dùng ffmpeg ghép các cảnh theo đúng trục thời gian, rồi xử lý cho sẵn đăng: chèn phụ đề trong vùng an toàn (không bị viền/giao diện nền tảng che), và chuẩn hoá âm lượng về -14 LUFS (mức YouTube khuyến nghị) bằng bộ lọc loudnorm. Nên nhờ Claude kiểm lại: hình và tiếng dài bằng nhau, không có khung đen hay đoạn đứng hình, màu giữa các cảnh không chênh lệch mạnh, phụ đề nằm trong vùng an toàn. ffmpeg là công cụ mã nguồn mở tiêu chuẩn cho các việc này, và Claude viết sẵn câu lệnh cho bạn.

Trước khi đăng cần kiểm duyệt nội dung gì?

Trước khi xuất bản, nhờ Claude lập danh sách mọi câu có con số, phần trăm, tên nhãn hàng/đối tác hoặc từ ngữ hứa hẹn, kèm mốc giây. Với sản phẩm tài chính, bảo hiểm, y tế, người có thẩm quyền phải duyệt từng câu này trước khi đăng. Claude cũng kiểm lại lần cuối: không còn cụm từ cấm trong lời/phụ đề/tiêu đề, file xuất đúng thông số (độ phân giải theo khổ, H.264 + AAC), và có ảnh bìa. Nhưng Claude chỉ kiểm được thứ đo/nhìn được — bạn vẫn phải xem hết bản cuối một lượt trước khi đăng, vì không công cụ nào thay được mắt người về cảm giác tổng thể.

Code Dạo

Code Dạo

Lang thang khắp thế giới code và AI, gặp gì hay ho là viết lại cho mọi người cùng nghịch. Với mình, lập trình nên vui như chơi game — và mình sẵn lòng chỉ bạn từng nước đi.

Bài liên quan

Bài 5: Tạo cảnh bằng FastWan và để Claude nhìn khung kiểm lỗi
AI

Bài 5: Tạo cảnh bằng FastWan và để Claude nhìn khung kiểm lỗi

Bài 5 series ‘Làm video AI trên Mac’: để Claude chạy FastWan tạo video từng cảnh từ ảnh neo, rồi tự ‘nhìn’ các khung hình để bắt lỗi (đồ vật biến mất, tay dị dạng, đổi người, màu trôi). Bài này chỉ cách Claude kiểm, khi nào thử lại seed, và những gì chỉ mắt bạn mới soát được.

Bài 4: Người dẫn, giọng đọc và animatic — để Claude dựng bản nháp
AI

Bài 4: Người dẫn, giọng đọc và animatic — để Claude dựng bản nháp

Bài 4 series ‘Làm video AI trên Mac’: để Claude tạo vài ảnh người dẫn cho bạn chọn (ảnh neo), chạy VieNeu-TTS đọc từng câu, đo nhịp bằng ffprobe, chia cảnh và dựng animatic — bản nháp cả phim với giọng + phụ đề thật — để bạn duyệt nhịp trước khi tốn giờ tạo video.

Bài 3: Mô tả ý muốn để Claude viết kịch bản video
AI

Bài 3: Mô tả ý muốn để Claude viết kịch bản video

Bài 3 series ‘Làm video AI trên Mac’: viết một brief ngắn (làm video gì, cho ai, cấm nói gì), để Claude dựng kịch bản có cấu trúc (đoạn, câu, hành động, phụ đề) và tự soát các lỗi tốn kém — thời lượng, phụ đề quá nhanh, từ ngữ cấm — trước khi tốn giờ máy tạo video.