Bước 13 — Chia render thành các part sync-safe và tạo exact part audio + exact part subtitle cho từng part Mục tiêu: - Chia toàn bộ video thành các part ổn định để render an toàn. - Mỗi part có audio riêng đúng phần đó và subtitle riêng đúng phần đó. - Khóa cấu trúc part để bước 14 render sync-safe, không dùng slicing mơ hồ từ full master lúc render. Vì sao bắt buộc: - Video dài render một lèo khó kiểm soát sync, QA và sửa cục bộ. - Render theo từng part giúp kiểm soát duration, compensation khi smooth/crossfade, và rerender đúng phần lỗi. - Anti-regression: mỗi part phải đi với exact part audio + exact part subtitle rebased về 00:00. Input: - audio/master_narration.wav - subtitles/master_subtitles_clamped.srt - audio/master_narration_timeline.json - audio/master_audio_probe.json - danh sách scene/images để biết scene nào thuộc part nào Cách làm: 1. Chọn điểm cắt ổn định theo timeline, ưu tiên ranh giới scene/beat lớn và tránh cắt giữa câu subtitle. 2. Tạo parts/part_ranges.json gồm part_id, start_sec, end_sec, duration_sec, scene_ids, audio_path, subtitle_path. 3. Cắt audio/master_narration.wav thành parts/audio/part_XX.wav đúng range. 4. Tách subtitle master thành parts/subtitles/part_XX.srt, chỉ giữ cue thuộc range và rebase timecode về 00:00. 5. Validate từng part: audio duration khớp range, subtitle không overlap, cue nằm trong duration part, part không rỗng bất thường. Output bắt buộc: - parts/part_ranges.json - parts/audio/part_01.wav, part_02.wav, ... - parts/subtitles/part_01.srt, part_02.srt, ... - parts/part_validation.json - logs/step13_split_parts_manifest.json Nội dung tối thiểu của part_ranges.json: { "part_id": "part_01", "start_sec": 0.0, "end_sec": 130.15, "duration_sec": 130.15, "scene_ids": ["scene_001"], "audio_path": "parts/audio/part_01.wav", "subtitle_path": "parts/subtitles/part_01.srt" } Quy tắc quan trọng: - Không render part bằng full master audio + offset nếu chưa QA xác minh path đó an toàn. - Không giữ subtitle part ở timecode tuyệt đối của whole video; phải rebase về 00:00. - Không dùng slice_audio:true / offset equivalent làm mặc định khi exact part audio + exact part subtitle đã là chuẩn an toàn hơn. - Nếu part split cắt gãy subtitle/ý nghĩa nặng, chỉnh lại ranh giới part trước render. Bước này phục vụ trực tiếp: - Bước 14: render từng part bằng exact part audio + exact part subtitle - Bước 15: concat các part render sync-safe - bước compensation nếu dùng smooth/crossfade Checklist: 13. Split the master narration/video into sync-safe parts and create exact part_XX.wav plus rebased exact part_XX.srt for each part before rendering.