Introduce a full HLS audio download path and an Innertube client matrix, plus related refactors and bugfixes. Added hlsAudio.ts (parsing, selection, streaming, PO token handling) and innertubeClients.ts (client policies, selection, context policy). Added many unit tests (hls, clients, format selection, player filter, PO token). Made transport and range APIs more flexible, fixed MSE/playback readiness, guarded player response hooks against re-entrancy/stack recursion, and improved web ABR client authorization/planning. Also small exports/formatting tweaks and improved logging for selection decisions. |
||
|---|---|---|
| .github | ||
| dist | ||
| dist-ext | ||
| img | ||
| scripts | ||
| src | ||
| tests | ||
| vite | ||
| .gitignore | ||
| biome.json | ||
| BROWSERS-EXTS-TEST.md | ||
| bun.lock | ||
| changelog.md | ||
| CONTRIBUTING.md | ||
| l10n.config.json | ||
| LANG_SUPPORT.md | ||
| lefthook.yml | ||
| LICENSE | ||
| package.json | ||
| README-EN.md | ||
| README.md | ||
| tsconfig.json | ||
voice-over-translation (vot)
Смотрите видео на другом языке с закадровым переводом и субтитрами в любом браузере
Установка · Разработка · FAQ · Поддерживаемые сайты
Все права на оригинальное программное обеспечение принадлежат их правообладателям. Расширение не связано с оригинальными правообладателями.
Большое спасибо разработчикам Yandex.Translate, Yandex.Browser и всем, кто помогает делать расширение еще лучше.
Установка расширения
Caution
Перед созданием Issues настоятельно рекомендуем ознакомиться с разделом FAQ и уже существующими Issues.
Warning
Важно для пользователей Tampermonkey 5.2+ (MV3): В браузерах на движке Chromium (Chrome, Edge, Brave, Vivaldi и др.) необходимо:
- Открыть страницу расширений (
chrome://extensions) и включить «Режим разработчика» (подробности в документации Tampermonkey).- Если движок Chromium версии 138+, в «Сведениях» расширения включить «Разрешить пользовательские скрипты».
Пользователям Opera:
- Используйте Violentmonkey вместо Tampermonkey.
- В настройках расширения обязательно включите «Разрешить доступ к результатам на странице поиска» (гайд от Opera: как найти эту настройку), иначе скрипт не будет работать.
- Установите загрузчик юзерскриптов: Tampermonkey (или Violentmonkey для Opera)
- «Установить скрипт»
Установка нативного расширения для Chrome / Chromium
Из Chrome WebStore
Откройте Chrome WebStore и нажмите «Установить»
Из GitHub Releases
- Откройте Releases и скачайте файл
vot-extension-chrome.zip - Откройте страницу расширений:
- Chrome:
chrome://extensions - Edge:
edge://extensions - Brave:
brave://extensions - Opera:
opera://extensions
- Chrome:
- Включите «Режим разработчика»
- Перетащите скачанный
.zip-файл на страницу расширений
Установка нативного расширения для Firefox
Из Firefox Add-ons
Откройте Firefox Add-ons и нажмите «Добавить в Firefox»
Из GitHub Releases
Откройте Releases, нажмите на vot-extension-firefox.xpi и подтвердите установку в Firefox
Возможности
- Перевод видео на русский, английский или казахский с поддерживаемых языков
- Автоматический перевод видео при открытии
- Автоматическое включение субтитров при открытии
- Умное расположение субтитров: адаптация длины строк и размера текста под размер плеера
- Отображение субтитров, сгенерированных нейросетью
- Отображение субтитров с сайта (например, автопереведенные субтитры YouTube)
- Сохранение субтитров в форматах
.srt,.vtt,.json - Сохранение аудиодорожки перевода в формате
.mp3 - Отдельные ползунки громкости для оригинального и переведённого звука
- Адаптивная громкость: приглушение оригинала, когда звучит перевод
- Синхронизация громкости перевода с громкостью видео
- Ограничение перевода с выбранных языков (можно выбрать в меню)
- Горячие клавиши для перевода и управления субтитрами (включая комбинации клавиш)
- Простая настройка внешнего вида субтитров
- Отображение перевода отдельных слов в субтитрах
Полезные ссылки
- Проверенная совместимость (EN): Ссылка
- Библиотека для JS (vot.js): Ссылка
- Версия для терминала (vot-cli): Ссылка
Ограничения и рекомендации
- Рекомендуется разрешить автовоспроизведение «аудио и видео», чтобы избежать ошибок при работе расширения
- Расширение не может переводить видео длиной более 4 часов (ограничение API переводчика)
- Для стабильной работы загрузки аудио используйте актуальные и поддерживаемые загрузчики пользовательских скриптов (например, Tampermonkey или Violentmonkey)
Список поддерживаемых сайтов
Полный список поддерживаемых веб-сайтов и ограничения, связанные с их поддержкой, доступны в вики.
Наши домены:
Эти домены можно менять в настройках расширения без пересборки:
Proxy-сервер
Нужен для проксирования запросов, если прямой доступ к серверам Яндекса недоступен.
- vot-new.toil-dump.workers.dev (⚠️ не работает в РФ)
Media Proxy-сервер
Нужен для проксирования .m3u8-файлов и корректной обработки непрямых ссылок на .mp4 и .webm.
Как собрать расширение?
- Установите Node.js 22+ / Bun.sh
- Установите зависимости:
NPM:
npm install
Bun:
bun install
- Сборка расширения:
Автоматическая сборка
Автоматическую сборку можно выполнить только с помощью Bun.sh:
bun run autobuild
После завершения в папке .output появятся артефакты сборки подготовленные для публикации в магазинах расширений Chrome и Firefox.
В папке dist-ext будет находится non-store сборка для распространения в виде .zip-архива (для Chrome) и .xpi-архива (для Firefox).
В папке dist будет находится сборка в виде юзерскрипта для установки через Tampermonkey или другие загрузчики юзерскриптов.
Ручная сборка
Userscript (обычная сборка):
npm run build:gm:default
Userscript (минифицированная сборка):
npm run build:gm:min
Userscript (обе версии):
npm run build:gm
Нативные расширения Chrome/Firefox:
npm run build:ext
Dev-сборка userscript с sourcemap:
npm run build:dev
Артефакты userscript попадают в dist/, сборка нативных расширений — в dist-ext/.
Кастомизация внешнего вида:
Расширение поддерживает кастомизацию внешнего вида с помощью Stylus, Stylish и других похожих расширений.
Пример изменения стилей:
/* ==UserStyle==
@name VOT-styles
@version 16.09.2023
@namespace vot-styles
@description LLL
@author Toil
@license No License
==/UserStyle== */
:root {
--vot-font-family:
"Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system;
--vot-primary-rgb: 139, 180, 245;
--vot-onprimary-rgb: 32, 33, 36;
--vot-surface-rgb: 32, 33, 36;
--vot-onsurface-rgb: 227, 227, 227;
--vot-subtitles-color: rgb(var(--vot-onsurface-rgb, 227, 227, 227));
--vot-subtitles-passed-color: rgb(var(--vot-primary-rgb, 33, 150, 243));
}
Contributing
Пожалуйста, ознакомьтесь с гайдом для контрибьюторов.
Основано на проекте sodapng/voice-over-translation (license MIT)