- BrainTools - https://www.braintools.ru -
Недавно я писал про edge-навигацию на руль [1] — OLED, 2ГИС, велосипед/мотоцикл. Побочный эффект DIY: накопилось много не особо связаных между собой видосов. Медийку развивать мне хотелось, а времени на монтаж и разбор видео особо не было (на самом деле идея и базовая реализация появились давно, но сейчас это рпигодилось на практике).
Так появился NeuroCut — локальный AI-ассистент для rough cut. Кидаешь видео (или несколько), пишешь brief текстом, получаешь план монтажа и экспорт:
FCP7 XML для Premiere Pro / DaVinci Resolve;
ZIP с готовыми MP4-клипами (удобно для мобильных редакторов);
склеенный render «под ключ»;
субтитры на готовом клипе;
CEP-плагин для Premiere, который кладёт клипы на таймлайн без повторной загрузки медиа.
UI на старте: пять типов задач — от транскрипта и субтитров до NLE XML и turnkey MP4.
Репозиторий: https://github.com/jdmarshall95/neurocut [2]
Я не пытался полностью заменить монтажера. Цель снять с человека первый проход.
Типичный сценарий:
Есть запись интервью / вебинара / обзора / мультикамерный набор клипов.
Есть текстовое задание: «оставь только ответы про продукт, убери воду, добавь маркеры на ключевые мысли».
Нужен rough cut, который можно открыть в Premiere и уже руками довести.
Обьективно автоматический монтаж пока еще слабоват, примерно на уровне готовых шаблонов из кэпкат. Но задачи по типу “вырежи молчаливые паузы” он решает вполне сносно.
Пример: sintel-trailer.mp [3]4 + «Cut a 30 second cinematic teaser…». Режим Turnkey clip.
Схема простая по шагам и довольно жёсткая по контрактам данных.

В UI живой progress с теми же стадиями:
Старт: FFmpeg вытаскивает audio.wav.
Дальше STT (Whisper / Silero / GigaAM) с таймкодами.
После scene detection LLM собирает edit plan. На скрине видно модель: gemini-3.1-flash-lite.
Финал для turnkey-режима: склейка MP4 по плану.
Стек:
Backend: Python 3.11, FastAPI;
Frontend: React + Vite;
Медиа: FFmpeg / ffprobe;
STT: Whisper (faster-whisper), Silero, GigaAM;
LLM: Google Gemini (по умолчанию), DeepSeek как fallback;
Экспорт в NLE: Jinja2-шаблон Final Cut Pro 7 XML.
С деплоем я пока не заморачивался, пдготовил просто докер компоузы.
Я не прячу «магию» за одной кнопкой Download. После джоба можно раскрыть Edit plan — клипы с таймкодами и коротким rationale, маркеры, транскрипт, который в перспективе можно итеративно дорабатыввать.
На этом прогоне: 4 клипа, 2 маркера, ~52 с, mode speech
Первый соблазн был очевидный: скормить proxy в Gemini и попросить «нарежь красиво». На практике это быстро упёрлось в три вещи:
Квоты и деньги. Загрузка видео в модель на каждом джобе сразу уничтожит лимит
Text-out модели. Многие актуальные Flash-модели удобнее и дешевле именно как text-in / text-out.
Поэтому дефолт такой (ADR в репо):
USE_VIDEO_FOR_LLM=false;
на каждом джобе всё равно гоняется дешёвый scene proxy (низкий FPS, низкое разрешение);
в LLM уходит: brief + транскрипт с таймкодами + границы планов (+ manifest источников);
Итог: быстрее, дешевле по квотам и заметно честнее по стыкам. «Умный» отбор по резкости/стабильности — отдельный будущий слой эвристик.
Монтаж от транскрипта ломается на неожиданном месте: когда речи почти нет.
Если исходник без аудиодорожки или с неразборчивой речью, пайплайн не должен падать:
проверяется наличие аудио через ffprobe;
пустой/редкий транскрипт — валидный кейс;
включается visual mode на основе scene timeline.
Для русской речи есть first-class offline-путь через GigaAM (sherpa-onnx + модели в gigaam-ru/). В режиме STT_ENGINE=auto для ru система предпочтёт GigaAM, если модели скачаны. Whisper остаётся универсальным fallback.
Отдельно полезный функционал content-addressable cache транскриптов: ключ от хэша аудио + длительности. Повторная заливка того же файла не гоняет STT заново.
Нюанс: у GigaAM/Silero нет нормальных word-level timestamps. Для karaoke-субтитров интервал сегмента приходится делить пропорционально между словами. Работает, но это компромисс.
Я сознательно выбрал Final Cut Pro 7 XML:
его стабильно едят Premiere и Resolve;
его реально шаблонизировать через Jinja2;
Не обошлось без нюансов: абсолютные pathurl ломаются, когда XML уезжает на другую машину. Решение — portable paths вида file://./filename и упаковка медиа рядом с XML.
Для тех, кому XML вообще не нужен, есть ветка экспорта клипов: FFmpeg режет куски по edit_plan.json, кладёт manifest.json и собирает ZIP. В UI это отдельные карточки задач — NLE edit и Mobile clips на первом скрине.
Web-UI удобен для демо и self-host, но монтажёр часто уже сидит в Premiere с медиа на диске. Поэтому начал реализовывать именно плагин, но он сейчас в зачаточной стадии.
Минимум:
git clone https://github.com/jdmarshall95/neurocut.git
cd neurocut
cp .env.example .env
# прописать GEMINI_API_KEY=...
docker compose up --build
Для CUDA Whisper:
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up --build
Дальше в UI выбираешь задачу (транскрипт / XML / клипы / render / субтитры), загружаешь видео, пишешь brief, забираешь артефакт — как на скринах выше.
Уже работает как MVP/OSS-ассистент:
полный pipeline rough cut;
multi-file источники на одной шкале времени;
несколько STT-движков;
экспорт XML / clips / render / subtitles;
health, Prometheus metrics, CI, Docker resource limits.
В roadmap осознанно лежат вещи, которых пока нет:
более широкие экспорты (EDL / FCPXML / Resolve markers);
Premiere CEP plugin;
эвристики «стабильный / резкий» кадр;
публичный demo dataset и regression fixtures;
CapCut export
Это early open-source (API около 0.1.0), не SaaS.
Если сделаете issue/PR — буду рад. Особенно полезны:
реальные brief’ы и фейлы таймкодов;
предложения по export-форматам;
опыт [4] с GigaAM vs Whisper;
Про «навигационную» ветку — скоро отдельный текст: в первой части [1] я писал, что официального публичного API у 2ГИС нет, но оказалось ручка у приложения все таки есть – нашёлся Dashboard API и HUD перестал жить на парсинге шторки.
Репо ещё раз: https://github.com/jdmarshall95/neurocut [5]
Спасибо, что дочитали. Пишите в комментарии, какие на ваш взгляд функции было бы еще интересно увидеть.
Автор: hiraetari
Источник [6]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/36971
URLs in this post:
[1] edge-навигацию на руль: https://habr.com/ru/articles/1089972/
[2] https://github.com/jdmarshall95/neurocut: https://github.com/jdmarshall95/neurocut%EF%BF%BC
[3] sintel-trailer.mp: http://sintel-trailer.mp
[4] опыт: http://www.braintools.ru/article/6952
[5] https://github.com/jdmarshall95/neurocut: https://github.com/jdmarshall95/neurocut
[6] Источник: https://habr.com/ru/articles/1094414/?utm_campaign=1094414&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.