Как сделать субтитры к видео автоматически и вшить их в кадр
Видео на сайте почти всегда стартует без звука: браузеры не дают автоплей со звуком, а человек в офисе или в метро сам его не включит. Поэтому вопрос, как сделать субтитры к видео автоматически, стоит не ради галочки в доступности, а ради того, дойдёт ли до посетителя хоть что-то из ваших сорока секунд.
Хорошая новость: распознавание речи давно перестало быть отдельной работой. Черновик субтитров к минутному ролику делается за пару минут, бесплатно или почти бесплатно.
Плохая новость: черновик нельзя ставить на сайт как есть. Ниже - чем распознавать, вшивать текст в кадр или подключать дорожкой, что обязательно править руками и куда ставить строки, чтобы они не легли поверх кнопки.
Почему видео без субтитров теряет половину смысла
Проверьте на себе. Откройте любой лендинг с автоплеем и вспомните, включали ли вы там звук. Обычно нет: палец тянется к прокрутке раньше, чем к кнопке громкости.
Дальше арифметика простая: если цена, срок и имя спикера произносятся голосом и нигде не написаны на экране, то без звука вы показали красивую картинку и молчание.
- отзывы: имя, компания и конкретный результат звучат голосом и без текста пропадают
- инструкции: названия кнопок и шаги на слух не запоминаются, глазами - да
- короткий ролик в первом экране: одна фраза оффера, которую иначе никто не услышит
Обратная сторона: если речи в ролике нет и это просто атмосферная съёмка офиса, субтитры там не нужны.
Вшить в кадр или отдельной дорожкой
Есть два способа. Вшитые субтитры (их называют hardsub) нарисованы прямо в пикселях видео: их нельзя выключить и нельзя выделить мышью. Отдельная дорожка (softsub) - это текстовый файл SRT или VTT рядом с видео, который плеер накладывает поверх.
- вшитые: работают в любом плеере и в любой соцсети, куда ролик потом уедет
- вшитые: выглядят ровно так, как вы нарисовали - шрифт, положение, подложка
- вшитые: нельзя выключить, нельзя перевести, любая правка означает перекодирование ролика
- дорожка: правится за секунду, файл видео при этом не трогается
- дорожка: можно держать несколько языков и дать зрителю выбор
- дорожка: текст можно скопировать и отдать поисковику
- дорожка: выглядит так, как решил плеер, и половина встраиваемых плееров дорожки просто не поддерживает
Практическое правило: короткие ролики до полутора минут - вшивать, длинные записи вебинаров и уроки в личном кабинете - дорожкой. Если ролик показывается через сторонний виджет, сначала проверьте, умеет ли он внешние субтитры: часто ответ «нет», и выбор отпадает сам.
Чем распознать речь автоматически
Три рабочих пути, от простого к нудному.
- Редактор, в котором вы и так монтируете: Speech to Text в Premiere Pro, распознавание в DaVinci Resolve, автотитры в CapCut. Плюс в том, что править текст и двигать тайминги можно там же, где лежит монтаж.
- Облачный сервис распознавания: Yandex SpeechKit, SaluteSpeech и подобные API. Удобно, когда роликов много и хочется гонять их пачкой скриптом.
- Локальная модель. Whisper ставится на свой компьютер, работает без интернета и не отдаёт запись наружу. Взамен просит нормальное железо и время на прогон.
Бесплатный обходной путь для одного ролика: загрузить его на YouTube как видео с доступом по ссылке, дождаться автоматических субтитров и скачать SRT. Файл потом используется где угодно, даже если само видео вы на YouTube держать не собираетесь.
Важнее выбора сервиса другое: качество распознавания упирается в качество звука. Петличка за пару тысяч рублей даёт больше, чем переход с одной модели на другую.
Вычитка обязательна: что машина путает
Автоматические субтитры - это черновик. На чистой речи он бывает почти готовым, но это «почти» стабильно приходится на самые дорогие слова в ролике.
- имена и фамилии: «Гуськов» легко превращается в «Гусков»
- названия компаний, продуктов и тарифов: модель их не знает и подставляет похожее по звучанию
- цифры: «две тысячи девятьсот» становится то «2900», то «29 00», а рубли и проценты теряются
- термины и аббревиатуры: CRM, API, УТП, названия интеграций
- окончания и падежи в быстрой речи, из-за чего фраза меняет смысл
Приём, который экономит время: соберите словарик из 10-20 слов проекта (бренд, продукты, имена спикеров) и держите его перед глазами при вычитке. Некоторые сервисы умеют принимать такой список заранее и подсказывать модели правильные написания.
По времени вычитка минутного ролика занимает 10-15 минут вместе с таймингами. Это дешевле, чем один клиент, который прочитал название вашего тарифа с ошибкой и решил, что ролик делали на отвяжись.
Как резать текст на строки, чтобы его успевали читать
- Не больше двух строк одновременно. Три строки закрывают кадр, их не дочитывают.
- Примерно 35-40 знаков в строке. Для кириллицы ближе к 35: слова длиннее.
- Одна реплика висит от 1 до 6 секунд. Меньше секунды глаз не успевает, больше шести - зритель перечитывает и отвлекается.
- Резать по смыслу, а не по ширине. «Мы делаем ремонт под ключ за», а следующей строкой «14 дней» - плохо, читается рывками.
- Не дублировать то, что уже написано в кадре титром. Два текста рядом конкурируют, и не читается ни один.
Финальная проверка одна: посмотрите ролик без звука на телефоне, держа его в руке как обычно. Всё, что вы не успели прочитать, не успеет прочитать и посетитель.
Где размещать на кадре, чтобы не перекрыть кнопку
Низ кадра - самое населённое место в видео. Там прогресс-бар плеера, кнопка звука, иногда кнопка призыва к действию, а в вертикальном формате ещё и интерфейс сторис с аватаром и крестиком.
- в горизонтальном 16:9 держите нижние 12-15% высоты свободными и ставьте субтитры над этой зоной
- в вертикальном 9:16 поднимайте блок субтитров примерно на четверть высоты от низа
- правый нижний угол по умолчанию считайте занятым кнопкой звука и не заезжайте туда
- по центру кадра субтитры ставить нельзя: они лягут на лицо говорящего
- белый текст без подложки читается только на тёмном фоне, полупрозрачная плашка или обводка спасают на любом
Проверять это надо не в редакторе, а на живой странице. Соберите тестовую страницу, поставьте туда ролик и посмотрите его с телефона: в видеовиджете и в сторис элементы управления расположены по-разному, и один и тот же экспорт может отлично лечь в одном месте и перекрыться в другом.
Если ролик поедет и на сайт, и в соцсети, безопасные зоны будут разными. Держите мастер без вшитых субтитров и делайте из него два экспорта.
Порядок работы и команды ffmpeg
- Получить черновой SRT автоматически любым способом из раздела выше.
- Вычитать текст. Удобно в Subtitle Edit или Aegisub: видно видео, волну звука и тайминги сразу.
- Поправить разбивку на строки и длительность реплик.
- Вшить в кадр или подключить дорожкой.
Дальше три команды, которые закрывают почти все случаи.
- вшить в кадр: ffmpeg -i in.mp4 -vf "subtitles=subs.srt:force_style='FontSize=22,MarginV=90'" -c:a copy out.mp4
- положить дорожкой внутрь файла: ffmpeg -i in.mp4 -i subs.srt -c copy -c:s mov_text out.mp4
- сделать VTT для браузера: ffmpeg -i subs.srt subs.vtt, дальше подключить его тегом track внутри video
MarginV как раз и поднимает субтитры над кнопками, значение подбирается за две-три попытки. FontSize смотрите на телефоне, а не на мониторе: то, что на 27 дюймах выглядит крупно, на экране 6 дюймов читается с трудом.
Что делать, если видео уже стоит на сайте
Если у вас обычный тег video, самый дешёвый путь - VTT-дорожка. Файл кладётся рядом, видео не перекодируется, правка опечатки занимает секунды.
Если видео крутится через встраиваемый плеер или виджет, сначала проверьте документацию на внешние субтитры. Когда поддержки нет, рабочий вариант остаётся один: вшить и перезалить ролик. Разбор самих способов встраивания есть в статье как добавить видео на сайт.
И последнее, ради чего всё затевалось. После появления субтитров сравните досмотры на тех же страницах до и после: обычно разница видна на первых десяти секундах. Как измерять аккуратно, разобрано в материале про видео и конверсию.
Частые вопросы
Можно ли выложить автоматические субтитры без вычитки?
Технически да, практически нет. Машина стабильно ошибается на именах, названиях и цифрах, то есть ровно на тех словах, ради которых ролик и снимали. Вычитка минутного ролика занимает около 15 минут и окупается первым же зрителем, который не прочитал название вашего продукта с ошибкой.
Помогают ли субтитры поисковому продвижению?
Текст, вшитый в кадр, поисковик не читает - это просто пиксели. Если хотите отдать содержимое ролика поиску, положите рядом текстовую расшифровку на странице или подключите субтитры дорожкой. Заодно расшифровка полезна людям, которые не хотят смотреть видео вообще.
Что делать с двумя языками?
Вшивать два языка в один кадр не стоит: строки съедают половину экрана. Если плеер поддерживает дорожки, добавьте две и дайте зрителю выбор. Если не поддерживает, делайте два экспорта ролика и показывайте нужный по языку страницы.
Нужны ли субтитры, если в ролике нет речи?
Обычно нет, и лишний текст только мешает картинке. Исключение - ролики-инструкции, где полезно подписывать действия: «нажимаем сюда», «ждём загрузки». Это уже не субтитры, а титры, но правила разбивки к ним применяются те же.