PPTX → озвученный MP4: как устроен пайплайн, который не ждёт сам себя

Wait 5 sec.

Есть презентация и текст лекции — нужен MP4, где каждый слайд висит ровно столько, сколько звучит озвучка. Прототип собирается за час, а дальше начинается интересное: LibreOffice отдаёт один PNG на всю колоду вместо кадра на слайд, OCR превращает лекцию в чтение оглавления вслух, LLM возвращает N−1 чанк и ломает синхронизацию, а наивная схема «озвучить всё → закодировать всё» держит кодировщик в простое всю фазу TTS. Разбираю пайплайн по этапам: кеш слайдов по хешу содержимого, vision вместо распознавания текста, валидация контракта с моделью по счёту элементов, стриминг TTS→FFmpeg через as_completed и склейка через concat -c copy. С кодом, замерами и разделом про грабли — включая дедлок, который не падает, а просто висит. Читать далее