Extensions/ComfyUI-GigaAM
ComfyUI Extension

ComfyUI-GigaAM

A ComfyUI extension with 3 custom nodes.

By orex2121·Created 2 months ago·Updated 2 months ago· 2
orex2121/ComfyUI-GigaAM
Nodes3
On cloudLocal install
CategoryAudio/GigaAM, Orex Nodes 🛠️
Stars2
Updated2 months ago
Readme

ComfyUI-GigaAM (Orex Nodes)

✅ После установки запустите custom_nodes\ComfyUI-GigaAM\INSTALL_DEPS.bat

Для установки зависимостей. Проверено на Torch 2.12 не сносит.

Комплексный набор пользовательских узлов (custom nodes) для ComfyUI, предназначенный для высококачественной транскрибации аудио, умной обработки субтитров и автоматического тайминг-выравнивания переозвучки видео (дубляжа).

Разработано: Oleg Konuykov (OreX)


🌟 Основные возможности

  • Продвинутая транскрибация: Использование моделей GigaAM для точного распознавания речи с поддержкой обработки длинных аудиозаписей (Longform).
  • Диаризация спикеров: Встроенная интеграция Pyannote для автоматического определения и разделения говорящих.
  • Подготовка данных для LLM: Умная нарезка текста на батчи с учетом лимита токенов, количества предложений или слов. Идеально для последующего машинного перевода (например, через GGUF LLM).
  • Бесшовная синхронизация аудио: Алгоритм WSOLA бережно растягивает или сжимает сгенерированную речь (TTS), чтобы она строго попадала в оригинальные таймкоды видео без искажения высоты голоса (pitch).
  • Экспорт караоке: Возможность генерации .srt субтитров с подсветкой текущего слова <u> для стильных шортсов и рилсов.

🧩 Описание узлов

| Имя узла | Категория | Описание | |:------------------------------------- |:---------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GigaAM Speech to Text | Audio/GigaAM | Главный узел транскрибации. Скачивает и загружает выбранную модель GigaAM. Поддерживает разделение текста, вывод таймкодов и настройку токена HuggingFace. Выдает цельный текст и text_batch для LLM. | | Orex Cutting Subtitles ✂️ | Orex Nodes 🛠️ | Парсер и клинер субтитров. Принимает сырой текст с таймкодами от LLM, очищает его от галлюцинаций (лишних скобок/кавычек) и выдает два батча: с таймкодами и только чистый текст для TTS. | | Audio Subtitle Aligner (OreX) 🎛️ | Orex Nodes 🛠️ | Узел синхронизации. Принимает батч сгенерированного аудио и батч оригинальных таймкодов. Автоматически подгоняет длительность каждого аудиофрагмента под таймкод и собирает единую звуковую дорожку. |


⚙️ Установка и требования

Для работы узлов требуются дополнительные Python-библиотеки. Перейдите в папку вашего портативного окружения (или активируйте venv ComfyUI) и выполните:

pip install gigaam pyannote.audio audiotsm soundfile



### Настройка HuggingFace (Для диаризации)

Если вы планируете использовать функцию разделения по спикерам (Speaker Diarization):

1. Зарегистрируйтесь на [Hugging Face](https://huggingface.co/).

2. Примите условия использования модели `pyannote/speaker-diarization-community-1`.

3. Создайте токен доступа (Read) в настройках профиля.

4. Вставьте токен в поле `hf_token` узла **GigaAM Speech to Text** (или задайте переменную среды `HF_TOKEN`). Модель скачается в ваш локальный кэш автоматически.

> **Примечание по кэшу:** Модели загружаются в стандартую директорию HuggingFace (`~/.cache/huggingface/hub` или по пути, указанному в ваших переменных среды, например `models/audio_encoders/gigaam_models`).



## 🔄 Пример пайплайна (Workflow) для дубляжа

1. **Load Audio / Video:** Загружаем исходный медиафайл.

2. **GigaAM Speech to Text:** Транскрибируем аудио, включив `word_timestamps` и задав `sentences_per_interval` (например, 1). На выходе получаем список предложений с таймкодами.

3. **LLM Node (Translate):** Отправляем `text_batch` в любую языковую модель для перевода с сохранением таймкодов.

4. **Orex Cutting Subtitles ✂️:** Очищаем ответ от LLM. Разделяем таймкоды и переведенный текст.

5. **TTS Node:** Генерируем голос (например, через XTTS или EdgeTTS) на основе `clean_text (batch)`.

6. **Audio Subtitle Aligner (OreX) 🎛️:** Соединяем сгенерированный аудио-батч с `subs_with_timestamps (batch)`. Узел соберет готовую русифицированную (или любую другую) дорожку, идеально совпадающую с движением губ в оригинальном видео!



## 🛠️ Известные особенности

- **WSOLA Лимиты:** Узел Aligner ограничивает скорость изменения аудио от `0.5x` до `2.0x`. Если сгенерированный текст слишком длинный, постарайтесь попросить LLM делать перевод более лаконичным.

- Модель `v3_e2e_rnnt` рекомендуется как оптимальная по соотношению скорости и качества.