Автоматический перевод видео и подкастов на несколько языков с озвучкой. Извлекает речь из медиафайлов, распознаёт текст, переводит на выбранные языки и создаёт озвучку.
- 🎯 Автоматическое распознавание речи из видео и аудиофайлов
- 🌍 Перевод на несколько языков одновременно
- 🎙️ Озвучка перевода с помощью нейросетевых голосов (Piper TTS)
- ⏱️ Субтитры в формате SRT для всех языков
- 📊 Пакетная обработка нескольких файлов
- ⚙️ Гибкая настройка моделей и голосов
- 🎧 Поддержка подкастов и мультиязычного контента
- Извлечение аудио —
ffmpegизвлекает звук из видео/аудио - Распознавание речи —
Whisperпреобразует речь в текст и субтитры - Перевод текста —
Google Translateилиtranslate-shellпереводит на нужные языки - Создание озвучки —
Piper TTSгенерирует речь из переведённого текста - Сохранение результатов — все файлы сохраняются в структурированном виде
git clone <repository-url>
cd translation-apinpm install
# или
bun installmacOS (через Homebrew):
brew install ffmpeg python3Ubuntu/Debian:
sudo apt update
sudo apt install ffmpeg python3 python3-pip# Создайте виртуальное окружение
python3 -m venv venv
source venv/bin/activate # Linux/Mac
# или: venv\Scripts\activate # Windows
# Установите зависимости
pip install -r requirements.txt
# Установите translate-shell (для перевода)
brew install translate-shell # macOS
# или: sudo apt install translate-shell # Ubuntu/DebianИспользуйте встроенный менеджер моделей:
# Показать доступные модели
python3 model_manager.py list
# Скачать и настроить модель medium
python3 model_manager.py download medium
# Или полная настройка (скачать, организовать, протестировать)
python3 model_manager.py full mediumPiper TTS устанавливается автоматически через pip:
pip install piper-ttsДля дополнительных голосов скачайте .onnx файлы с релизов Piper и поместите их в соответствующую языковую папку в voices/{язык}/
Основные настройки в config.json:
{
"inputDir": "./videos",
"outputDir": "./output",
"whisper": {
"model": "medium",
"device": "cpu",
"compute_type": "int8"
},
"translation": {
"engine": "google",
"langs": ["en", "de", "fr", "es", "zh", "ar"]
},
"tts": {
"piperPath": "./venv/bin/piper",
"voices": {
"en": "./voices/en/en-us-danny-low.onnx",
"es": "./voices/es/es-mls_10246-low.onnx",
"fr": "./voices/fr/fr-gilles-low.onnx",
"de": "./voices/de/de_DE-thorsten-high.onnx",
"ru": "./voices/ru/ru_RU-denis-medium.onnx",
"zh": "./voices/zh/zh_CN-huayan-medium.onnx",
"ar": "./voices/ar/ar_JO-kareem-medium.onnx"
},
"speed": 1.0,
"volume": 1.0
}
}inputDir— папка с исходными видеоoutputDir— папка для результатовwhisper.model— модель Whisper (tiny, base, small, medium, large-v2)translation.engine— движок перевода (google, argos, trans)translation.langs— языки для перевода (ISO 639-1 коды)tts.piperPath— путь к Piper TTS (обычно./venv/bin/piper)tts.voices— пути к голосовым моделям Piper (организованы по языкам вvoices/{язык}/)
# Запустить обработку всех видео из папки videos/
npm start
# или
bun start# Обработка подкастов из папки input/
node index.js podcastПодкаст-режим специально оптимизирован для:
- 🎙️ Мультиязычных подкастов
- 🌍 Автоматического определения языка
- 📖 Создания переводов и озвучки
- 🎵 Сохранения исходного аудио и результатов
При обработке больших файлов система показывает:
- Прогресс транскрибации (в процентах и секундах)
- Оценку времени завершения
- Текущий язык распознавания
- Статус каждого этапа обработки
Пример вывода:
📜 Progress: 44.8% (802.1/1790.9s) [210s elapsed]
📢 ✅ Transcription completed: 1790.9 seconds
🌍 Starting translation to 7 languages...
# Проверить статус моделей
python3 model_manager.py status
# Скачать модель
python3 model_manager.py download large-v2
# Протестировать модель
python3 model_manager.py test medium
# Показать текущую конфигурацию
python3 current_model.py# Показать текущие настройки
python3 current_model.pyДля каждого видеофайла создаётся структура:
output/
└── video_name/
├── audio.wav # Извлечённое аудио
├── original.srt # Оригинальные субтитры
├── original.txt # Оригинальный текст
├── en.srt # Английские субтитры
├── en.wav # Английская озвучка
├── es.srt # Испанские субтитры
├── es.wav # Испанская озвучка
└── ... # Другие языки
- Whisper распознавание — полностью функционально с моделью medium
- Перевод — Google Translate и translate-shell работают
- Piper TTS — установлен через pip и функционирует
- Обработка подкастов — активно обрабатывает мультиязычные файлы
- Модельное управление — полная система загрузки и тестирования
- Голосовые модели — организованы по языкам в
voices/{язык}/(7 языков, 13 голосов)
- Оптимизация скорости обработки больших файлов
Распознавание речи: Любой язык, поддерживаемый Whisper (автоопределение языка)
Перевод: 100+ языков через Google Translate и translate-shell
Озвучка: Зависит от доступных голосов Piper (организованы по языкам):
- 🇺🇸 Английский (en) - голоса: danny, ryan, hfc_male
- 🇪🇸 Испанский (es) - голоса: mls_10246, davefx
- 🇫🇷 Французский (fr) - голоса: gilles, siwis, upmc
- 🇩🇪 Немецкий (de) - голоса: mls, thorsten
- 🇷🇺 Русский (ru) - голоса: denis, dmitri
- 🇨🇳 Китайский (zh) - голос: huayan
- 🇸🇦 Арабский (ar) - голос: kareem
# Проверить и скачать модель
python3 model_manager.py full medium- Проверьте интернет-соединение (для Google Translate)
- Убедитесь, что языки указаны правильно в config.json
- Проверьте путь к бинарному файлу в
tts.piperPath(должен указывать наvenv/bin/piper) - Убедитесь, что piper-tts установлен:
pip install piper-tts - Убедитесь, что голосовые модели скачаны в соответствующие языковые папки
voices/{язык}/ - Проверьте, что в config.json указаны правильные пути к моделям (включая языковую директорию)
- Используйте меньшую модель Whisper (base вместо medium)
- Обрабатывайте видео по одному
- Закройте другие приложения
Приветствуются pull request'ы и issue! Пожалуйста, следуйте кодстайлу и добавляйте тесты для новых функций.
MIT License — см. файл LICENSE для подробностей.