Полностью автономный продакшен-пайплайн для перевода любых видеороликов на 17 языков мира (русский, английский, испанский, японский и др.). Программа сама скачивает видео, вырезает музыку, распознает текст, переводит его с учетом сленга (через ИИ) и озвучивает клонированным голосом оригинального диктора, автоматически подгоняя звук под видеоряд без искажения тембра.
- ⬇️ Fail-Fast Download & Upload: Продвинутый Colab-интерфейс. Позволяет мгновенно загрузить свой
.mp4файл напрямую с ПК или скачать видео с YouTube черезyt-dlp. Если YouTube заблокирует запрос, скрипт выдаст ошибку за 5 секунд, сэкономив вам 3 минуты времени на установку. - 🌍 Multi-Language Architecture: Автоматически определяет язык оригинала и переводит на любой из 17 поддерживаемых языков (целевой язык задается одной кнопкой в интерфейсе).
- 🎵 Studio-Grade Separation (
Demucs): Изоляция голоса. Нейросеть физически отделяет фоновую музыку, басы и эффекты от человеческой речи, чтобы транскрибация была идеальной. - 📝 Forced Alignment (
WhisperX): Сверхбыстрое распознавание текста с автоматическим определением языка оригинала. Привязывает каждое слово к миллисекундам на таймлайне. - 🧠 Context-Aware Translation (
Gemini Flash): LLM-перевод целыми батчами. Идеально переводит геймерский сленг, мемы и нецензурную лексику без потери контекста. Поддержка балансировки ключей! - 🗣️ Zero-Shot Voice Cloning (
XTTSv2 ONNX INT8): Клонирование голоса оригинального диктора. Жёстко оптимизировано: модель занимает всего 360 МБ и не переполняет VRAM. - ⏱️ Smart Time-Stretching (
Rubberband Phase Vocoder): Студийный алгоритм выравнивания времени. Если русский перевод оказался длиннее английского оригинала, алгоритм плавно "сжимает" аудиоволну без изменения высоты голоса (эффект "бурундуков" полностью исключен). - 🎚️ Dynamic Audio Leveling & Assembly: Умный микшер
pydub. Приглушает музыку до-14 dBFSи выводит голос на-8 dBFS. В конце Colab выдает интерактивную HTML-кнопку для скачивания готового видео.
Если вы не хотите ждать часы на слабом процессоре, запустите скрипт на мощных бесплатных серверах Google:
- Откройте файл
NullOfflineVideoTranslator.ipynbв Google Colab (нажав на бейдж выше). - В верхнем меню выберите
Среда выполнения->Сменить среду выполнения-> T4 GPU. - Заполните токены, выберите язык перевода (например,
ru) и источник видео. - Нажмите кнопку Play (
▶️ ). - Если выбрали локальный файл, появится кнопка для его загрузки.
- Заварите кофе ☕. Когда скрипт закончит, внизу появится огромная зеленая кнопка "СКАЧАТЬ ВИДЕО"!
В самом низу блокнота Colab есть подробная инструкция со ссылками о том, где бесплатно взять токены HuggingFace и Gemini.
Убедитесь, что у вас установлен Python (скрипт поддерживает современные версии), ffmpeg и rubberband-cli (для умного растяжения звука).
Запустите скрипт установки, который сам создаст виртуальное окружение и пропатчит все конфликты библиотек:
python3 install.pyWarning
Дисклеймер по требованиям (Локальный запуск): Этот проект использует тяжелые нейросети. При первом запуске скрипт скачает веса моделей. Убедитесь, что у вас есть свободное место:
- WhisperX (Транскрибация) — ~2 ГБ
- XTTSv2 (Клонирование голоса) — ~3 ГБ
- Demucs (Разделение вокала) — ~200 МБ
- DeepFilterNet (Опционально, шумодав) — ~100 МБ (+ сама библиотека тянет PyTorch на ~3 ГБ)
- Итого нужно места на диске: ~8-10 ГБ.
- Итого нужно VRAM (Видеопамяти): ~4 ГБ (модели подгружаются и выгружаются из памяти по очереди, а не все разом).
В корне проекта скопируйте .env.example в .env и впишите свои ключи:
HF_TOKEN=hf_ВАШ_ТОКЕН_ОТ_HUGGINGFACE
GEMINI_API_KEYS=AIzaSy_ВАШ_КЛЮЧ_1, AIzaSy_ВАШ_КЛЮЧ_2Important
Разрешения HuggingFace: Для корректной работы разделения голосов (диаризации) с вашим HF_TOKEN, вам необходимо зайти на HuggingFace и принять лицензионные соглашения на страницах следующих моделей (нажать Agree / Accept):
Просто скормите скрипту любую ссылку на YouTube и укажите язык (например, ru или ja):
./run.sh "https://www.youtube.com/watch?v=dQw4w9WgXcQ" "ru"Скрипт умный: если он прервется, при следующем запуске он не будет переводить уже готовые куски, а продолжит с места остановки.