-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Версия: 1.5.3
Автор форка: fantomcheg
Оригинальный проект: FOSWLY/vot-cli
- Введение - Что такое VOT-CLI Live и живые голоса
- Установка - Как установить через npm или из исходников
- Быстрый старт - Первые команды для начала работы
- Все аргументы - Подробное описание каждого параметра
- Примеры - Реальные примеры использования
- Живые голоса vs TTS - Сравнение и когда что использовать
- Работа с языками - Все поддерживаемые языки
- Объединение видео - Как создать видео с переводом
- Субтитры - Скачивание субтитров в JSON и SRT
- Прокси - Использование прокси серверов
- Решение проблем - Частые ошибки и их решения
- FAQ - Ответы на популярные вопросы
💡 Совет: Используй
Ctrl+Fдля поиска по странице
VOT-CLI Live - это форк оригинального vot-cli с добавленной поддержкой живых голосов Яндекса (useLivelyVoice).
Живые голоса (Live Voices) - это улучшенная технология озвучки от Яндекса, которая:
- 🎯 Звучит более естественно и выразительно
- 🗣️ Имеет лучшую интонацию и эмоциональность
- 🎭 Меняет тембр голоса в зависимости от контекста
- ⚡ Качество значительно выше стандартного TTS
| Параметр | Оригинальный vot-cli | VOT-CLI Live |
|---|---|---|
| Тип озвучки | Только стандартный TTS | Живые голоса по умолчанию |
| Выбор типа | ❌ Нет | ✅ --voice-style
|
| Объединение видео | ❌ Нет | ✅ --merge-video (экспериментально) |
| Настройка громкости | ❌ Нет | ✅ Да |
| Protobuf структура | Устаревшая | Обновлённая (из vot.js) |
npm install -g vot-cli-livegit clone https://github.com/fantomcheg/vot-cli-live.git
cd vot-cli-live
npm install --ignore-scripts
sudo npm link- Node.js 18+ (обязательно)
-
ffmpeg (для
--merge-video):sudo apt install ffmpeg -
yt-dlp (для
--merge-video):pip install yt-dlpилиsudo apt install yt-dlp
vot-cli-live --version
vot-cli-live --helpvot-cli-live --output="." "https://www.youtube.com/watch?v=VIDEO_ID"Это скачает аудио перевод с живыми голосами в текущую папку.
vot-cli-live --output="./downloads" --output-file="my_translation.mp3" "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --output="." "URL1" "URL2" "URL3"vot-cli-live [опции] [аргументы] <ссылка> [ссылка2] [ссылка3] ...Установить путь для сохранения файлов.
Примеры:
--output="." # Текущая папка
--output="/home/user/videos" # Абсолютный путь
--output="./downloads" # Относительный путьПо умолчанию: Не сохраняет файл, только показывает ссылку.
Установить имя файла для сохранения. Требует указания --output.
Примеры:
--output-file="my_video.mp3" # С расширением
--output-file="translation" # Без расширения (добавится .mp3)
--output-file="video_with_trans.mp4" # Для --merge-videoПо умолчанию: Генерируется автоматически: {videoId}---{uuid}.mp3
Установить язык исходного видео.
Поддерживаемые языки:
-
ru- Русский -
en- Английский -
zh- Китайский -
ko- Корейский -
ar- Арабский -
fr- Французский -
it- Итальянский -
es- Испанский -
de- Немецкий -
ja- Японский
Примеры:
--lang=en # Английское видео
--lang=es # Испанское видео
--lang=ja # Японское видеоПо умолчанию: en (английский)
Установить язык аудио перевода.
Поддерживаемые языки для TTS:
-
ru- Русский -
en- Английский -
kk- Казахский
Примеры:
--reslang=ru # Перевод на русский
--reslang=en # Перевод на английский
--reslang=kk # Перевод на казахскийПо умолчанию: ru (русский)
Выбрать тип озвучки.
Значения:
-
live- Живые голоса (более естественная озвучка) -
tts- Стандартный TTS (классическая озвучка)
Примеры:
--voice-style=live # Живые голоса (по умолчанию)
--voice-style=tts # Стандартный TTSПо умолчанию: live
Разница:
- Live voices: Более естественная интонация, эмоциональность, меняющийся тембр
- Standard TTS: Монотонный голос, роботизированное звучание
Скачать видео и объединить с аудио переводом.
Требования:
-
yt-dlpустановлен -
ffmpegустановлен - Достаточно места на диске
- Стабильное интернет-соединение
Примеры:
--merge-video # Включить объединениеРезультат: Видео файл .mp4 с переводом
Сохранить оригинальное аудио при объединении.
Значения:
-
true- Микшировать оригинал + перевод (слышны оба) -
false- Только перевод (оригинал удалён)
Примеры:
--keep-original-audio=true # Оба аудио (по умолчанию)
--keep-original-audio=false # Только переводПо умолчанию: true
Когда использовать:
-
true- Для обучения языку (слышишь оригинал + перевод) -
false- Для просмотра только с переводом
Установить громкость аудио перевода.
Диапазон: 0.0 - 2.0
-
0.0- Беззвучно -
1.0- Нормальная громкость -
2.0- Удвоенная громкость
Примеры:
--translation-volume=1.0 # Нормальная (по умолчанию)
--translation-volume=1.5 # Громче на 50%
--translation-volume=0.5 # Тише на 50%По умолчанию: 1.0
Установить громкость оригинального аудио.
Диапазон: 0.0 - 2.0
Примеры:
--original-volume=0.3 # Тихий оригинал
--original-volume=1.0 # Нормальная громкость
--original-volume=0.0 # Беззвучный оригиналПо умолчанию: 1.0
Полезная комбинация:
# Громкий перевод, тихий оригинал
vot-cli-live --output="." --merge-video --original-volume=0.3 --translation-volume=1.5 "URL"Скачать субтитры вместо аудио.
Формат: JSON (по умолчанию)
Примеры:
--subs
--subtitlesРезультат: Файл .json с субтитрами
Скачать субтитры в формате SRT.
Формат: SRT (SubRip)
Примеры:
--subs-srt
--subtitles-srtРезультат: Файл .srt с субтитрами
Использование субтитров:
# JSON формат
vot-cli-live --subs --output="." --reslang=ru "URL"
# SRT формат
vot-cli-live --subs-srt --output="." --reslang=ru "URL"Установить HTTP или HTTPS прокси.
Формат:
[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]
Примеры:
--proxy="http://proxy.com:8080"
--proxy="http://user:pass@proxy.com:8080"
--proxy="https://user:pass@proxy.com:3128"
--proxy="socks5://proxy.com:1080"Когда использовать:
- Яндекс API недоступен в вашей стране
- Нужно обойти блокировки
- Корпоративная сеть требует прокси
Не начинать загрузку если прокси не работает.
Значения:
-
true- Обязательно использовать прокси -
false- Попробовать без прокси если не работает
Примеры:
--force-proxy=true # Строго через прокси
--force-proxy=false # Попробовать без прокси (по умолчанию)По умолчанию: false
Показать справку по использованию.
vot-cli-live --help
vot-cli-live -hПоказать версию скрипта.
vot-cli-live --version
vot-cli-live -vvot-cli-live --output="." "https://www.youtube.com/watch?v=dQw4w9WgXcQ"vot-cli-live --output="." --voice-style=tts "https://www.youtube.com/watch?v=dQw4w9WgXcQ"vot-cli-live --output="./downloads" --output-file="my_translation.mp3" "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --output="." --lang=en --reslang=ru "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --output="." --lang=es --reslang=en "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --output="." --lang=ja --reslang=ru --voice-style=live "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --output="./batch" \
"https://www.youtube.com/watch?v=VIDEO_ID_1" \
"https://www.youtube.com/watch?v=VIDEO_ID_2" \
"https://www.youtube.com/watch?v=VIDEO_ID_3"# Сначала одно видео с live
vot-cli-live --output="." --voice-style=live "URL1"
# Потом другое с tts
vot-cli-live --output="." --voice-style=tts "URL2"vot-cli-live --output="." --merge-video "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --output="." --merge-video --keep-original-audio=false "https://www.youtube.com/watch?v=VIDEO_ID"# Тихий оригинал (30%), громкий перевод (150%)
vot-cli-live --output="." --merge-video \
--original-volume=0.3 \
--translation-volume=1.5 \
"https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --output="./videos" \
--output-file="translated_video.mp4" \
--merge-video \
"https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --subs --output="." --reslang=ru "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --subs-srt --output="." --reslang=ru "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --subs-srt --output="." --lang=en --reslang=en "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --output="." --proxy="http://proxy.com:8080" "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --output="." --proxy="http://user:password@proxy.com:8080" "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --output="." \
--proxy="http://proxy.com:8080" \
--force-proxy=true \
"https://www.youtube.com/watch?v=VIDEO_ID"Скачай одно видео двумя способами:
# С живыми голосами
vot-cli-live --output="./compare" --output-file="live.mp3" --voice-style=live "URL"
# Со стандартным TTS
vot-cli-live --output="./compare" --output-file="tts.mp3" --voice-style=tts "URL"Прослушай оба файла и сравни!
Живые голоса (live):
- Используют параметр
useLivelyVoice: trueв API - Более сложная обработка на стороне Яндекса
- Могут генерироваться дольше
- Файлы могут быть немного больше
- MD5 суммы отличаются от TTS
Стандартный TTS (tts):
- Классическая технология Text-to-Speech
- Быстрая генерация
- Монотонный голос
- Меньше нагрузка на сервер
Live voices (рекомендуется):
- ✅ Для просмотра/прослушивания
- ✅ Когда важно качество озвучки
- ✅ Для длинных видео
- ✅ Для обучающих материалов
Standard TTS:
- ✅ Для быстрого ознакомления
- ✅ Когда скорость важнее качества
- ✅ Для тестирования
- ✅ Если живые голоса недоступны
Если не указать --lang, Яндекс попытается определить язык автоматически:
vot-cli-live --output="." "https://www.youtube.com/watch?v=VIDEO_ID"Если автоопределение работает неправильно:
vot-cli-live --output="." --lang=ja --reslang=ru "https://www.youtube.com/watch?v=VIDEO_ID"# Английский → Русский (самое частое)
vot-cli-live --output="." --lang=en --reslang=ru "URL"
# Испанский → Английский
vot-cli-live --output="." --lang=es --reslang=en "URL"
# Китайский → Русский
vot-cli-live --output="." --lang=zh --reslang=ru "URL"
# Японский → Английский
vot-cli-live --output="." --lang=ja --reslang=en "URL"Гарантированно работают:
- Любой язык → Русский (
ru) - Любой язык → Английский (
en) - Любой язык → Казахский (
kk)
Эта функция позволяет создать видео файл с встроенным переводом.
-
yt-dlp - для скачивания видео:
# Ubuntu/Debian sudo apt install yt-dlp # Или через pip pip install yt-dlp
-
ffmpeg - для объединения:
sudo apt install ffmpeg
-
Место на диске - видео может быть большим!
- 🎤 Скачивается аудио перевод от Яндекса
- 📹 Скачивается оригинальное видео через yt-dlp
- 🎬 ffmpeg объединяет видео + аудио
- 🗑️ Временные файлы удаляются
- ✅ Готовое видео сохраняется
vot-cli-live --output="." --merge-video "URL"Результат: Слышны оба аудио дорожки одновременно.
Плюсы:
- ✅ Можно учить язык (слышишь оригинал)
- ✅ Понимаешь интонацию оригинала
Минусы:
- ❌ Может быть шумно
- ❌ Сложнее воспринимать
vot-cli-live --output="." --merge-video --keep-original-audio=false "URL"Результат: Только перевод, оригинал удалён.
Плюсы:
- ✅ Чистый звук
- ✅ Легче воспринимать
Минусы:
- ❌ Не слышишь оригинал
- ❌ Теряется атмосфера
vot-cli-live --output="." --merge-video \
--original-volume=0.2 \
--translation-volume=1.8 \
"URL"Результат: Тихий оригинал на фоне, громкий перевод.
Идеально для:
- ✅ Обучения языку
- ✅ Сохранения атмосферы
- ✅ Комфортного просмотра
| Длина видео | Примерное время |
|---|---|
| 5 минут | ~2-3 минуты |
| 15 минут | ~5-7 минут |
| 30 минут | ~10-15 минут |
| 1 час | ~20-30 минут |
Зависит от:
- Скорости интернета
- Качества видео
- Мощности процессора
{
"subtitles": [
{
"text": "Текст субтитра",
"startMs": 1000,
"durationMs": 2000
}
]
}1
00:00:01,000 --> 00:00:03,000
Текст субтитра
2
00:00:03,500 --> 00:00:05,500
Следующий субтитр
vot-cli-live --subs-srt --output="./subs" --reslang=ru "https://www.youtube.com/watch?v=VIDEO_ID"vot-cli-live --subs --output="./subs" --lang=en --reslang=en "https://www.youtube.com/watch?v=VIDEO_ID"# Английское видео → Русские субтитры
vot-cli-live --subs-srt --output="." --lang=en --reslang=ru "https://www.youtube.com/watch?v=VIDEO_ID"- Географические ограничения - Яндекс API может быть недоступен в некоторых странах
- Блокировки - Обход блокировок YouTube или Яндекса
- Корпоративная сеть - Требования компании
vot-cli-live --output="." --proxy="http://proxy.com:8080" "URL"vot-cli-live --output="." --proxy="https://proxy.com:8080" "URL"vot-cli-live --output="." --proxy="socks5://proxy.com:1080" "URL"vot-cli-live --output="." --proxy="http://username:password@proxy.com:8080" "URL"# Попробовать с прокси, если не работает - без него
vot-cli-live --output="." --proxy="http://proxy.com:8080" "URL"
# Строго через прокси (упадёт если прокси не работает)
vot-cli-live --output="." --proxy="http://proxy.com:8080" --force-proxy=true "URL"Причина: Ссылка не передана или съедена аргументом.
Решение:
# ✅ Правильно
vot-cli-live --output="." "https://youtube.com/watch?v=ID"
# ❌ Неправильно
vot-cli-live --output "https://youtube.com/watch?v=ID"Всегда используй = для аргументов со значениями!
Причина: Не установлен yt-dlp (нужен для --merge-video).
Решение:
# Ubuntu/Debian
sudo apt install yt-dlp
# Или через pip
pip install yt-dlp
# Проверка
yt-dlp --versionПричина: Не установлен ffmpeg (нужен для --merge-video).
Решение:
# Ubuntu/Debian
sudo apt install ffmpeg
# Arch Linux
sudo pacman -S ffmpeg
# macOS
brew install ffmpeg
# Проверка
ffmpeg -versionПричины:
- Яндекс API временно недоступен
- Видео недоступно для перевода
- Проблемы с интернетом
- Нужен прокси
Решение:
# Попробуй позже
# Или используй прокси
vot-cli-live --output="." --proxy="http://proxy.com:8080" "URL"Причина: Перевод ещё генерируется на сервере Яндекса.
Решение:
- ✅ Скрипт автоматически подождёт и повторит запрос
- ⏳ Обычно занимает 1-3 минуты
- 🔄 Можно запустить команду повторно через минуту
Причина: Большое видео в высоком качестве.
Решение:
- ⏳ Подожди - это нормально
- 📊 Следи за прогрессом в терминале
- 💾 Убедись что достаточно места на диске
Примерное время:
- 5 минут видео = ~2-3 минуты скачивания
- 30 минут видео = ~10-15 минут скачивания
- 1 час видео = ~20-30 минут скачивания
Причина: Яндекс кеширует переводы.
Решение:
- Это нормально для одного и того же видео
- Попробуй другое видео для сравнения
- Или подожди некоторое время
Причина: Нет прав на запись в папку.
Решение:
# Используй папку с правами
vot-cli-live --output="$HOME/downloads" "URL"
# Или дай права
chmod 755 ./output_folderA: vot-cli-live - это форк с добавленной поддержкой живых голосов Яндекса. По умолчанию использует более качественную озвучку.
A: Живые голоса лучше всего работают для русского языка (--reslang=ru). Для других языков качество может варьироваться.
A: Да! Поддерживаются:
- YouTube
- Vimeo
- Coursera
- Udemy
- Coursehunter
- И другие (см.
src/config/sites.js)
A: Да, код открытый (MIT лицензия). Можешь проверить исходники на GitHub.
A: Да, MIT лицензия позволяет коммерческое использование. Но учти условия использования API Яндекса.
A: Потому что:
- Требует дополнительные зависимости (yt-dlp, ffmpeg)
- Занимает много времени
- Может быть нестабильна для некоторых видео
- Требует много места на диске
A: Сейчас скачивается лучшее доступное качество. В будущих версиях может появиться параметр для выбора качества.
A: Бесплатно! Но помни:
- API Яндекса может иметь лимиты
- Не злоупотребляй массовыми запросами
- Используй разумно
A: Нет, требуется подключение к:
- API Яндекса (для перевода)
- YouTube (для скачивания видео при --merge-video)
A:
npm update -g vot-cli-liveИли переустановить:
npm uninstall -g vot-cli-live
npm install -g vot-cli-liveA: В папке указанной в --output:
-
--output="."- текущая папка -
--output="/path/to/folder"- указанная папка - Без
--output- файл не сохраняется, только показывается ссылка
A: Да! Просто не указывай --output:
vot-cli-live "https://www.youtube.com/watch?v=VIDEO_ID"Скрипт покажет ссылку на аудио файл, которую можно открыть в браузере.
A:
- Форкни репозиторий: https://github.com/fantomcheg/vot-cli-live
- Создай ветку с фичей
- Сделай изменения
- Создай Pull Request
A: Создай Issue: https://github.com/fantomcheg/vot-cli-live/issues
Укажи:
- Версию:
vot-cli-live --version - Команду которую выполнял
- Текст ошибки
- Операционную систему
- 📦 npm пакет: https://www.npmjs.com/package/vot-cli-live
- 🐙 GitHub репозиторий: https://github.com/fantomcheg/vot-cli-live
- 🐛 Сообщить об ошибке: https://github.com/fantomcheg/vot-cli-live/issues
- 📖 Примеры: EXAMPLES.md
- 🔄 Оригинальный vot-cli: https://github.com/FOSWLY/vot-cli
- 🌐 Браузерное расширение VOT: https://github.com/ilyhalight/voice-over-translation
- 📚 Библиотека vot.js: https://github.com/FOSWLY/vot.js
Проект использует обновлённую protobuf структуру из vot.js:
Ключевое поле для живых голосов:
useLivelyVoice: boolean // Поле 18 в VideoTranslationRequestДругие важные поля:
-
unknown3: 2- обновлено с 1 на 2 (после апреля 2025) -
forceSourceLang: boolean- принудительное указание языка -
bypassCache: boolean- обход кеша -
videoTitle: string- название видео
POST https://api.browser.yandex.ru/video-translation/translate
POST https://api.browser.yandex.ru/video-subtitles/get-subtitles
Vtrans-Signature: <signature>
Sec-Vtrans-Token: <uuid>
vot-cli-live/
├── src/
│ ├── index.js # Главный файл
│ ├── yandexProtobuf.js # Protobuf кодирование/декодирование
│ ├── yandexRequests.js # API запросы к Яндексу
│ ├── yandexRawRequest.js # Низкоуровневые запросы
│ ├── translateVideo.js # Логика перевода видео
│ ├── download.js # Скачивание файлов
│ ├── mergeVideo.js # Объединение видео (новое!)
│ ├── proxy.js # Парсинг прокси
│ ├── config/ # Конфигурация
│ │ ├── constants.js # Константы (языки)
│ │ ├── sites.js # Поддерживаемые сайты
│ │ └── ...
│ └── utils/ # Утилиты
│ ├── getVideoId.js # Извлечение ID видео
│ ├── getSignature.js # Генерация подписи
│ ├── getUUID.js # Генерация UUID
│ └── ...
├── README.md # Документация (RU)
├── README-EN.md # Документация (EN)
├── EXAMPLES.md # Примеры использования
└── package.json # Метаданные пакета
- Открой
src/config/sites.js - Добавь конфигурацию сайта
- Добавь функцию извлечения videoId в
src/utils/getVideoId.js - Протестируй
- Открой
src/yandexProtobuf.js - Измени структуру
VideoTranslationRequest - Обнови функцию
encodeTranslationRequest - Протестируй
- Обновлены все ссылки после переименования репозитория
- Исправлена обработка имён файлов для --merge-video
- Исправлена обработка имён файлов
- Улучшена функция объединения видео
- Добавлена функция --merge-video
- Добавлены параметры громкости
- Обновлена документация
- ✨ Добавлена поддержка живых голосов (useLivelyVoice)
- Добавлен параметр --voice-style
- Обновлена protobuf структура
- Живые голоса используются по умолчанию
- FOSWLY - за оригинальный vot-cli
- ilyhalight - за браузерное расширение VOT
- Yandex - за API перевода
- Сообщество - за тестирование и фидбек
MIT License - можно использовать свободно, в том числе коммерчески.
Полный текст: LICENSE
Если проект помог тебе:
- ⭐ Поставь звезду на GitHub
- 📢 Расскажи друзьям
- 🐛 Сообщи об ошибках
- 💡 Предложи улучшения
Спасибо что используешь VOT-CLI Live! 🎉