MediaChef

MediaChef Видео в SRT

Сделать субтитры SRT из видео

Перетащите видео в MediaChef, выберите «Субтитры к видео (SRT)», оставьте модель small и язык «авто» и запустите. Рядом с видео появится файл .srt — уже с таймингами. Всё считается на вашей машине: речь не уходит с диска, а после того как модель скачана, рецепт работает с выключенной сетью. На ноутбуке с M5 две минуты сорок три секунды речи заняли 6,2 секунды на модели по умолчанию — примерно в 26 раз быстрее реального времени — и дали 73 реплики в среднем по 39 знаков, то есть короткие настолько, что их успеваешь прочитать.

Что нужно
MediaChef 0.8.5 плюс разовая загрузка модели
Модель по умолчанию
small — 488 МБ, качается один раз и остаётся
Скорость
≈26× реального времени на модели по умолчанию (замер, M5)
Работает офлайн
Да, после того как модель легла на диск
Форматы
SRT, VTT, обычный TXT и JSON — под каждый свой рецепт
Что получится
clip.subs.srt рядом с видео, само видео не тронуто

Бесплатно и с открытым кодом — код на GitHub Все файлы и заметки о релизе

Как сделать субтитры к видео

  1. Скачайте MediaChef

    Один файл под macOS, Windows или Linux. И FFmpeg, и запускалка Whisper едут внутри загрузки — отдельно ставить нечего и в PATH прописывать нечего.

  2. Один раз скачайте модель

    Первая расшифровка попросит речевую модель. По умолчанию это small на 488 МБ, на ней и сделаны все замеры ниже; tiny весит 78 МБ, base — 148 МБ, large-v3-turbo — 1,62 ГБ. Качается один раз, остаётся на диске, и дальше рецепт к сети не обращается.

  3. Бросьте видео и выберите рецепт

    «Субтитры к видео (SRT)» берёт видео напрямую — вытаскивать звук заранее не нужно. MediaChef сам декодирует дорожку в моно 16 кГц, которое требует Whisper, во временной папке, которую вы никогда не увидите.

  4. Запустите и откройте .srt

    Файл ляжет рядом с видео под именем clip.subs.srt — с нумерованными репликами и таймкодами. Плееры, монтажки и видеоплощадки читают его напрямую, а так как это обычный текст, имя или термин можно поправить в любом редакторе.

MediaChef готов к конвертации: рабочий стол ждёт видеофайл, очередь задач справа.
Стол, на который падает видео. Рецепты появляются, когда MediaChef прочитал файл.

Какую модель брать

Четыре модели, одна и та же речь длиной 2 минуты 43 секунды, одна и та же машина — ноутбук на M5 с 16 ГБ. Каждую модель сначала прогревали, в зачёт шёл лучший из двух прогонов.

МодельЗагрузкаВремяК реальному времениСлов мимо
tiny78 МБ2,1 с×785 из 540
base148 МБ2,6 с×633 из 540
small — по умолчанию488 МБ6,2 с×260 из 540
large-v3-turbo1,62 ГБ11,5 с×141 из 540

Последний столбец читайте с поправкой: тестовое аудио — синтезированный голос, читающий заранее написанный текст, без акцента, без фонового шума и без перебивок. Поэтому здесь почти безупречна даже самая маленькая модель, и на запись реальной планёрки это не похоже — на трудном звуке разрыв между моделями заметно больше. А вот столбец со временем переносится на вашу задачу напрямую. И ещё одно, что скрывает голое сравнение: почти все расхождения — это числа, записанные цифрами вместо слов; large-v3-turbo писал «70», «10», «50», «30» там, где в тексте они были прописью. Это оформление, а не ослышка.

Какой длины выходят реплики

Формально верный субтитр всё равно бесполезен, если выкидывает на экран двадцать слов разом. Одну и ту же речь модели режут очень по-разному — замер с того же прогона.

МодельРепликСредняя длительностьЗнаков в среднемСамая длинная
tiny354,7 с8397 знаков
base354,7 с83100 знаков
small — по умолчанию732,2 с3958 знаков
large-v3-turbo305,4 с97112 знаков

Общепринятая вещательная норма — примерно 42 знака в строке на две строки, то есть около 84 знаков на экране одновременно. По этой мерке из четырёх спокойно укладывается только small: 39 знаков в среднем и 58 в самой длинной реплике, тогда как large-v3-turbo выходит за предел уже на типовой. То есть модель по умолчанию — не только сбалансированный выбор по точности, она ещё и режет речь на самые читаемые куски.

SRT, VTT, обычный текст или JSON

Одна и та же расшифровка, записанная четырьмя способами. Размеры — с той же речи в 2 минуты 43 секунды, так что сравнивать их можно напрямую.

ФорматРазмерЧто внутриКогда брать
SRT5,5 КБНумерованные реплики, тайминги через запятую: 00:00:00,000Почти всегда. Его понимают плееры, монтажки и площадки
VTT5,3 КБЗаголовок WEBVTT, тайминги через точку: 00:00:00.000Субтитры для веб-плеера, дорожка в браузере
TXT3,0 КБСплошной текст, таймингов нет вовсеНужны слова, а не субтитры
JSON15,2 КБВсе реплики плюс модель и параметры прогонаЧитать это будет программа, а не человек

SRT и VTT различаются в основном знаком между секундами и миллисекундами, так что если плеер отказался от одного, второй — это смена рецепта, а не новая расшифровка. JSON примерно втрое тяжелее SRT, потому что несёт рядом с текстом ещё и служебные данные прогона.

Какой рецепт под какую задачу

Субтитры — это не один рецепт, а несколько, и выбор правильного экономит шаг. Все они лежат в каталоге из 17 рецептов.

Что естьЧто нужноРецепт
ВидеоСубтитры рядом с нимСубтитры к видео (SRT)
АудиофайлСубтитрыАудио в субтитры SRT
Речь на другом языкеАнглийские субтитры за один проходПеревод речи в английские субтитры
Что угодно с речьюТолько текстАудио в текст
Что угодно с речьюДорожка для веб-плеераАудио в субтитры WebVTT

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

Зачем делать субтитры у себя на машине

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

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

Работает с выключенной сетью. Как только файл модели лёг на диск, рецепт к интернету не обращается вообще. Он работает в самолёте, на закрытой машине и в комнате, где вайфай — самая ненадёжная из присутствующих вещей.

Нет предела по длине. Бесплатные веб-расшифровщики обычно режут по нескольким минутам на файл — ровно тогда, когда запись стоит расшифровывать именно потому, что она длинная. Здесь предела нет.

Хоть целая папка сразу. Бросьте каталог записей: очередь пройдёт по ним по одной и скажет, куда лёг каждый файл субтитров.

Когда это не тот инструмент

Рецепт пишет файл субтитров. Это уже, чем «наложить субтитры на видео», и разница важна вот в каких случаях.

  1. Нужно вжечь субтитры в картинку.

    Здесь получается отдельный .srt, который плеер подгружает рядом с видео. Впечатать текст прямо в кадры — другая операция: она перекодирует видео, и после неё слова уже не выключить и не поправить.

  2. Нужна вещательная точность.

    Даже на чистом звуке из замеров выше модели спотыкались на нескольких словах, а живые записи труднее. Всё, что публикуется под требования доступности, перед выпуском вычитывает человек — чем бы ни был сделан черновик.

  3. Звук действительно плохой.

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

  4. Нужен перевод не на английский.

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

Вопросы

Это бесплатно?

Да, целиком. MediaChef открыт под GPL-3.0: платной версии нет, поминутной оплаты нет, ограничения на длину файла нет. Модели тоже качаются бесплатно. Текущая версия — 0.8.5.

Моё видео куда-нибудь загружается?

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

Сколько это занимает времени?

Примерно в 26 раз быстрее реального времени на модели по умолчанию: мы намеряли 6,2 секунды на 2 минуты 43 секунды речи, ноутбук на M5. По этому отношению часовая запись укладывается в пару минут. На том же аудио tiny дала ×78, а large-v3-turbo — ×14.

Какую модель выбрать?

Начните с small, она стоит по умолчанию. В наших замерах она не ошиблась в тестовом аудио ни в одном слове и дала самые читаемые реплики — 39 знаков в среднем против 97 у large-v3-turbo. Поднимайтесь выше, только если звук трудный; спускайтесь до tiny или base, если нужен черновик за пару секунд.

Сколько весит модель?

78 МБ у tiny, 148 МБ у base, 488 МБ у small, 1,62 ГБ у large-v3-turbo. Загрузка разовая. Дальше файл лежит на диске, и каждый следующий прогон берёт его молча.

Нужно ли указывать язык речи?

Нет. Язык по умолчанию стоит на «авто», и модель определяет его сама по звуку. Указать явно всё-таки можно, и это стоит делать, когда запись открывается парой фраз на другом языке.

Может ли она перевести субтитры на английский?

Да, рецептом «Перевод речи в английские субтитры»: на входе иностранная речь, на выходе английский SRT с таймингами, за один проход, а не «сначала расшифровать, потом перевести». Английский — единственный язык перевода, который поддерживает модель.

Чем SRT отличается от VTT?

В основном знаками в таймкодах: SRT пишет 00:00:00,000 через запятую и нумерует реплики, VTT пишет 00:00:00.000 через точку и начинается строкой WEBVTT. SRT ждут плееры и монтажки, VTT нужен веб-плееру для его собственной дорожки субтитров. Это разные рецепты, так что смена формата — повторный прогон, а не переписывание файла.

Субтитры можно потом править?

Да, .srt — обычный текст. Откройте в любом редакторе и поправьте имя, термин или тайминг. Это и есть нормальный порядок работы: девяносто с чем-то процентов делает модель, остальное вы дописываете руками.

Почему у меня слишком длинные реплики?

Потому что модель сама решает, где резать, и чем крупнее модель, тем реже она это делает. Мы намеряли 39 знаков на реплику у small против 97 у large-v3-turbo на одном и том же аудио. Если реплики расползаются, переход обратно на small обычно это чинит — и на чистой речи ничего не стоит в точности.

Различает ли она говорящих?

Нет. Whisper пишет, что было сказано, а не кем. Если нужны пометки «Говорящий 1 / Говорящий 2», их придётся расставить руками или взять инструмент, сделанный именно для этого.

Что будет, если речи в файле нет?

Прогон остановится и скажет, что ничего разборчивого не услышал, а не запишет молча пустой файл. Тишина субтитров не даёт — так задумано.

Работает ли на Windows и Linux?

На всех трёх платформах. Речь везде считается на процессоре, а на Apple Silicon дополнительно задействуется видеоядро — отсюда и быстрые цифры выше. Тот же рецепт на скромном ноутбуке с Windows будет медленнее, но всё равно быстрее, чем слушать запись целиком.

Можно расшифровать несколько файлов разом?

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

Само видео меняется?

Нет. Рядом пишется отдельный .srt — clip.subs.srt, — а видео не изменяется, не переименовывается и не перекодируется. Картинки этот рецепт не касается вообще.

Сделайте субтитры к этому видео

MediaChef 0.8.5 — бесплатно, открытый код, macOS · Windows · Linux.

Бесплатно и с открытым кодом — код на GitHub Все файлы и заметки о релизе

MediaChef — молодой проект: сборки пока без подписи Apple и Microsoft, поэтому первый запуск попросит подтверждение — простая инструкция лежит внутри каждого архива.

Что-то не работает или чего-то не хватает? Напишите: hello@mediachef.app