Это третья статья о моём «аниме-заводе» — системе, которая автоматически превращает длинные эпизоды в YouTube Shorts.
- Как я построил «аниме-завод»: систему, которая сама превращает эпизоды в YouTube Shorts — про архитектуру пайплайна целиком;
- Как я сделал «умную камеру» для Shorts — про CV-часть, трекинг лиц, сглаживание и виртуального оператора.
Но самое сложное в этой системе — не архитектура и не камера. Самое сложное — выбрать правильный момент.
Потому что именно здесь ломаются большинство наивных AI-подходов. Если просто дать LLM транскрипт, она найдёт «интересные» реплики. Но они часто проваливаются в Shorts: работают только в контексте, визуально слабы или теряют смысл в вертикальном формате.
Я перестал думать о выборе момента как о задаче «угадай лучший кусок одним промптом». Вместо этого стал подходить к ней как к инженерной задаче — собирать устойчивое решение из нескольких слабых сигналов.
Где ломается наивный подход
На первый взгляд задача проста: подай транскрипт в LLM, попроси найти вирусный момент — и получи готовый клип. На практике такой подход быстро производит мусор:
- выбирает реплики, которые зависят от сюжета;
- путает громкий звук с сильным моментом;
- не замечает, что сцена визуально не удерживает внимание;
- не учитывает темп и ритм;
- переоценивает текст, который разваливается в видеоформате.
Проблема не в «тупой модели». Проблема — в постановке задачи. LLM не видит видео. Она видит только текст.
Что считается хорошим моментом в Shorts
Для длинного видео «хороший момент» — это просто событие. Для Shorts — это нечто большее. Он должен:
- дать hook в первые секунды;
- быть понятным без контекста;
- сохранять микроисторию;
- иметь сильный визуальный и эмоциональный сигнал;
- укладываться в ограничение по времени без ощущения обрывка.
Задача — не найти «интересные 10 секунд», а найти фрагмент, который выживет вне контекста.
Почему один сигнал почти всегда врёт
Я не полагаюсь на один источник данных. Вместо этого собираю признаки из нескольких слоёв видео.
Каждый сигнал — шумный и ненадёжный. Но вместе они снижают вероятность ошибки. Это классический инженерный подход: если один канал врёт, другой может его скорректировать.
Выбор момента — не «магия AI», а работа с несколькими источниками слабой уверенности, которые нужно аккуратно объединить.
Первый слой: речь как носитель смысла
Первый сигнал — сегментированный транскрипт с таймкодами. Он позволяет работать не с «простынёй текста», а с отдельными смысловыми блоками.
Что даёт этот слой:
- оценка плотности реплик;
- поиск вопросов, обещаний, эмоциональных маркеров;
- понимание, где сцена держится на речи, а где — на паузе или визуале;
- возможность собрать монтажный момент из нескольких сегментов.
Но текст — это не смысл. Одна и та же фраза может быть вирусной в одном контексте и пустой — в другом. Поэтому транскрипт — не истина, а просто один из входов в скоринг.
Именно поэтому «просто дать транскрипт модели» почти всегда недостаточно. Текст создаёт ложное ощущение силы, которое рушится в видео.
Второй слой: аудио как индикатор эмоциональной плотности
Аудиоанализ — не про громкость. Он помогает понять: есть ли в окне эмоциональная или ритмическая аномалия.
Система смотрит на:
- RMS — общая энергия;
- локальные пики;
- zero-crossing rate — грубый признак шумности;
- spectral centroid — индикатор «жёсткости» звука;
- разделение на сильные и мягкие события.
Затем аудио-события получают дополнительные признаки:
- длительность;
- peak и mean;
- sharpness;
- категория: strong / soft;
- hint для downstream-логики — например, это крик, шум или фон.
Это полезнее, чем просто «где громче». Потому что важен не максимум по децибелам, а характер всплеска: острый ли он, поддерживается ли текстом, не является ли фоном.
Многие пайплайны ошибаются, принимая громкость за драму. На деле это может быть просто музыкальный переход или шум без payoff.
Третий слой: визуал, лица и смена сцены
Визуальный слой — не про «понимание видео», а про прагматичные сигналы:
- есть ли лица в кадре;
- сколько их и какую долю кадра занимают;
- насколько стабилен фокус;
- как часто происходят резкие смены сцены;
- интенсивность движения.
Хороший Shorts должен быть визуально удерживаемым. Даже сильный текст проваливается, если в кадре нет лица, фокуса или композиции.
И наоборот: визуал может поднять слабый по тексту момент. Это критично для вертикального формата, где зрителю нужно быстро «за что-то зацепиться».
Четвёртый слой: темп, ритм и вязкость окна
Один из самых недооценённых сигналов — темп фрагмента.
Даже с хорошим текстом и визуалом клип может развалиться из-за вязкости: длинные паузы, провисающий ритм, потеря напряжения.
Я считаю признаки темпа:
- speech density;
- silence ratio;
- число резких визуальных переходов;
- грубую motion intensity.
Это не glamorous, но хорошо отсекает фрагменты, которые при ручном просмотре выглядят неплохо, но не держатся как самостоятельный Shorts.
Темп отвечает на вопрос: есть ли у окна внутренняя тяга вперёд или оно вязнет уже в середине.
Пятый слой: hooks как триггеры старта
В Shorts первые 1–2 секунды важнее всего. Если нет сильного входа, зритель просто свайпнет.
Я выделяю hook-like сегменты:
- вопросы;
- обещания;
- обрывы и прерывания;
- исповедальные или неловкие конструкции;
- эмоциональные реплики в начале.
Это не кликбейт. Это проверка: есть ли в начале напряжение, вопрос или конфликт.
Если hook’а нет, момент почти всегда проигрывает кандидату, у которого он есть. Платформа сначала тестирует право на внимание, а не глубину сцены.
Почему я не даю LLM принимать решение в одиночку
Когда слышат про GPT, представляют: «загрузили транскрипт — получили готовый клип». У меня — иначе.
К моменту, когда включается LLM, у системы уже есть плотный пакет признаков:
- транскрипт с таймкодами;
- сводка по аудиособытиям;
- сводка по лицам и визуальной активности;
- окна темпа;
- hooks;
- эмоциональные пики.
Модель получает не «сырой текст», а предобработанное описание сцены.
Зачем:
- снижается зависимость от одного промпта;
- уменьшается фантазирование на слабом материале;
- проще валидировать результат;
- лучше контролируются ограничения.
LLM у меня — не единственный мозг, а слой агрегации. Она не «угадывает момент», а принимает решение в узком, управляемом пространстве.
Почему эта задача оказалась сложнее, чем казалась
На демо — просто: взял транскрипт, нашёл эмоции, обрезал — и готово.
В production — иначе. Система должна стабильно отсеивать:
- ложные пики;
- пустые крики;
- слишком контекстные сцены;
- вязкие фрагменты;
- красивые, но неработающие куски.
И делать это батчами, без ручного просмотра.
Тогда задача перестаёт быть «AI-фичей» и превращается в инженерную работу с шумом, ограничениями и деградациями.
Как момент превращается в монтажную сборку
Хороший Shorts — это часто не непрерывный отрезок, а монтажная конструкция из нескольких сегментов.
Я рассматриваю момент как набор segments, а не один interval. Это даёт:
- усиление старта через сильный hook;
- удаление пауз без потери микроистории;
- построение контраста: спокойствие → хаос, пафос → унижение;
- более плотный темп без ощущения нарезки.
Но появляется и сложность: после склейки фрагменты должны выглядеть как единый момент, а не набор чужих кусков.
Это уже не детектирование, а отбор более высокого уровня. Я ищу не просто «громкое и быстрое», а цельную микроисторию.
Какие ограничения я считаю обязательными
В production остаются только ограничения:
- длительность;
- количество кандидатов на эпизод;
- отсев пустых, шумных и контекстных фрагментов;
- валидация результата;
- fallback, если модель вернула невалидную сборку.
Этот слой кажется скучным, но он отделяет прототип от рабочей системы.
Без рамок пайплайн быстро начинает производить красивые, но плохо воспроизводимые результаты.
Важнее не то, как система работает на удачном материале, а как ведёт себя на плохом и как часто пропускает мусор.
Почему простая эвристика всё ещё нужна рядом с LLM
Сейчас модно отдавать всё LLM. Но в реальной системе это риск.
Чем дороже downstream-компонент, тем важнее заранее отфильтровать мусор.
Поэтому я оставляю на уровне эвристик:
- пустые окна;
- отсутствие хука;
- слабая визуальная опора;
- аудио-шум без события;
- нарушение по длительности.
Это экономит вычисления и повышает качество.
Зрелая система — это иерархия дешёвых и дорогих решений. Каждый следующий слой получает более чистый сигнал.
Именно эта иерархия часто влияет на качество сильнее, чем «улучшенный промпт».
Где отбор моментов начинает врать
Есть зоны деградации:
- Контекстные сцены: работают внутри серии, но умирают вне её;
- Фальшивые пики: музыка, удары, шум — выглядят эмоционально, но пусты;
- Слабый старт: момент хороший, но без hook’а проигрывает по удержанию;
- Хаотичный визуал: сильная реплика теряется в плохо читаемом кадре;
- Переобучение на жанр: то, что работает в одном, вредит в другом.
Я не ищу «идеальный алгоритм». Я строю систему, которая реже ошибается и стабильнее находит сильные кандидаты.
Что оказалось самым важным
Главный вывод прост:
Хороший автоматический отбор моментов — это не поиск «самого интересного куска», а фильтрация плохих решений на нескольких слоях сразу.
Не транскрипт. Не аудио. Не CV. Не LLM. Рабочий результат появляется, когда система одновременно отвечает на несколько вопросов:
- есть ли сильный hook в первые секунды;
- есть ли эмоциональный или ритмический пик;
- удержится ли сцена визуально;
- не умрёт ли момент без контекста;
- не развалится ли он после склейки.
Выбор момента — не AI-фича, а инженерная задача на стыке signal processing, CV, эвристик и LLM orchestration.
Именно этот слой сильнее всего влияет на качество всего пайплайна. Даже идеальная виртуальная камера не спасёт слабый момент. А сильный момент — часто вытягивает весь Shorts.