Я обожаю смотреть иностранные фильмы в оригинале.

Во-первых, мне нравится расширять кругозор, погружаться в другую культуру, расшифровывать структуру разных языков, пополнять словарный запас.

Во-вторых, мне просто нравится звучание некоторых языков - например, французского, датского, китайского.

Также я работаю над сайтом по изучению языков Language Dove, а учить языки по фильмам - это очень эффективно.

Так родился проект по генерации идеальных субтитров.

Функциональность субтитров:

  1. Подсветка слов в момент произношения - для тренировки восприятия на слух

  2. Адаптивный перевод каждой строки

  3. Контекстуальный перевод для каждого слова, который можно подписать сверху для быстрого доступа

  4. Романизация для языков с нелатинской письменностью

  5. Интерактивный словарь: клик по слову открывает статью в Wiktionary

  6. UI для кастомизации субтитров: пользователи должны иметь возможность оставить только то, что им нужно

Субтитры генерируются автоматически, но с возможностью ручного вмешательства - можно редактировать как транскрипт, так и переводы (как адаптивные, так и пословные).

Результаты

Результаты можно посмотреть на моем сайте.

Я на данный момент обработал видео на английском, французском и русском.

На английском (с переводом на русский):

  1. Animal Farm (Скотный двор) - британский мультфильм 1954 года по Оруэллу

  2. Двухчасовое видео Андрея Карпаты, где он пишет и обучает GPT с нуля

  3. History of the entire world I guess от Bill Wurtz - ролик, растащенный на мемы

  4. Одно из ранних видео классика англоязычного научпопа Vsauce: “Is Earth Actually Flat”

На французском (с переводом на английский):

  1. Мини-сериал «Анна Каренина» (2013–2018) - почти 200 минут видео

  2. Мультфильм 1985 года Astérix et la Surprise de César

На русском (с переводом на английский):

  1. Иван Васильевич меняет профессию

  2. Холоп

  3. Алеша Попович и Тугарин Змей

  4. Наша Раша: яйца судьбы

  5. Первая и вторая серия Интернов в одном видео

  6. Первая серия Кухни

  7. Двухчасовая лекция Светланы Бурлак о языковом родстве

Также у меня на сайте есть много песен, но они были сделаны более ранней версией алгоритма.

Архитектура решения

Алгоритм принимает видеофайл и генерирует HTML-страницу с видеоплеером и оверлеем субтитров. Есть два режима: для сайта (со встроенным YouTube-плеером - без нарушения копирайта и без хранения файлов на сервере) и для тестов (полностью локальный плеер).

Пайплайн обработки видео:

  1. Препроцессинг аудио

  2. Транскрибация с помощью ASR-моделей (ASR - Automatic Speech Recognition)

  3. Получение чистого текстового транскрипта: либо с помощью правки результатов ASR, либо с помощью правки внешних субтитров

  4. Forced alignment: определение таймингов слов локальной моделью с использованием текстового транскрипта и результатов ASR

  5. Укладывание слов в строки субтитров по особым правилам - так, чтобы было удобнее читать

  6. Адаптивный перевод субтитров на уровне строк

  7. Перевод субтитров на уровне отдельных слов

  8. Генерация веб-страницы

Препроцессинг аудио

Суть препроцессинга - подавление участков аудио, которые не содержат речь.

Для детекции речи я использую локальную VAD-модель Silero (VAD - Voice Activity Detection), которая возвращает псевдовероятность V (от 0 до 1) наличия речи в каждом фрейме.

Экспериментальным путём я вывел формулу коэффициента громкости для фрейма:

K = min(1, (V/0.4)³)

При V ≥ 0.4 громкость не меняется. При меньших значениях она падает, причём резко: например, при V = 0.2 громкость уменьшается в 8 раз.

Интересно, что бустинг участков с высоким V (K > 1) ухудшал метрики транскрибации - поэтому от него пришлось отказаться.

После расчёта коэффициентов массив K сглаживается (резкие перепады громкости могут запутать ASR-модели), и громкость каждого фрейма корректируется.

Транскрибация с помощью ASR-моделей

Алгоритм транскрибации возвращает массив токенов со следующими атрибутами:

  1. text - значение токена

  2. start/end - тайминги в миллисекундах

  3. score - оценка надежности таймингов (от 0 до 1)

  4. speaker - локальный идентификатор спикера (нужен для определения моментов смены говорящего внутри одного сегмента речи). Опционален, может принимать значение None.

Сначала с помощью данных VAD выделяется сегменты с речью (соседние сегменты объединяются, если их разделяет достаточно маленький кусок аудио). Затем для каждого сегмента запускается каскад ASR-моделей. 

От ASR-моделей требуется возвращать только текст сегмента (таким образом, ASR модели любой архитектуры совместимы с пайплайном). Тайминги и score для каждого токена определяются с помощью локальной forced alignment модели.

Значения score для всех токенов агрегируются, чтобы вывести оценку качества транскрибации сегмента данной ASR-моделью.

Логика каскада: если первая модель дает достаточно высокий агрегированный score, обработка завершается. Иначе запускаются остальные модели (в текущей конфигурации их две), и выбирается лучший результат.

Сегменты с лучшим результатом ниже порога качества игнорируются - обычно это случаи, когда VAD принял посторонний звук за речь.

Некоторые модели умеют делать диаризацию и возвращать идентификатор speaker для каждого токена. Если одна из таких моделей побеждает, идентификатор speaker будет проставлен для токенов сегмента.

Получение текстовго транскрипты

Наша цель - получить максимально точный текстовый транскрипт. Есть несколько стратегий в зависимости от исходных данных.

Вариант 1: Нет внешних субтитров

Формируем текст из ASR-токенов, затем улучшаем его через LLM с промтом вида "исправь орфографию, грамматику и пунктуацию, не меняя смысл".

LLM делает две важные вещи:

  1. Восстанавливает по контексту участки с явными ошибками ASR (результат почти всегда осмыслен, хотя не всегда соответствует оригиналу)

  2. Нормализует пунктуацию - это критично для качественного перевода

После этого все равно желательно пройтись по тексту вручную. К сожалению, это требует знания языка и занимает много времени.

Вариант 2: Есть внешние субтитры

Можно распарсить их и собрать в транскрипт. Но с внешними субтитрами к фильмам постоянно всякие проблемы:

  1. В субтитрах "Кухни" были комментарии для изучающих русский. Иногда в субтитрах также бывает html-разметка. Все это можно вычистить регулярками

  2. Субтитры "Алеши Поповича" выглядят так, как будто их писал второклассник. Ну, это не очень большая проблема - натравляем на текст LLM-ку, и она переписывает всё по-нормальному 

  3. В субтитрах для "Ивана Васильевича" отсутствовала добрая часть коротких реплик

  4. Самый тяжелый случай, "Astérix et la Surprise de César": множество реплик перефразированы автором субтитров на свой вкус. Чтобы исправить такие субтитры вручную, нужно хорошо знать язык и угробить кучу времени

Для двух последних ситуаций я разработал специальный алгоритм: он матчит ASR-массив с текстом субтитров, делит на куски, которые железно соответствуют друг другу; затем для каждого куска подаёт в LLM оба варианта - и модель восстанавливает оригинал на основе двух источников.

Для Ивана Васильевича этот алгоритм сработал отлично (потом я внес лишь мелкие косметические правки). Для Астерикса - удовлетворительно: метрики forced alignment сильно выросли, тайминги стали намного лучше, но мне всё равно пришлось ещё раз пройтись по тексту и исправить моменты, где LLM не шмогла.

Forced Alignment

Теперь нужно определить тайминги для токенов правильного транскрипта, полученного на предыдущем этапе. 

Однако нельзя просто так взять и запихнуть весь транскрипт и всё аудио в forced alignment модель - не хватит ни памяти, ни времени (сложность forced alignment - O(n²) от длины аудио).

Решение: матчим ASR-массив с токенами транскрипта и разбиваем аудио на мелкие кусочки для forced alignment.

На выходе получаем два типа токенов:

  1. Совпавшие (были и в массиве ASR, и в транскрипте): два набора таймингов и score

  2. Только в транскрипте: один score и один тайминг

Для токенов первого типа выбираем тайминг с лучшим score. 

После этого может нарушиться монотонность таймингов - восстанавливаем её PAV-алгоритмом (L1 Isotonic Regression - минимизирует сумму модулей изменений).

Укладывание слов в строки субтитров

Алгоритм работает с одним жёстким ограничением (на максимальную длину строки) и тремя хотелками, на основании которых строится оптимизируемая функция потерь:

  1. Желательно, чтобы границы строк приходились на концы предложений, знаки препинания (запятая, точка с запятой, многоточие) или длинные паузы

  2. Желательно разделение разных спикеров

  3. Желательно избегать слишком коротких строк - чтобы дать пользователю больше времени на чтение

Перевод на уровне строк: транскреация против обычного перевода

Работая над этим проектом, я понял, что раньше переводил художественные тексты через LLM неправильно.

Я просил просто перевести текст, добавляя требования вроде "чтобы звучало естественно". Результат получается правильный по смыслу, но деревянный. По сути, получается улучшенная версия Google Translate.

Транскреация - это другой подход. Вместо перевода мы просим переписать текст на языке перевода, адаптируя текст под аудиторию носителей языка перевода.

Преимущества транскреации:

  1. Свобода в структуре: LLM перестаёт следовать синтаксису оригинала, перевод звучит естественнее

  2. Адекватная передача нестандартной манеры речи: стилизаций, сленга, эмоций

  3. Адаптация культурных реалий: например, в “Иване Васильевиче”, где Якин гадает, какой актёр “играет царя:, советские актёры заменены на англоязычных

  4. Каламбуры (кошмар любого переводчика) иногда получается адекватно перевести. Да, процент успеха все равно не очень высок, но у гугл-транслейта он вообще нулевой

  5. Когда модель понимает, что какой-то кусок текста нужно переводить очень художественно, с минимальной оглядкой на оригинал, она это сделает. В основном это касается песен - LLM даже способна переводить с сохранением рифмы

Полезно указывать источник текста для дополнительного контекста. Например, при переводе "Интернов" Claude Opus 4.5 понял, что "Анастасия Константиновна" нужно переводить как "Dr. Kisegach".

Но есть нюанс. Транскреация годится только для текстов с невысокой ценой ошибки. В попытках адаптации модель может накреативить не в том направлении.

Пример: перевожу лекцию по лингвистике с русского на английский. Лектор произносит фразу на чешском, демонстрируя, что родственные языки можно понять без перевода. Модель заменяет чешский на французский. Это плохой выбор: французский родствен английскому только на индоевропейском уровне, а их сходство объясняется заимствованиями - о чём лектор говорила буквально за несколько минут до этого. Лучше был бы скотс или голландский, но и чешский оставить - вполне адекватно.

Ещё одно преимущество транскреации: ее легче редактировать вручную. В Google Translate всё вроде бы правильно, но сам бы так не написал - приходится переписывать всё. При транскреации ошибки в среднем грубее, но они сконцентрированы, а большая часть текста звучит нормально.

Переводить нужно большими кусками для максимума контекста. Подробнее о технике перевода большими кусками с сохранением структуры массива строк - в моей англоязычной статье.

Главный bottleneck алгоритма перевода сейчас - это отсутствие доступа к картинке. Не всегда можно перевести правильно, имея только текст. 

Типичные ошибки:

- Мисгендеринг из-за гендерно-нейтральных формулировок в оригинале

- Неправильные местоимения, когда из текста неясно, о ком речь

- Выбор неподходящего узкого понятия вместо широкого (например, перевод слова “трусы” словом “boxers”, когда речь идет о женских трусах)

Для следующего скачка в качестве перевода нужно начать использовать видеоряд.

Перевод на уровне отдельных слов

Про этот алгоритм я уже рассказывал на Хабре (и с тех пор улучшил его).

Это очень буквальный перевод, который при этом старается выглядеть складно на языке перевода. С примерно таким же подходом Кирилл и Мефодий переводили Библию с греческого на славянский - буквальность была нужна, чтобы избежать еретических толкований. Именно поэтому церковнославянские тексты звучат странно - у них греческая структура.

Транскреация и буквальный пословный перевод - это два полюса идеологии перевода, и они отлично дополняют друг друга.

Типичный кейс использования: вы знаете 90% слов в фильме, но из-за остальных 10% смысл ускользает (как у меня с французским или польским). Гораздо удобнее глянуть контекстуальный перевод над незнакомым словом, чем парсить перевод всей строки и вычленять оттуда нужное слово - для этого точно придётся останавливать видео.

Генерация веб-страницы

Перед генерацией HTML можно исправить переводы через редактирование .txt-файла: для каждой строки субтитров сначала идет адаптивный перевод, затем переводы отдельных слов. Редактировать можно только сами переводы (но не структуру) - то есть, то, что идет после знака =

На этапе генерации .html-файла

  1. Идет фильтрация строк по качеству таймингов. Строки с низким агрегированным score отбрасываются - лучше не показать реплику, чем показать в неправильное время. У лекций отфильтровывается в среднем пара реплик на час видео; у фильмов - около 3%; рекорд у «Астерикса» - 8%. Можно вручную включить/исключить любую реплику через редактирование файла переводов.

  2. Для строк субтитров определяем тайминги их начала и конца, которые отличаются от таймингов первого и последнего слова соответственно. Чтобы было больше времени на чтение субтитров (все-таки, мы ориентируемся на изучающих язык), нужно удлинить время их показа. Если строка субтитров стоит в изоляции, она начинает отображаться за 2 секунды до начала первого слова, и продолжает еще 10 секунд после конца последнего. Если интервал между строками меньше 12 секунд, то он распределяется между этими строками в том же соотношении 1 к 5; ⅚ времени интервала стоит первая строка, и ⅙ времени - вторая.

  3. Если у языка нелатинская письменность, делаем романизацию. Юзер может настроить на свой вкус: либо отображать текст без романизации, либо заменить текст на романизацию, либо отображать романизацию сверху над словом. Романизация нужна либо на начальных этапах, когда вы без неё не успеваете читать субтитры; либо когда вас мало интересует письменность языка (например, вы увлекаетесь лингвистикой, и вам интересна структура какого-нибудь экзотического языка вроде арабского); либо для языков с логографическим письмом (китайский и японский)

  4. Проставляем ударения в русском: проставляем только в однозначных случаях, омографы типа «слова́/сло́ва» не трогаем. В будущем можно добавить аналогичные фичи для других языков (например, огласовки в арабском)

  5. Делаем слова кликабельными - по клику открывается Wiktionary со словарной статьёй.

  6. Встраиваем субтитры в HTML+JS+CSS плеер - либо локальный (со ссылкой на реальное видео в файловой систем), либо ютубовский.

В плеере также есть отдельный UI для кастомизации субтитров:

  1. Отображать ли пословный перевод над словом, или только при наведении на него

  2. Перевод на уровне строк: отображать всегда вместе с оригиналом; отображать при наведении на специальную иконку; не отображать вообще; или отображать только перевод, без исходного текста

  3. Если язык не на латинице, настройки романизации

  4. Отображать ли субтитры в одну строку или в две

  5. Вертикальная позиция субтитров

  6. Размер субтитров

Все эти настройки (а также временная позиция в каждом из видео) персистентны, они хранятся в local storage.

Комментарии (23)


  1. Emelian
    10.02.2026 15:46

    Результаты можно посмотреть на моем сайте.

    Все сайты недоступны. Только через вэпээн?

    Я тоже работаю в этом направлении (двуязычные субтитры + обучающая программа). См., например в
    https://lecole.free.nf/video.php .


    1. einhorn Автор
      10.02.2026 15:46

      Очень странно. Должно работать.
      Я сейчас вижу трафик на сайте.


      1. Emelian
        10.02.2026 15:46

        Очень странно. Должно работать.

        Через вэпээн – работает, а так нет. Вот, глянул, немного, французский вариант «Анны Карениной». Идея у вас хорошая, но, контент немного напрягает. Много шума, звука, речь тихая. И, главное, стиль «страсти-мордасти». Для целей освоения (французского) языка хочется чего-то нейтрального, с чистой речью, вроде мультиков либо подходящих роликов с Ютуба. Так что, пошел я делать свои титры…


        1. einhorn Автор
          10.02.2026 15:46

          В том-то и челлендж, что в фильмах (которые интереснее смотреть, чем специально разработанные учебные видео) всегда "много шума, звука".

          Кстати, Анна Каренина - это очень простой фильм для транскрибации, и речь мне там тихой совсем не кажется. Вы Астерикса посмотрите - вот там реально много хаоса, и там мои алгоритмы работают на пределе.

          Контент я подбираю в первую очередь по рейтингу. У Анны Карениной 7.2 на IMDB - это хороший фильм.


          1. Emelian
            10.02.2026 15:46

            В том-то и челлендж, что в фильмах (которые интереснее смотреть, чем специально разработанные учебные видео) всегда "много шума, звука".

            Ну, для продвинутых это, наверное, нормально – разбирать речь в живом потоке. Однако, для начинающих лучше, думаю, более спокойные видео. Тем более, что есть ролики, в которых говорят об интересных вещах, без лишней экспрессивности.

            Кстати, Анна Каренина - это очень простой фильм для транскрибации, и речь мне там тихой совсем не кажется. Вы Астерикса посмотрите - вот там реально много хаоса, и там мои алгоритмы работают на пределе.

            В ролике «Santiago des mers (Сантьяго морей) - 1-й эпизод» ( https://lecole.free.nf/Video/FrRu0000.php ) тоже распознавать речь было исключительно тяжело. Мне кажется, трудно понять друг друга, пока не будет сравнения по единой метрике. Вот если бы, я увидел реальную работу ваших алгоритмов, которые «работают на пределе» на примере этого классного французского мультика, то я бы тогда, наверняка, смог бы оценить уровень ваших достижений. А без реального сравнения, трудно что-либо понять.


            1. einhorn Автор
              10.02.2026 15:46

              Я обработал этот мультик, результаты в Гугл-драйве.

              Всё получилось, особых проблем с транскрибацией этого мультика у моих алгоритмов не было. Метрики довольно высокие. Я ничего вручную не исправлял.

              Файл плеера - это play_top_True_no.html из ru_local.


              1. Emelian
                10.02.2026 15:46

                Я обработал этот мультик, результаты в Гугл-драйве.

                Вот! Теперь, более-менее, понятно! Первое впечатление, для автоматической обработки – очень круто! Да, я бы немного навел марафет на вывод субтитров, но это уже – придирки.

                Я не очень понял, насчет «транскрибации с помощью ASR-моделей». Это локальные модели или ИИ-сервисы? Платные или бесплатные?

                Для детекции речи я использую локальную VAD-модель Silero

                Ну, есть неплохие бесплатные сервисы, которые отделяют речь от шума или музыки, т.е., дают чистый вокал, до 10-15 минут, как и неплохие бесплатные сервисы по распознаванию речи. Используя вэпээн, можно снимать эти ограничения.

                Есть локальные модели Vosk, которые делают тайминг для каждого слова.

                Я именно так и получал свои субтитры, но без подсветки слов и html-страницы для плейера не делал, ограничивался внешними ssa-субтитрами (которые можно прожечь на вилео, с помощью ffmpeg).

                Что касается перевода, то, опять же, для автомата – супер! Но, для большего удовольствия, ручная правка не помешала бы.

                В целом, для меня, полезна идея подсветки слов. По переводу, я придерживаюсь метода БКП (буквальный контекстный перевод). Сайтами пользуюсь бесплатными, поэтому, такого уровня организации как у вас, позволить себе не могу.

                В целом, ваш проект, думаю, очень перспективен. Только над «мордой лица» сайта, я бы поработал. Например, постарался бы сделать в стиле: https://filmynet.free.nf , https://just.free.nf либо аналогичных. У меня на сайтостраение сил уже не остается. В данном случае, занят разработкой второй версии своей обучающей программы «L'école».

                Удачи, вам, в проекте!


                1. einhorn Автор
                  10.02.2026 15:46

                  Это локальные модели или ИИ-сервисы? Платные или бесплатные?

                  Это могут быть либо локальные модели (например, Whisper), либо платные сервисы по API. Какие модели использовать, прописывается в конфиге. В данном случае я использовал платный ElevenLabs Scribe. Локальный Whisper похуже, но я бы не сказал, что между ними прям пропасть.

                  Ну, есть неплохие бесплатные сервисы, которые отделяют речь от шума или музыки

                  Да, можно и специальными моделями это делать.
                  Я экспериментировал с одной локальной моделью. Она предназначена для музыки. С песнями работает очень хорошо, но для остального содержания фильмов разницы почти нет

                  Есть локальные модели Vosk, которые делают тайминг для каждого слова.

                  Я для этих целей использую вот эту локальную модель, она работает на куче языков (справилась даже со старофранцузским)


  1. Fedorkov
    10.02.2026 15:46

    Однажды я из любопытства посмотрел «Иван Васильевич меняет профессию» с английскими субтитрами (на официальном ютубе Мосфильма).

    Прикололо, что слово «Жду!» Шпака перевели аж шестью словами «I'm looking forward to it!»

    У вас покороче — «I'll be waiting.»


  1. ED-209
    10.02.2026 15:46

    А с субтитрами вообще схема рабочая для изучения иностранного языка? Казалось, всегда лучше пересматривать известные, тысячу раз просмотренные-пересмотренные фильмы ранее в дубляже которые, на этот раз, будут звучать, условно, на том же английском языке. Т.к. контекст точно помнишь и понимаешь какие слова, фраза или диалог из дублированного перевода конкретно сейчас к чему соотносится и как звучат дословно именно в оригинале (I'll be back -> Я вернусь).


    1. einhorn Автор
      10.02.2026 15:46

      Я считаю, что необходимо видеть текст на иностранном языке.

      В вашем случае вы будете понимать смысл фраз, но не улавливать отдельные иностранные слова. Вы запомните какие-то частотные фразы, но не более.

      Не будет прокачиваться лексика, потому что вы просто не видите новых иностранных слов.


  1. vybo
    10.02.2026 15:46

    где Якин гадает, какой актёр “играет царя", советские актёры заменены на англоязычных

    Зачем? Адаптировать можно "Смотри не перепутай, Нельсон", такой же бесконечно далекий исторический деятель как Кутузов, а Якину-то Смоктуновский коллега и давний друг, "Кеша", причем тут какие бы то ни было актеры по ту сторону железного занавеса? Вы про бесплатное молоко за вредный царский труд подите адаптируйте, а не вот это)


    1. einhorn Автор
      10.02.2026 15:46

      Я в статье привел простой пример. Для англоязычного зрителя имя русского актера - это просто набор звуков, а так что-то знакомое.

      бесплатное молоко за вредный царский труд

      Мой переводчик нормально адаптировал - "tsars deserve hazard pay"


      1. vybo
        10.02.2026 15:46

        Ну фильм с русскими актерами и сугубо русскими и советскими реалиями этот зритель ведь включил, пусть вне сюжета перечисленные фамилии и останутся для него не знакомее фамилии Yakin, ясно же что в мире фильма сна Шурика сей Якин не раз снимал их в гриме и без грима и вполне ожидал встретить дома у актрисы Зины Тимофеевой, к забугорному Хотькомуто Известному всё это применимо уже с куда большим трудом, во всяком случае пока "играет" он не какого-нибудь короля Генриха VIII со всеми прочими сопутствующими адаптациями

        hazard pay

        Ну это не адаптация же, прямой смысл тезиса Бунши передан, но весь его комизм полностью проигнорирован, выходит что самодур всего-навсего объявляет подданым "моя служба и опасна и трудна (hazard - опасность), платите мне отдельно еще и за это", хотя на самом деле он выдает конкретный и семантически понятный и придворным Грозного образ "бесплатного молока", стойко ассоциирующийся с советскими производствами и нелепо анахроничный из уст "царя", которому вот буквально только что накрыли стол бесплатных явств побогаче бутылки с молоком в довесок к зарплате


  1. punhin
    10.02.2026 15:46

    С благодарностью скачал бы подобное решение для локального перевода обучающих видео ("коллекционирую" видео по blender 3d. inkscape, krita, gimp, godot), закачанных в своё время с ютюба. Пока что приходится довольствоваться или просмотром на языке оригинала (что, честно говоря, тяжеловато), или загрузкой на рутюб с последующим просмотром через яндекс-браузер, но рутюб шакалит качество - заливаешь 1080, а на выходе получаешь... типа 1080, но пережатое под 480, что для тематики работы с программами (у которых и без того мелкий интерфейс) смерти подобно.


    1. einhorn Автор
      10.02.2026 15:46

      Какие фичи для вас критичны, а какие нет?

      Если вам нужно просто перевести построчно (причем, вам не нужен художественный адаптивный перевод) спокойные видео на английском, то можно сделать намного проще: транскрибируйте локально виспером, переводите бесплатными тулами (GoogleTranslate, DeepL, ChatGPT). Да, качество перевода будет хреновое, но смотреть будет можно. Существуют обертки над виспером, которые еще forced alignement делают.

      Кстати, если вы эти видео скачиваете с ютуба, то что вам мешает также скачать ютубовские субтитры и переводы? На английском они более-менее ок (субтитры, переводы очень деревянные).

      В чем суть моего решения:

      1. Транскрибировать фильмы намного сложнее, чем спокойные видео из-за шумов, посторонних звуков, музыки и прочего. Кроме того, ASR-модели работают намного лучше на английском, чем на русском или французском (не говоря уже про более редкие языки, там вообще бывает лютый треш). Я выстроил сложный пайплайн транскрибации ради увеличения точности.

      2. С помощью либо внешних субтитров, либо просто вручную можно свести ошибки транскрибации к нулю

      3. Я делаю качественный адаптивный перевод дорогой моделью (Claude 4.5 Opus)

      4. Я также делаю буквальный пословный перевод, который стоит еще дороже, чем адаптивный перевод строк

      5. Я упаковываю это все в плеер, специально сделанный для изучения языков


      1. punhin
        10.02.2026 15:46

        Перевод нужен для технических видео - в них нет посторонних шумов и музыки (хотя... в некоторых видео музыка всё же может быть подложена фоном, но таких видео немного). Литературность и близость к оригиналу особого значения не имеет - всё равно что-то будет домысливаться. Важно, чтобы текст обратно озвучивался (тяжело смотреть на экран, чтобы уловить, куда там мышкой ткнули в меню, и оно тут же исчезло). Важен темп речи (чтобы когда на английском тараторят, русский перевод не должен запаздывать). Важно, чтобы не приходилось вручную бить задачу на огромное количество однотипных кусочков (как озвучка текста некоторыми нейросетями, где лимит на длину фрагмента в районе тысячи знаков или даже меньше). Хотя, если разобраться, озвучка такими короткими фрагментами упрощает последующую связку голоса с видео... но для меня здесь пока что очень много неясностей, что и как делать...

        Возможно, ближе к лету у меня появится чуть больше свободного времени и я доберусь до автоматизации пайплайна озвучки. По идее, можно вручную нарезать исходное видео на короткие фрагменты (чтобы попасть в естественные паузы между фразами), после чего выстроить конвейер stt - перевод - tts, после чего скорректировать скорость итогового аудио, чтобы время звучания совпало с оригиналом, и склеить аудио с видео. Всё, что после этого останется сделать, так это склеить из кусочков целое видео.

        Возможно, я что-то упускаю, и уже появились нейросети, сразу дающие или перевод речи в виде печатного текста или в виде речи на другом языке?


        1. einhorn Автор
          10.02.2026 15:46

          Возможно, я что-то упускаю, и уже появились нейросети, сразу дающие или перевод речи в виде печатного текста или в виде речи на другом языке?

          Есть такие. Только результаты не очень.

          Если платно - то у ElevenLabs есть сервис, который делает то что вам нужно end-to-end

          Если самому мастерить локально:

          1. Для ASR вам виспера хватит за глаза

          2. Для TTS тоже есть нормальные локальные модели

          3. Самая сложная часть - это перевод. Во-первых, придется делать инференс тяжелой модели; во-вторых, качество перевода будет плохое


          1. rPman
            10.02.2026 15:46

            Автоматический перевд - самая большая проблема!

            Можно соорудить агента, который по размеченному диалогу с шага диаризации (текст разделен на блоки репликами и временными интервалами, помечен как диалог):

            выправит разделение на блоки (все на этом экономят, очень важно починить то что сломано дешевыми алгоритмами до...) и связность диаризации (хотя бы не назначить несколько голосов одному реальному участнику)

            затем пройдет по тексту для выявления особенностей контекста, критичных для языка, например имена и названия, пол участника для русского, к кому обращаются уровни вежливости, роли, живое/не живое и количества, стилистику типа юмор/официоз.. контекст вообще беда. Все это тысячекратно ломается при ошибках диаризации и неверной группировки текста. А еще при переводе фантастики можно споткнуться о смену контекста (игры со временем, смена пола, взросление и смена стиля и т.п.)

            затем пройдет по тексту, давая черновой перевод с пометками по культурным и языковым особенностям (вот буквально в результате будет исходный текст, перевод, комментарии и так по всем абзацам)

            и на последнем шаге агент должен пройтись по этой простыне и сделать из нее итоговый перевод.

            p.s. в полуручном режиме что то я уже пробовал делать, это работает, и с современными моделями реально автоматизировать практически все.
            Я работал с художественным текстом, и модели способны по содержимому разметить текст на участников и типы высказываний (внутренний диалог и внешний).


    1. youngmysteriouslight
      10.02.2026 15:46

      Небольшой оффтоп: есть какая-то специфика по содержанию этих видео? Например, хорошая методическая проработка или специализация по решаемым прикладным задачам? Для выбранной цели не окажется ли, что есть русскоязычные материалы, языковая доступность которых покрывает содержательное преимущество иноязычных? Или это собирается для личных целей исходя из личных хаотичных предпочтений.


      1. punhin
        10.02.2026 15:46

        В русскоязычные материалы всё это, конечно же, придёт, но может быть через несколько лет, а скорее всего - никогда-нибудь (особенно если ручеёк из англоязычного интернета иссякнет). Вот появился в блендере (в версии 2.8) классный инструмент grease pencil - видео по нему выходило и выходит максимум на десяти каналах на ютюбе, в печатном варианте году в 2020 вышла небольшая книга по той версии гризпенсила, её на русский не так давно перевели энтузиасты, а в пятом блендере уже новый гризпенсил, и с тех пор в самом блендере многое изменилось. Некоторые видео с упомянутых каналов так или иначе попали во всевозможные курсы на онлайн-платформах, и они порой бывают доступны в переводах благодаря пиратам и торрентам (и то, в последние года два-три торренты очень жёстко почистили от курсов, почти ничего там не осталось).

        Примерно такая же история и с другими программами - по крите литературы и видео на русском ноль (на ютюбе - часовые и многочасовые курсы), по гимпу - все книги на русском относятся к версии 2.4-2.6, а это было 20 лет назад (на озоне купил книгу, датированную 2022, кажется, годом, так там внутри та же версия 2.4), сегодня на ютюбе куча видеокурсов длительностью по 1-4-10 часов уже по гимпу-3.0-3.1, по godot - есть пара книг на русском, но достать их проблематично, да и по третьей версии они, сейчас уже dthcbz 4.6 вышла, видео на русском - по большей части по третьей версии, четвёртая версия - практически всё на английском.

        Да и потом, сами видите, что происходит с ютюбом... раньше зашёл на него, нашёл интересное видео, посмотрел в переводе или вообще - скормил ссылку загрузчику... Если бы можно было спокойно открыть браузер и смотреть в переводе яндекса нужное мне видео, я бы не стал городить такой огород с нейросетями, но, видимо, придётся...


        1. youngmysteriouslight
          10.02.2026 15:46

          Благодарю за детальный ответ. Я сам сейчас в поисках материалов для «юного дизайнера», причём русскоязычного. На ютубе полно разных видео, но их поди найди. Есть каталог уроков на ютубе, но он только по Inkscape. На других площадках разнообразие и качество уроков сильно уступает ютубу.

          В целом, описанная Вами ситуация понятна.

          P.S. если будут легко разворачиваемые локально сервисы, вроде описанных выше, станет легче.


  1. slavius
    10.02.2026 15:46

    Огромное спасибо за Ваш труд! Для языков - самое то!