Кейсы
Автоматизация Web App Скрипт

AI-нарезка и склейка аудио: 5 версий из одного трека

Система сама режет и склеивает один трек в 3-5 MP3 без ручной сборки форматов.

Форматы без ручного монтажа
по одному вручную 3-5 MP3 за запуск
Полный прогон
40 мин 53 сек 5 мин 9 сек
Сборка по длительности
подгонка после монтажа 0:30-2:30 сразу

AI-нарезка и склейка аудио: 5 версий из одного трека

1 / 5
Обложка кейса: AI-нарезка и склейка аудио собирает пять MP3-версий из одного трека
AI-нарезка и склейка аудио: один трек превращается в 3-5 готовых MP3.
Срок 2 недели
Стек Python · NestJS · Next.js · librosa · pydub
Результат Было: каждый формат собирался вручную. Стало: 3-5 готовых MP3 за один запуск.
  • по одному вручную 3-5 MP3 за запуск
    Форматы без ручного монтажа
  • 40 мин 53 сек 5 мин 9 сек
    Полный прогон
  • подгонка после монтажа 0:30-2:30 сразу
    Сборка по длительности

Задача

Готовый трек нужно быстро превращать в несколько рабочих версий: короткий фрагмент на 30 секунд, минутный вариант, полторы минуты, две минуты и две с половиной. Вручную это превращается в повторяющийся монтаж под каждый формат: найти подходящий вход, не отрезать вокал посередине фразы, попасть в длительность и не получить резкий стык.

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

Название продукта, клиент и исходные треки не публикуются. В кейсе показываю задачу, инженерный маршрут и проверяемые результаты без ссылки на конкретный сервис.

Что сделал

Я подключил к существующему веб-приложению отдельный процессор нарезки и склейки музыки. Пользователь загружает аудиофайл, выбирает нужную длительность, допуск по времени и количество вариантов. Backend принимает файл, запускает обработку асинхронно, а frontend показывает статус и отдаёт ссылки на готовые MP3 только после завершения job.

Внутри процессора трек сначала разбирается на карту:

  • librosa считает tempo, beat grid, onset, энергию, chroma и спектральные признаки
  • numpy и scipy помогают сравнивать участки и искать похожие переходы
  • pydub, soundfile и FFmpeg отвечают за сборку, экспорт и нормализацию аудио
  • Demucs и faster-whisper используются для локальной карты вокала и границ фраз
  • отдельный route-layer перебирает варианты разреза, выхода, перехода и точной подгонки длительности

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

Почему это сложнее обычной обрезки

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

Поэтому в проекте появились отдельные проверки:

  • не начинать длинный вариант глубоко с середины трека без нормального музыкального входа
  • не считать непрерывное окно исходника готовой нарезкой, если оно не решает задачу монтажа
  • не отдавать переход, если локальная проверка стыка видит музыкально опасный скачок
  • сохранять естественный хвост трека, если маршрут специально ведёт к финальному outro
  • не расширять строгий допуск по длительности самовольно

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

Результат

Система собирает из одного исходного трека набор MP3-версий под типовые длительности: 0:30, 1:00, 1:30, 2:00, 2:30. В контрольном прогоне все пять режимов прошли машинную проверку стыков и были собраны как accepted output.

Отдельно ускорил обычный путь без тяжёлой Docker-диагностики. На проверочном полном треке последовательный прогон пяти режимов после подготовки локальных карт занял 5 минут 9 секунд вместо прежних 40 минут 53 секунды. Это не универсальное обещание по любому аудио, но хороший ориентир по тому, как изменился рабочий контур.

БылоСтало
Ручной монтаж каждого формата3-5 MP3-версий за один запуск
Стык выбирался слишком грубоРазрез ищется по битам, вокалу, энергии и маршрутам
Длительность подгонялась после монтажаФорматы 0:30-2:30 входят в маршрут сборки
Полный прогон занимал 40 минут 53 секундыБыстрый путь занял 5 минут 9 секунд на проверочном треке

Что можно повторить в похожем проекте

Такой подход подходит не только для музыки. Та же логика нужна в проектах, где исходный медиафайл надо быстро превращать в несколько вариантов: рекламные ролики, подкасты, заставки, аудиофрагменты для соцсетей, короткие версии длинного материала.

Если задача упирается не в “запустить ИИ”, а в нормальный выбор границ, маршрутов и проверок, её лучше решать как инженерный конвейер: сначала карта материала, потом генерация вариантов, потом фильтрация слабых результатов.


Нужен инструмент для аудио, видео или файлов, где руками уходит слишком много времени? Опишите задачу, соберу рабочий маршрут и покажу, где можно автоматизировать без потери качества.

Технологии Python NestJS Next.js librosa pydub soundfile Demucs faster-whisper FFmpeg
Итог

Было: каждый формат собирался вручную. Стало: 3-5 готовых MP3 за один запуск.

Следующий кейс

Телеграм-бот онбординга: обучение, тесты и отчёты

Бот ведёт сотрудника по учебному маршруту, показывает материалы и тесты, сохраняет прогресс и отдаёт руководителю статусы без ручного сопровождения.