Skip to content

Bormotoon/Podcast-Reels-Forge

Repository files navigation

🎙️ Podcast Reels Forge

Автоматическое создание Reels/Shorts из подкастов (локально)

Python 3.10+ License: MIT

English | Русский


📌 Оглавление


Что делает проект

Podcast Reels Forge — это мощный CLI-инструмент для автоматического извлечения виральных моментов (Reels, Shorts, TikTok) из длинных подкастов или интервью. Он берет на себя всё — от распознавания речи до финального монтажа.

Основные этапы работы:

  1. Распознавание речи (Whisper): Преобразование аудио/видео в текст с точными таймкодами.
  2. Диаризация (Опционально): Определение разных спикеров в записи.
  3. AI Анализ (LLM): Поиск самых интересных и виральных моментов, генерация цепляющих заголовков.
  4. Обработка видео (FFmpeg): Нарезка клипов, вертикальный кроп (9:16) и центрирование по лицам.

Подробное руководство: docs/USER_GUIDE.md


Ключевые особенности

  • Batch-обработка: Просто положите несколько видео в input/, и Forge обработает их по очереди.
  • Мульти-модельность: Поддержка локальных моделей через Ollama (qwen3, deepseek, gemma) и облачных провайдеров (OpenAI, Anthropic, Gemini).
  • Smart Face Crop: Автоматическое обнаружение лиц для центрирования кадра при вертикальной нарезке.
  • Аппаратное ускорение: Использование CUDA для Whisper и NVENC для быстрого рендеринга видео.
  • Ollama Watchdog: Контроль отзывчивости модели и автоматический перезапуск зависших генераций.
  • Гибкие типы клипов: Настройка количества и длительности для Stories, Reels и Highlights отдельно.

Быстрый старт

Требования

  • Python 3.10+
  • FFmpeg (должен быть в PATH)
  • Ollama (для работы с локальными LLM)
  • NVIDIA GPU (крайне рекомендуется для производительности)

Установка

  1. Клонируйте репозиторий.
  2. Создайте виртуальное окружение и установите зависимости:
python3 -m venv whisper-env
source whisper-env/bin/activate
pip install -r requirements.txt
playwright install chromium

Подготовка данных

Положите ваши видеофайлы (mp4, mkv, mov) в директорию input/. Совет: Если рядом с видео уже есть одноименный mp3, Forge использует его. Если mp3 нет, он автоматически извлечёт аудио из видео в video.mp3 с битрейтом 320k и продолжит пайплайн как обычно.

Запуск

python3 start_forge.py

Как устроен пайплайн

Оркестратор start_forge.py запускает podcast_reels_forge/pipeline.py, который выполняет следующие стадии для каждого файла:

  1. Transcription: Используется faster-whisper. Выход: output/<file_stem>/<audio_name>.json.
  2. Diarization: (Если включено) Создает diarization.json.
  3. Analyze (Parallel): Анализ транскрипта всеми моделями, указанными в конфиге. Каждая модель сохраняет результаты в output/<file_stem>/<model_name>/.
  4. Video Processing: Нарезка клипов на основе moments.json, созданного каждой моделью. Для каждого ролика Forge вшивает субтитры через pycaps, кладёт рядом reel_XX.md с готовым описанием и 5 хештегами, а также reel_XX.srt с локальным таймлайном сабов.

Где лежат результаты

Внутри директории output/:

output/
  my_podcast/
    video.json            # Транскрипт
    diarization.json      # (Опционально) Информация о спикерах
    qwen3/                # Результаты модели Qwen
      moments.json        # Список найденных моментов
      reels.md            # Описания клипов
      reels/              # Нарезанные .mp4 клипы
        reel_01.srt       # Локальные субтитры, из которых pycaps вшивает сабы в reel_01.mp4
        reel_01.md        # Описание + 5 хештегов для reel_01.mp4
      reels_preview.mp4   # Превью всех клипов одним файлом
    deepseek/             # Результаты модели DeepSeek
      ...

Аргументы командной строки

Основные флаги для start_forge.py:

  • --config <path>: Путь к конфигу (по умолчанию: config.yaml).
  • --verbose: Подробный вывод всех команд и логов.
  • --quiet: Режим "только ошибки".
  • --no-skip-existing: Перезапустить все стадии, даже если файлы уже существуют.
  • --autotune: Автоматическая подстройка параметров под текущее железо (меньше чанки, больше таймауты).
  • --no-progress: Отключить прогресс-бар (полезно для логов/CI).

Конфигурация (config.yaml)

Основные секции

  • transcription: Выбор модели Whisper (medium, large-v3), устройства (cuda/cpu) и языка.
  • ollama:
    • models: Список моделей для параллельного анализа.
    • watchdog: Настройки таймаутов для обнаружения зависаний.
    • model_overrides: Твики таймаутов и размеров чанков для конкретных моделей.
  • processing: Настройка количества и длительности клипов (stories, reels, highlights).
  • video:
    • vertical_crop: Включить/выключить соотношение сторон 9:16.
    • smart_crop_face: Включить умное центрирование по лицам.
    • use_nvenc: Использовать аппаратное ускорение NVIDIA.
  • subtitles:
    • enabled: Включить автоматическую генерацию вшитых субтитров через pycaps.
    • font: Путь к файлу шрифта. По умолчанию: assets/fonts/bignoodletoooblique.ttf.
    • css: Путь к CSS-шаблону внешнего вида сабов. По умолчанию: assets/subtitles/forge_subtitles.css.
    • font_size_px, max_lines, vertical_align, vertical_offset: Тонкая подстройка визуала сабов.
    • Для визуальной настройки откройте assets/subtitles/style-editor.html.
  • diarization: Включение и настройка определения спикеров (требуется HuggingFace token).

Smart Crop по лицу

При включении smart_crop_face: true в конфиге:

  1. С каждого клипа берется несколько кадров-семплов.
  2. Используются каскады Хаара (OpenCV) для поиска лиц.
  3. Если лица найдены, окно 9:16 смещается так, чтобы спикер был в центре.
  4. Если лица не найдены, используется стандартный кроп по центру.

Перегенерация видео

Если вы хотите изменить параметры видео (битрейт, кроп, отступы) без повторного долгого AI-анализа, используйте rerender_videos.py:

# Перерендерить всё с включенным smart crop
python3 rerender_videos.py --smart-crop-face --replace

Производительность и стабильность

  • Whisper: Если возникает ошибка Out of Memory (OOM), используйте модели small или base.
  • Ollama: Если модель отвечает слишком долго, увеличьте first_token_timeout в конфиге.
  • FFmpeg: При ошибках энкодера попробуйте отключить use_nvenc в конфиге для рендеринга на CPU.
  • Pycaps / Playwright: Если субтитры не рендерятся и в ошибке упоминается Chromium, выполните playwright install chromium.

Лицензия

About

Podcast Reels Forge is a command-line tool that automatically turns long podcasts and interviews into viral short clips (Reels, Shorts, TikTok). It uses faster-whisper for transcription and LLMs (Ollama, OpenAI, Anthropic, Gemini) to identify engaging moments, then cuts and auto-crops videos into vertical 9:16 format ready for social media.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors