У меня выходит восемнадцать вертикалок в неделю на четыре площадки. И субтитры для Reels и TikTok я делаю последними. Всегда. Ролик собран, публикация в восемь вечера, подписей нет. Дальше я набиваю текст пальцем в редакторе, тайминг гуляет на полсекунды, подписи вшиты в кадр намертво.
Зимой я поменял порядок. Сначала расшифровка с тайм-кодами и файл SRT, потом решаю, выжигать ли текст в пиксели. Оговорюсь сразу. Поля для ссылки нет, мы принимаем файл, так что ролик я скачиваю или экспортирую. Забираем мы 1–2% длительности, берём от 0,29 ₽/мин.
Зачем субтитры в соцсетях, если площадка рисует их сама
Метро. Очередь к врачу. Созвон, где я вырубил микрофон. Кровать в час ночи. Звука нет, и ролик без подписей молчит. Субтитры в тикток и субтитры в reels нужны мне ради этого зрителя. И мне пишут подписчики, которые плохо слышат.
Второй мотив приземлённее. Из расшифровки я вытаскиваю текст, он живёт дальше сам. Описание под видео. Пост в телеграм. А перепечатывать сценарий с экрана, останавливая плеер каждые пять секунд, я больше не сажусь. Пробовал. Сорок минут на один ролик.
Причина третья. Один исходник идёт у меня на Reels, TikTok, Shorts и ВК. Подписи площадки наружу не выходят, и я начинаю сначала. Мы отдаём один текст, я делаю четыре выгрузки.
Три вида субтитров и чем они отличаются на практике
Начну с дешёвого. Автоматические субтитры к видео есть в редакторе каждой площадки, и субтитры в тикток я получаю в два касания. Правлю пальцем, на именах и жаргоне они спотыкаются. Наружу текст не заберу. Для сторис сойдёт. А для ролика, над которым я думал неделю?
Вшитые субтитры (hard-sub) я выжигаю в кадр при экспорте из CapCut. Здесь я хозяин всего. Шрифт, обводка, кегль, положение. А обратная сторона? В марте я заметил опечатку в фамилии спикера через два часа после публикации. Пересборка, экспорт, перезалив, просмотры обнулились.
Файл SRT или VTT ведёт себя иначе. Внутри обычный текст с тайм-кодами. Номер блока, строка вида 00:00:01,240 --> 00:00:03,900, реплика, пустая строка. Я открываю его блокнотом и импортирую в монтажную программу. Зритель в вертикалках видит вшитый текст, и SRT у меня исходник. Про форматы у нас есть разбор, субтитры SRT и VTT.
| Вид | Где живёт | Как правится | Перенос |
|---|---|---|---|
| Автоподписи | в приложении | пальцем | нет |
| Вшитые (hard-sub) | в пикселях | пересборкой | да, с видео |
| Файл SRT или VTT | рядом с видео | в блокноте | да, с исходником |
Как сделать субтитры для Reels и TikTok из видеофайла
Схема на четыре шага, времени просит один. Экспорт, загрузка, SRT, правка. Правка всё и съедает. Мы принимаем mp4, mov, mkv и webm. Если видеофайл тяжёлый, вытаскиваю дорожку в mp3, m4a, wav, ogg или aac. Картинка нам не нужна, мы слушаем. Отдаём txt, json, verbose_json, srt и vtt, для соцсетей беру srt.
- Экспортирую ролик или дорожку. Если музыка поверх голоса, выгружаю до сведения, так мы распознаём точнее.
- Загружаю файл в генератор субтитров и выбираю SRT. VTT беру, если ролик поедет в HTML5-плеер.
- Читаю глазами, правлю имена и жаргон, режу длинные реплики. Одна мысль на кадр, максимум две строки.
- Импортирую SRT в монтажную программу и настраиваю шрифт.
Про точность скажу цифрами. На бенчмарке из семи датасетов мы даём WER 7,10% и WAcc 92,9%, примерно одна ошибка на четырнадцать слов. Рядом ElevenLabs с 6,88%, AssemblyAI с 7,03% и Whisper-large-v3 с 7,44%. Мы в одном коридоре, по третьему знаку я бы не выбирал. Получасовое интервью мы проходим за 25 секунд, у Yandex SpeechKit уходит около 2 минут, у OpenAI около 10 минут. А на моей минутной вертикалке? Разницы я не замечаю.
Отдельно про то, как сделать субтитры в инстаграм. Спрашивают чаще всего. Мобильные редакторы дружат только со своими автоподписями, чужой .srt туда не закинешь. Я правлю файл на компьютере, отдаю в CapCut, публикую с подписями. Крюк? Да. Зато текст я вычитал один раз, и он расходится по площадкам. А длинный исходник я гоню целиком, и транскрибация видео в текст даёт тайм-коды по всему интервью.
Ошибки, из-за которых субтитры портят ролик
Моя самая частая ошибка? Текст уезжает под интерфейс. TikTok закрывает низ кадра описанием и кнопками, справа колонка иконок, Reels добавляет элементы сверху и снизу. В феврале я выложил ролик, где цена легла под кнопку подписки. На мониторе идеально, на телефоне цены не видно. Теперь я держу текст ближе к центру вертикального кадра и проверяю с телефона. До публикации. Не после.
Вторая ошибка растёт из природы расшифровки. Мы пишем дословно. Все мои «ну» и «э-э» попадут в SRT, потому что я их произнёс. Для интервью это достоинство. Для сорокасекундной вертикалки мусор под зачистку. Реплику мы отдаём целиком, а в вертикальный кадр влезают две строки.
Остальное короче.
- Музыка громче голоса. Трек забивает речь и роняет точность у любого движка, и у нас. Расшифровывайте до сведения.
- Двое говорят одновременно. Для диалогов я включаю диаризацию, и реплики разъезжаются по спикерам.
- Склейка посреди слова. Монтаж рубит окончания, и на стыке мы теряем хвост.
- Иноязычные вставки. Языков мы держим около сотни, включая русский и языки СНГ, но расшифровываем на языке речи. Английская фраза в русском ролике английской и останется, перевода у нас нет.
Что сделать с ближайшим роликом
Субтитры в reels вы ставите редактором площадки? Экспортируйте последний ролик в mp4 и прогоните через нас. Сравните наш SRT с тем, что дал редактор. Я так и сделал в январе. Автоподписи переврали название продукта в трёх роликах. Десять минутных роликов стоят примерно 2,9 ₽ по тарифу 0,29 ₽/мин. Подписки у нас нет, секунды округляем вниз, баланс не сгорает. А хотите проверить нас на своём голосе? Отправьте файл в Telegram-бот @VoicePalatineBot. До 100 транскрибаций в день бесплатно.
А если роликов десятки в неделю? Ручная загрузка теряет смысл, и я подключил API, там распознавание файлов и поток по WebSocket, документация на docs.speech.palatine.ru. Инфраструктуру мы держим в четырёх ЦОД Tier III в России, передаём по TLS, работаем по 152-ФЗ, и на ваших записях модели не обучаются.
Сегодня вечером у меня один сорокасекундный ролик. Экспорт, загрузка, SRT, пятнадцать минут на текст и шрифт.