Bước 11 — Tạo subtitle từ text gốc và map timing theo word timestamps ASR Mục tiêu: - Tạo subtitle cho toàn bộ video dựa trên nội dung gốc của story. - Dùng word timestamps từ bước 10 để gán thời gian hiển thị chính xác theo lời đọc thực tế. - Xuất subtitle master chuẩn để bước 12 kiểm tra và clamp safe gaps. Nguyên tắc bắt buộc: - Nội dung subtitle phải lấy từ scene.narration / narration.txt gốc. - Không dùng raw transcript ASR làm text subtitle hiển thị. - Nếu ASR nghe sai tên riêng, thuật ngữ lịch sử, địa danh hoặc wording, vẫn giữ nguyên text gốc và chỉ mượn timing từ ASR. Vì sao tách riêng: - Bước 10 chỉ tạo dữ liệu timing. - Bước 11 ghép text đúng với timing đúng. - Đây là chỗ khóa subtitle chuẩn trước khi chia part và render. Input: - script/scenes.json hoặc narration.txt gốc - subtitles/master_narration_asr_words.json - audio/master_narration_timeline.json nếu cần đối chiếu scene Cách làm: 1. Đọc toàn bộ text narration gốc theo đúng thứ tự scene. 2. Đọc file ASR output chứa transcript và word timestamps. 3. Normalize token chỉ để align, không normalize text hiển thị. 4. Map từng câu/cụm subtitle của text gốc sang chuỗi word timestamps gần tương ứng trong ASR. 5. Tạo cue subtitle với start, end, text. 6. Xuất subtitle master ra .srt và JSON mapping trung gian. 7. Kiểm tra sơ bộ: text không rỗng, thời gian không âm, thời gian tăng dần, không overlap cơ bản, câu đầu/cuối bám đúng audio thực tế. Output bắt buộc: - subtitles/master_subtitles.srt - subtitles/master_subtitles_mapping.json - logs/step11_subtitle_mapping_manifest.json Yêu cầu chất lượng: - Câu subtitle phải đọc tự nhiên, không cắt vô nghĩa. - Không bẻ tên riêng/học vị/niên hiệu sai chỗ nếu tránh được. - Ưu tiên chia câu theo nhịp nói, ý nghĩa và khả năng đọc. - Giữ trung thành với text gốc, không tự ý viết lại nội dung. Điều không được làm: - Không thay text gốc bằng transcript ASR. - Không bỏ qua mapping mà tự canh tay đại khái. - Không render khi subtitle master chưa được tạo và kiểm tra hợp lệ. Bước này phục vụ trực tiếp: - Bước 12: clamp subtitle safe gaps và validate no overlap - Bước 13: tách subtitle theo từng part sync-safe - Bước 14: render từng part với exact part subtitle Checklist: 11. Create master subtitles from original scene.narration text mapped onto ASR word timestamps; use ASR only for timing, not display wording.