惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
G
Google Developers Blog
V
V2EX
美团技术团队
H
Help Net Security
月光博客
月光博客
爱范儿
爱范儿
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
U
Unit 42
大猫的无限游戏
大猫的无限游戏
Recent Announcements
Recent Announcements
A
About on SuperTechFans
博客园 - Franky
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
MyScale Blog
MyScale Blog
B
Blog
雷峰网
雷峰网
Y
Y Combinator Blog
云风的 BLOG
云风的 BLOG
T
The Blog of Author Tim Ferriss

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Как я собрал бота, который превращает доклады в вертикаль...
Андрей Акимов · 2026-06-20 · via Все публикации подряд на Хабре

Простой

2 мин

0

Расскажу, как устроен пайплайн автонарезки выступлений с конференций (со спикером, субтитрами и его слайдами): где помогает LLM, почему субтитры рисуются через drawtext, а не .ass, и как собрать композицию «спикер + субтитры + слайд» одним проходом ffmpeg. С конкретным решением и граблями, на которые я сам наступил

Задача

Дано: запись доклада 40+ минут (спикер + презентация). И нужно из нее родить 5-6 самодостаточных вертикальных клипов с точными субтитрами и слайдами из презентации доклада.

Ограничения: работает на обычном CPU-сервере, себестоимость прогона — копейки.

Шаг 1. Речь в текст

Whisper (medium) даёт слова с таймкодами. На CPU узкое место – скорость, поэтому распознавание распараллелено по ядрам. Сегменты Whisper я склеиваю обратно в предложения — это критично для следующего шага: нарезать по словам нельзя, иначе мысль в видео будет рваться.

Шаг 2. Поиск хайлайтов через LLM

Самая нетривиальная часть. Наивный промпт формата «найди вирусные моменты» даёт мусор: модель стартует фрагмент с середины фразы или со связки «Но...».

Что помогло с этим справиться:

  • запрашивать диапазон по предложениям [from, to], а не по секундам;

  • жёсткий промпт с критериями (история / факт / мнение / юмор) и запретом стартовать со связок;

  • доснэппинг границ к реальным границам предложений уже после ответа модели;

  • ретраи на кривой JSON и 503 — модель периодически флапает, а второй запрос помогает добить.

Шаг 3. Слайды

Какой слайд показать в момент t — определяется по кадру через vision-модель (detail=high, иначе текст слайда не читается). Раньше пробовал image-hash — но, по итогу, отказался от этого, поскольку vision работает точнее.

Шаг 4. Композиция одним проходом ffmpeg

Для хорошего видео мне нужно четкое деление на три зоны: спикер, субтитры и слайды — и чтобы все это собиралось воедино за один проход.

По пути к решению наступил на несколько граблей:

  • субтитры — через drawtext, а не .ass. Контроль над переносом строк (по ширине карточки слайда), кеглем и таймингом получился чище;

  • наложение чанков субтитров. Лечится enable через полуинтервал [a, b) (gte + lt) вместо between — иначе на стыке два чанка рисуются одновременно;

  • динамическая раскладка. Когда спикера не видно (общий план, перебивки и тд), карточка спикера уезжает за кадр, слайд переезжает в центр — через плавную функцию P(t) и кросс-фейд субтитров, чтобы текст не наезжал на слайд.

Шаг 5. Центровка на спикере

В полноэкранном режиме активный спикер всегда должен быть по центру: с этим мне помог трекинг лиц + поиск того, у кого больше движения губ в окне ~1.2с (иначе при появлении мемов или картинок с людьми на слайдах бот путается), а также сегментация по склейкам монтажа.

Экономика

Себестоимость прогона – 15–25 ₽ (LLM), STT на своём сервере бесплатно. Это и сделало возможным отдавать первую нарезку бесплатно.

Итог

Получился Telegram-бот, куда можно просто закинуть файл или ссылку (YouTube/Drive/Яндекс) — а забрать готовые вертикалки.

Если интересно пощупать пайплайн на своём докладе — https://t.me/reels_akimov_bot. Буду рад фидбеку по качеству выбора хайлайтов, это самое сложное место.