AiSrt: переводите, извлекайте и транскрибируйте субтитры (обновление)

AiSrt: переводите, извлекайте и расшифровывайте субтитры с помощью искусственного интеллекта

Бесплатный инструмент, который делает видео доступными на 29 языках для глухих, слабослышащих и всех любителей многоязычного контента

У вас есть видео с субтитрами на английском, и вы хотели бы получить их на французском, испанском, арабском или японском? Или фильм без единого субтитра, из которого вы хотели бы извлечь .srt ? Именно для этого я и написал AiSrt.

AiSrt это инструмент командной строки, который использует ИИ, чтобы переводить ваши файлы субтитров .srt, извлекать дорожки, уже встроенные в ваши видеофайлы, и расшифровывать аудио из видео прямо в субтитры. Все три функции в одном бинарном файле.

Для перевода на выбор есть пять движков. API OpenAI, Anthropic (Claude), Google (Gemini) и xAI (Grok) стоят несколько центов за фильм. Или сервер Ollama, который работает на вашем собственном компьютере: бесплатно, офлайн, без ключа, без аккаунта. Ваши субтитры не покидают ваш жёсткий диск.

А если в видео нет субтитров, AiSrt обращается к Whisper, модели распознавания речи от OpenAI, которая сама превращает аудиодорожку в .srt. Честно говоря, когда я впервые увидел, как часовая конференция превращается в видео с субтитрами без того, чтобы я набрал хоть одну строчку, меня это тронуло.

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


Зачем нужен AiSrt?

  • Сначала доступность. Глухие и слабослышащие люди заслуживают простого доступа к видеоконтенту. Создание и перевод субтитров должны занимать несколько минут, а не целый вечер.
  • 29 языков. Арабский, немецкий, английский, китайский, корейский, датский, испанский, финский, французский, греческий, хинди, иврит, венгерский, индонезийский, итальянский, японский, малайский, нидерландский, норвежский, польский, португальский, румынский, русский, шведский, чешский, тайский, турецкий, украинский и вьетнамский.
  • Перевод, который понимает контекст. В этом и есть вся разница с переводчиком слово в слово: идиомы, юмор и игра слов передаются гораздо лучше.
  • Три функции в одном инструменте: перевод, извлечение, расшифровка.
  • Даже субтитры, которые являются изображениями. Дорожки PGS с Blu-ray читаются с помощью распознавания символов, а затем проверяются ИИ, чтобы исправить то, что OCR распознал неправильно.
  • Пять движков перевода на выбор. OpenAI, Claude, Gemini, Grok или Ollama, с вашим собственным ключом, который можно сменить одной настройкой.
  • Бесплатно и офлайн, если хотите. Если Ollama установлен на вашем компьютере, перевод ничего не стоит, не требует ключа и никуда ничего не отправляет. Удобно для контента, который вы не хотите пропускать через сторонний сервис.
  • Ничего не нужно устанавливать отдельно. Бинарный файл автономен, скачивать среду выполнения .NET не нужно, всё уже внутри. А ffmpeg и whisper.cpp автоматически загружаются в Windows и Linux в тот момент, когда они нужны.
  • Ускорение NVIDIA в Windows. Если AiSrt обнаруживает вашу видеокарту, он переключается на CUDA-версию whisper, и расшифровка идёт заметно быстрее.

Установка

Требования

На самом деле ничего обязательного. Извлечение и расшифровка работают без ключа, без аккаунта и без отправки чего-либо куда-либо.

Для перевода вам понадобится ключ одного из четырёх платных сервисов (OpenAI, Anthropic, Google или xAI), либо Ollama, установленный на вашем компьютере, который бесплатен и работает офлайн. В двух следующих разделах объясняется и то и другое, выбирайте тот вариант, который вам подходит.

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

Среду выполнения устанавливать не нужно: каждый архив содержит автономный исполняемый файл для вашей системы.

  1. Скачайте ниже архив, который соответствует вашей машине: Windows x64, Linux x64 или macOS (Apple Silicon M1 à M4, или Intel x64).
  2. Распакуйте его в нужную вам папку.
  3. Необязательно : добавьте эту папку в переменную окружения PATH, чтобы вызывать aisrt из любого терминала.

В macOS, если система отказывается запускать бинарник, откройте Терминал в этой папке и выполните chmod +x aisrt, затем xattr -cr aisrt. Сборки macOS подписаны и нотариально заверены, так что, в принципе, вам это не понадобится.

Ключ API у выбранного вами сервиса

Ещё раз : это только для перевода.

  1. Зайдите на platform.openai.com и создайте аккаунт или войдите в него.
  2. Откройте API Keys через меню своего профиля в правом верхнем углу.
  3. Нажмите Create new secret key.
  4. Дайте ему название, например AiSrt, и подтвердите.
  5. Скопируйте ключ сразу, больше он никогда не отобразится.
  6. Вставьте его в appsettings.json, вместо "OPENAI_KEY" :
{
  "OpenAI": {
    "ApiKey": "sk-votre-cle-api-ici",
    "Model": "gpt-5-mini",
    "Temperature": 1
  }
}

Этот файл находится рядом с исполняемым файлом. После установки AiSrt он читается из %LOCALAPPDATA%\AiSrt\appsettings.json в Windows и из ~/.config/aisrt/appsettings.json в Linux и macOS.

Совет : вы также можете хранить ключ отдельно в файле .env. Добавьте "UseSecretEnvFile": true в appsettings.json, укажите путь к файлу и запишите в него строку OPENAI_KEY=sk-votre-cle-api-ici. Именно так я делаю у себя дома, это позволяет не таскать свой ключ в конфигурационном файле, которым делишься не глядя.

Стоимость : OpenAI взимает плату за использование, а один субтитр потребляет совсем немного. На целый фильм с gpt-5-mini уйдёт несколько центов.

А если вы предпочитаете Claude, Gemini или Grok

С этой версии OpenAI больше не единственный платный сервис. Ещё три делают ровно ту же работу с вашим собственным ключом: Anthropic для Claude, Google AI Studio для Gemini и xAI для Grok. Везде всё одинаково: вы создаёте аккаунт, генерируете ключ и вставляете его в appsettings.json.

У каждого сервиса есть свой раздел с уже заполненной моделью по умолчанию:

{
  "Translation": { "Provider": "anthropic" },
  "Anthropic": { "ApiKey": "sk-ant-votre-cle", "Model": "claude-haiku-4-5" },
  "Gemini":    { "ApiKey": "votre-cle",        "Model": "gemini-3.6-flash" },
  "Xai":       { "ApiKey": "xai-votre-cle",    "Model": "grok-4.5" }
}

А чтобы попробовать сервис, не трогая файл, есть опция --provider:

aisrt "film.srt" -t fr --provider anthropic
aisrt "film.srt" -t fr --provider gemini
aisrt "film.srt" -t fr --provider grok

Поддерживаются привычные названия, так что claude, google, grok и gpt работают так же хорошо, как официальные названия. Я добавил их, потому что сам путал их в одном случае из двух.

Одна деталь, которая стоила мне целого вечера: каждый сервис принимает два названия переменной окружения для своего ключа, например ANTHROPIC_API_KEY или CLAUDE_API_KEY. Я заполнил свой файл .env названием модели, а не названием компании, и AiSrt вежливо объяснял мне, что мой ключ отсутствует. Он был на месте, просто под названием, которое программа не проверяла.

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


Или: переводить бесплатно у себя с Ollama

Не хотите создавать аккаунт OpenAI или не хотите, чтобы ваши файлы отправлялись третьей стороне? Установите Ollama, которая запускает языковую модель прямо на вашей машине. Это бесплатно, без ограничений, и после загрузки модели работает без подключения к интернету.

Три этапа:

# 1. Installer Ollama depuis ollama.com, puis demarrer le serveur
ollama serve

# 2. Telecharger le modele livre par defaut
ollama pull gpt-oss:20b

# 3. Traduire, en local
aisrt "film.srt" -t fr --provider ollama

Опция --provider действует для текущей команды. Если вы хотите, чтобы Ollama стал вашим движком по умолчанию, добавьте "Provider": "ollama" в раздел Translation файла appsettings.json, и больше вам не придётся об этом думать.

Какую модель выбрать? Я протестировал несколько, и ответ меня удивил. Локальная модель должна соблюдать очень строгий формат вывода, один переведённый блок на каждый отправленный блок, по порядку, без комментариев. Некоторые вообще с этим не справляются: qwen2.5 три раза из трёх вставляла мне замечания на китайском посреди субтитров, даже когда я максимально её ограничивал. Это непригодно для использования. llama3.1:8b справляется очень хорошо и работает примерно в десять раз быстрее. gpt-oss:20b я поставляю по умолчанию, потому что во время моих испытаний она ни разу не потеряла ни одного блока, но она заметно тяжелее (примерно 14 ГБ) и медленнее.

Будем честны насчёт компромисса: локальный вариант бесплатный, но медленный, а качество остаётся ниже того, что выдаёт gpt-5-mini. Для фильма, который вы будете смотреть сегодня вечером, API OpenAI за три цента удобнее. Чтобы обработать целый сезон, не глядя на счётчик, или для чувствительного контента Ollama становится интересной.

Одна вещь, из-за которой я потерял время и от которой избавлю вас: AiSrt обращается к Ollama через её родной API и задаёт ей достаточное окно контекста. Если использовать слой совместимости OpenAI в Ollama, эта настройка игнорируется, модель молча обрезает свой ответ, и в итоге в финальном файле оказываются пропущенные блоки. За вас это уже сделано, но это объясняет, почему локально партии меньше (10 блоков вместо 40).


Что происходит до запуска

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

Первая смотрит на файл, который вы ей даёте. Если вы введёте aisrt film.mkv, забыв указать опцию, AiSrt ответит вам, что это видео, и подскажет --extract или --transcribe. Раньше она читала двоичный файл как текст и отправляла его как есть ИИ, который отвечал непонятной ошибкой о размере запроса. Кстати, если вы дадите ей субтитр не в формате .srt (а в .ass, .vtt, .sub), она сама конвертирует его с помощью ffmpeg и продолжает перевод.

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

Руководство пользователя

Общий синтаксис

aisrt [<fichier>] [options]

Все опции

ОпцияОписаниеЗначение по умолчанию
<file>Путь к файлу .srt для перевода или к видеофайлу с --extract и --transcribeнет
-t, --target <code>Код целевого языкаfr
-s, --source <code>Код исходного языкаen
--languagesОтображает 29 языков и их кодынет
--streamsПеречисляет дорожки субтитров видео, ничего не извлекаянет
--extractИзвлекает дорожки субтитров видео, с интерактивным выбором. Дорожки с изображениями считываются с помощью OCRнет
--transcribeРасшифровывает аудио видеофайла в .srt с помощью whisper.cppнет
-p, --provider <nom>Движок перевода: openai, anthropic, gemini, xai или ollamaиз appsettings.json
--stream <n|all>С --extract: дорожка для извлечения, без перехода в менюнет
-tt, --translate-to <code>С --extract или --transcribe: переводит результат без каких-либо вопросовнет
-m, --model <nom>С --transcribe: модель whisper, без перехода в менюнет
-al, --audio-language <code>С --transcribe: язык, на котором говорят в видеоопределяется whisper
-ni, --non-interactiveНе задаёт никаких вопросов, применяет значения по умолчаниюнет
--versionОтображает версиюнет
-h, --helpОтображает справкунет

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


1. Перевести субтитры

Основная функция, и та, которой я пользуюсь чаще всего:

# Traduire de l'anglais vers le français (comportement par défaut)
aisrt "film.srt"

# Traduire de l'anglais vers l'espagnol
aisrt "film.srt" -s en -t es

# Traduire du français vers le japonais
aisrt "film.fr.srt" -s fr -t ja

Переведённый файл получает код целевого языка в своём имени: film.fr.srt, film.es.srt и так далее. Предыдущий выходной файл, если он уже существует, перед перезаписью копируется в .bak.srt.

Перевод запускается партиями по 40 блоков, и каждая партия записывается на диск сразу после завершения. Вот как это выглядит у меня на полнометражном фильме:

Окно терминала, перевод выполняется, прогресс по партиям и прошедшее время

598 блоков, разбитых на 15 партий, и ты видишь, как справа накапливается время: примерно минута на партию, чуть меньше пятнадцати минут на весь фильм. Если всё оборвётся на партии 13, повторный запуск той же команды продолжится с партии 13.

2. Перечислить дорожки видео

Перед извлечением можно посмотреть, что есть в файле:

aisrt --streams "film.mkv"

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

3. Извлечь субтитры из видео

Во многих MKV и MP4 субтитры уже встроены. Лучше забрать их, чем делать заново:

aisrt --extract "film.mkv"

Меню позволяет выбрать дорожку или извлечь всё сразу. Текстовые форматы поддерживаются (SRT, ASS, SSA, WebVTT, mov_text). Дорожки PGS, те, что используются на Blu-ray, являются изображениями: теперь они читаются с помощью распознавания символов, и им посвящён следующий раздел. Дорожки с DVD и цифрового телевидения пока не декодируются, но AiSrt ясно сообщает тебе об этом, вместо того чтобы молча их пропускать. После завершения извлечения он предлагает сразу перевести каждую дорожку, используя язык дорожки как исходный язык.

Примечание: ffmpeg автоматически скачивается в Windows и Linux, если его ещё нет на твоём компьютере. В macOS установи его с помощью brew install ffmpeg.

4. Транскрибировать аудио в субтитры

В видео вообще нет субтитров? Сделаем их с помощью whisper.cpp:

aisrt --transcribe "film.mkv"

При первом запуске AiSrt спросит тебя, какую модель распознавания речи использовать:

  • base.en, примерно 150 Mo: быстро, нормально работает с чётко произносимым английским
  • small.en, примерно 500 Mo: хороший компромисс
  • medium.en, примерно 1,5 Go: точнее, медленнее
  • base, small, medium: те же размеры, но мультиязычные
  • large-v3, примерно 3 Go: самая точная, мультиязычная и самая медленная

Ты можешь пропустить это меню с помощью --model, если уже знаешь, что тебе нужно.

Транскрибировать что-то кроме английского

Раньше AiSrt предполагал, что ты дашь ему английский. Это была очень плохая идея: речь на французском превращалась в приблизительные английские субтитры, без единого предупреждения, а если ты затем запускал перевод, то получал французский, переведённый обратно с этого английского. Испорченный телефон с твоими собственными видео.

Теперь whisper определяет язык речи, а AiSrt подхватывает его ответ на лету. Тебе ничего не нужно указывать, и созданный файл получает правильный код языка. Ты всё ещё можешь задать его принудительно, если знаешь, что делаешь, с мультиязычной моделью:

aisrt --transcribe "film.mkv" --audio-language fr --model base

Созданный файл тогда называется film.fr.srt, и если ты затем запускаешь перевод, AiSrt знает, что исходный язык французский.

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

В Windows и Linux AiSrt сам скачивает whisper. В Windows он вдобавок обнаруживает видеокарту NVIDIA и выбирает версию CUDA, которая намного быстрее.

В macOS нужно сделать ещё один шаг. Проект whisper.cpp не публикует для неё исполняемый файл командной строки, только фреймворк для разработчиков Apple: поэтому автоматически скачивать нечего. Решение укладывается в одну команду:

brew install whisper-cpp ffmpeg

Тогда AiSrt найдёт инструменты, установленные в твоей системе, и будет пользоваться ими как есть. У меня под рукой нет Mac, чтобы пройти этот сценарий от начала до конца, поэтому если ты на macOS и что-то не работает, напиши мне, мне интересно.


Субтитры, которые являются изображениями

Извлеки дорожку субтитров с Blu-ray, и ты получишь не текст. Ты получишь изображения, по одному на реплику, в формате под названием PGS. Диск хранит не слова, а фотографию слов. Это удобно для сохранения шрифта и точного кинематографического размещения, но становится катастрофой, как только хочется перевести: переводить нечего, есть только пиксели.

До сих пор AiSrt вежливо сообщал тебе, что не умеет этого делать. Теперь умеет.

Что происходит при запуске команды

Ничего нового вводить не нужно, это та же команда, что и раньше:

aisrt --extract "film.mkv"

Если вы выбираете графическую дорожку, AiSrt выполняет три шага подряд. Он извлекает сырую дорожку из контейнера с помощью ffmpeg. Он сам декодирует изображения, по одному на каждый субтитр, заодно получая моменты их показа в том виде, в каком их записал диск. Затем он за один раз передаёт всё в Tesseract, движок распознавания символов (программу, которая читает текст на изображении), для всей дорожки.

Языковой файл Tesseract скачивается автоматически, на языке, который заявлен у дорожки. Для французской дорожки загружается французский, для японской дорожки японский. Вам ничего выбирать не нужно.

Tesseract нужно установить самому

Это единственная зависимость, которую AiSrt не ищет за вас, и это сделано намеренно. ffmpeg и whisper публикуют автономные исполняемые файлы, которые я могу аккуратно скачать. Tesseract не такой: это системные установщики, разные на каждой платформе. Достаточно одной команды:

# Windows
winget install tesseract-ocr.tesseract

# Linux
sudo apt install tesseract-ocr

# macOS
brew install tesseract

Небольшая история, из-за которой я потерял полчаса: в Windows этот установщик не добавляет Tesseract в PATH. Поэтому AiSrt отвечал мне, что инструмент не найден, и предлагал выполнить ровно ту команду, которую я только что выполнил. Петля без выхода. Теперь AiSrt будет искать его в папках, куда установщик действительно кладёт бинарный файл.

ИИ перечитывает то, что прочитал OCR

Движок распознавания символов всегда делает одни и те же ошибки. Вертикальная черта вместо заглавной I. Сочетание r и следующей за ним n превращается в m. Проглоченный акцент. На протяжении целого фильма это в конце концов становится заметно.

Поэтому AiSrt отправляет распознанный текст обратно в ваш сервис перевода с точной инструкцией: исправь ошибки чтения, ничего не переводи, ничего не переформулируй, ничего не сокращай. Это вычитка, а не переписывание. Из 100 субтитров отрывка фильма, который я прогнал через испытания, 14 были исправлены, 86 уже были хорошими, и ни один не был перемещён или выдуман.

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

Эта вычитка включена по умолчанию и использует тот же сервис, который уже переводит. Вы можете её отключить или поручить её другому сервису в appsettings.json. А если ни один ключ не настроен, ничего страшного не произойдёт: текст OCR записывается как есть, AiSrt сообщает вам об этом, и извлечение нормально завершается.

Ошибка, которую я никогда бы не нашёл, если бы не стал её искать

Многие диски показывают и убирают субтитры с плавным появлением и исчезновением. Для этого они не отправляют новое изображение: они используют то же самое, меняя только его прозрачность. AiSrt принимал это изменение за конец субтитра.

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

Теперь AiSrt сохраняет среди последовательных рендеров тот, где текст наиболее читаем. Плавное появление или исчезновение начинается и заканчивается прозрачностью: ни первый, ни последний вариант не подходит.

Что пока ещё не работает

Графические субтитры с DVD и ЦТВ не декодируются. В отличие от PGS, где каждое изображение автономно, эти форматы читаются с использованием информации, хранящейся в другом месте файла. Это другая задача, а не расширение этой. Пока AiSrt распознаёт их и предупреждает вас, вместо того чтобы молча их игнорировать.


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

# Étape 1 : transcrire l'audio anglais
aisrt --transcribe "conference.mp4"
# donne conference.en.srt

# Étape 2 : traduire en français
aisrt "conference.en.srt" -s en -t fr
# donne conference.fr.srt

# Étape 3 : et en espagnol tant qu'à faire
aisrt "conference.en.srt" -s en -t es
# donne conference.es.srt

Три команды, и видео без субтитров становится доступным на трёх языках.

Небольшая деталь, которая важна, если ты всё это скриптуешь: AiSrt возвращает 0, когда всё прошло хорошо, 1 в случае сбоя, и 2, если ты сам отменил операцию. То, что уже записано на диск, остаётся там, и перевод продолжится при следующем запуске.


Автоматизировать всё, без единого вопроса

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

Четыре опции заменяют их, и вся цепочка тогда помещается в одну строку:

# Extraire la piste 2, la traduire en francais, sans jamais rien demander
aisrt --extract "episode.mkv" --stream 2 --translate-to fr --non-interactive

Или для целой папки, в Windows:

Get-ChildItem *.mkv | ForEach-Object {
  aisrt --extract $_.FullName --stream 1 --translate-to fr --non-interactive
}

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

И если ты нажмёшь Ctrl+C в этом режиме, программа сразу остановится, не спрашивая подтверждения. Никого не было бы рядом, чтобы ответить, а вопрос без ответа навсегда заблокировал бы скрипт.


Поддерживаемые языки

КодЯзыкКодЯзыкКодЯзык
arАрабскийcsЧешскийdaДатский
deНемецкийelГреческийenАнглийский
esИспанскийfiФинскийfrФранцузский
heИвритhiХиндиhuВенгерский
idИндонезийскийitИтальянскийjaЯпонский
koКорейскийmsМалайскийnlНидерландский
noНорвежскийplПольскийptПортугальский
roРумынскийruРусскийsvШведский
thТайскийtrТурецкийukУкраинский
viВьетнамскийzhКитайский  

Введите aisrt --languages, чтобы в любой момент снова получить этот список.


Расширенная настройка

Всё настраивается в appsettings.json:

  • Модель, с ключом Model, если вы предпочитаете другую модель OpenAI вместо gpt-5-mini.
  • Размер пакетов, с помощью BatchSize : количество блоков, отправляемых за один запрос, по умолчанию 40.
  • Длина строк, с помощью MaxLineLength : при длине более 50 символов AiSrt разрезает строку, чтобы её было удобно читать на экране.
  • Сетевой тайм-аут, с помощью RequestTimeoutMinutes : по умолчанию 10 минут. Если вы сильно увеличиваете BatchSize, увеличьте и его.
  • Инструкции, данные ИИ, с помощью SystemPrompt и UserInstructionPrompt. Вот где начинается самое интересное : вы можете адаптировать перевод к юридическому, медицинскому, религиозному или техническому контексту, переписав эти два текста. Я специально вынес их из кода именно для этого.
  • Температура, от 0.3 для очень буквального перевода до 1.5 для более свободного перевода. По умолчанию 1.
  • Движок перевода, с помощью Provider в разделе Translation : openai, anthropic, gemini, xai или ollama. Это настройка, действующая для всех ваших команд, тогда как --provider действует только для текущей.
  • Настройки Ollama, в собственном разделе : адрес сервера с помощью BaseUrl, модель с помощью Model, размер пакетов с помощью BatchSize, и размер окна контекста с помощью NumCtx. Если вы увеличиваете первое, не забудьте увеличить и второе.
  • Распознавание символов, в разделе Ocr : резервный язык с помощью DefaultLanguage, режим сегментации tesseract с помощью PageSegMode, и увеличение изображений перед чтением с помощью UpscaleFactor. Два последних параметра ограничены : нелепое значение будет отмечено и заменено, вместо того чтобы сорвать чтение изображения за изображением.
  • Вычитка текста OCR, в Ocr:Proofread : Enabled, чтобы её отключить, Provider, чтобы поручить её другому сервису, а не тому, который переводит, BatchSize, чтобы задать размер пакетов. Два её промпта переписываются так же, как промпты перевода.

Для кого?

  • Глухие и слабослышащие люди, которым нужны субтитры, чтобы каждый день смотреть видео.
  • Создатели контента, которые хотят охватить аудиторию за пределами своего языка.
  • Преподаватели и тренеры, чьи онлайн-курсы заслуживают большего, чем приблизительные автоматические субтитры.
  • Профессиональные переводчики, чтобы за несколько минут подготовить первый черновой вариант.
  • Киноманы и любители сериалов, конечно.
  • Ассоциации и НКО, которые распространяют видео на международном уровне.

AiSrt бесплатен и готов к работе.
Скачайте его, попробуйте, и сделайте свои видео доступными для всех.

Download — Version 1.10.0

Version history
1.10.0 01.08.2026Current
- Cette version regroupe tout ce qui s'est ajoute depuis la 1.6.2. - Trois services de traduction de plus : Anthropic Claude, Google Gemini et xAI Grok, a cote d'OpenAI et d'Ollama. - Le service se choisit avec --provider, ou dans appsettings.json. - Cle absente, cle invalide ou modele inconnu sont detectes avant la premiere traduction, plus au milieu d'un fichier. - La cle peut venir de deux noms de variable d'environnement par service, par exemple ANTHROPIC_API_KEY ou CLAUDE_API_KEY. - Les sous-titres image PGS des Blu-ray sont lus par OCR avec Tesseract, a installer soi-meme. - Le texte reconnu est relu par le service de traduction, qui corrige les erreurs de lecture sans traduire. - Les fondus ne coupent plus les sous-titres image : un sous-titre de quatre secondes ressortait en trois morceaux. - La langue parlee est detectee par whisper au lieu d'etre supposee anglaise. - Un modele whisper anglais seul est refuse sur de l'audio etranger, au lieu d'inventer. - La transcription ne perd plus le premier mot des phrases a cheval sur deux fenetres d'analyse. - Console en UTF-8 sous Windows : les accents s'affichent correctement pendant une transcription. - La notification de mise a jour s'affiche au demarrage, plus a la fin d'une operation d'un quart d'heure. - Ocr:PageSegMode et Ocr:UpscaleFactor sont bornes : une valeur hors limites est signalee et remplacee. - L'aide --help annonce enfin la lecture par OCR des pistes image. - Les sous-titres image de DVD et de la TNT ne sont toujours pas geres : ils sont signales et sautes.
1.6.2 30.07.2026
- Transcription : le premier mot d'une phrase n'est plus perdu quand elle est à cheval sur deux fenêtres d'analyse. « Cette vidéo présente » était transcrit « vidéo présente » — un défaut qui touchait tous les transcripts produits jusqu'ici. - Transcription : plus de répétitions en boucle sur les passages chantés ou musicaux. - Contrepartie assumée de cette correction : les annotations du type [Musique] n'apparaissent plus dans les sous-titres. - Un transcript vide est désormais signalé immédiatement, au lieu d'échouer plus loin sur un fichier jugé illisible.
1.5.1 01.04.2026
- Traduction locale et gratuite avec Ollama. En plus de l'API OpenAI, AiSrt peut traduire via un serveur Ollama qui tourne sur votre machine : aucune clé, aucun compte, aucun envoi vers un service tiers, et un coût nul. Choix du moteur avec --provider openai|ollama, ou de façon permanente dans appsettings.json. - Vérification du moteur de traduction au démarrage. Clé invalide, compte sans crédit, serveur Ollama arrêté ou modèle absent : chaque cas est détecté avant le premier envoi et donne un message avec la commande qui le corrige, au lieu d'échouer au bout de plusieurs minutes. - Le fichier d'entrée est contrôlé avant tout traitement. Lancer aisrt sur un fichier vidéo sans option ne provoque plus d'erreur incompréhensible : AiSrt explique qu'il attendait un sous-titre et indique --extract ou --transcribe. Les sous-titres .ass, .ssa, .vtt et .sub sont convertis automatiquement en .srt avant traduction. - Transcription dans une autre langue que l'anglais, avec --audio-language, et ajout des modèles whisper multilingues base, small et medium. Un modèle anglais uniquement associé à une autre langue est refusé avant de lancer le traitement, au lieu de produire une transcription fausse sans le signaler. - --transcribe propose de traduire le résultat dans la foulée, comme le fait déjà --extract. - Utilisation en script, sans aucune question posée : --stream choisit la piste à extraire, --translate-to la langue de traduction, --model le modèle whisper, et --non-interactive supprime toute lecture au clavier. Une valeur invalide arrête l'exécution avec un message clair plutôt que d'appliquer un comportement inattendu. - Correction : traduire deux pistes d'une même vidéo vers la même langue ne fait plus écraser le premier fichier par le second. - Correction : un fichier verrouillé, un disque plein ou une sauvegarde impossible donnent un message d'erreur au lieu d'un plantage, et une traduction existante n'est jamais remplacée sans sauvegarde préalable. - La vérification de mise à jour ne ralentit plus le démarrage : elle tourne en arrière-plan et son résultat s'affiche à la fin de la commande.
Join the conversation

You need an account to comment on this article. Creating one is free and takes under a minute.

  • The XMLTV file, free to download every day
  • Comment on articles and reply to other readers
  • Get an e-mail when an article you follow is updated

No comments yet.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙