Перейти к основному содержимому
SubtitleMatrix

Субтитры в текстовый транскрипт

Экспорт и интеграцияТекстовый транскрипт
Или вставьте текст субтитров

Параметры

Миллисекунды тишины между концом одной реплики и началом следующей. Достигло — транскрипт начинает новый абзац; меньше — два фрагмента читаются как одна непрерывная речь. Число решает, как читается текст, а не что он говорит: 2000 держит предложение вместе, когда субтитры рубят его на три-четыре реплики, а 0 делает каждую реплику отдельным абзацем. Пауза измеряется от последней реплики, где были слова, поэтому пустая реплика в середине не разрывает абзац.

По умолчанию выключено, что даёт простой блок текста для вставки в документ. Включите — и каждый абзац получает префикс [ЧЧ:ММ:СС]: время начала первой реплики абзаца, до секунды, без миллисекунд. По этой метке читатель находит момент в плеере, и начало — единственный из трёх кандидатов (начало, середина, конец абзаца), совпадающий с тем, что показывает плеер.

В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.

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

Главное, о чём стоит договориться сразу, — это перенос строки: в субтитрах он появляется по причине, не имеющей отношения к предложению, строке стало слишком тесно на экране, её разрезали и половины уравновесили, — и страница эти переносы убирает. Абзацы решает тишина, а не реплика: одна реплика на абзац ломала бы предложение каждые три-четыре секунды, потому что обычный файл режет одну произнесённую фразу на несколько реплик, чтобы каждая уложилась в тайминг, — поэтому страница смотрит на паузу между концом одной реплики и началом следующей и открывает новый абзац примерно на двух секундах. Есть и переключатель, который ставит перед каждым абзацем время начала, по умолчанию выключенный: он читается с первой реплики абзаца, пишется до секунды и намеренно теряет миллисекунды, потому что метка нужна читателю, чтобы найти этот момент в плеере, и 00:42:17 для этого достаточно.

Примеры

Две реплики, которые читаются как одно предложение

Вход

1
00:00:01,000 --> 00:00:03,000
I missed the last train home
and had to walk.

2
00:00:03,400 --> 00:00:05,000
Back before midnight,
you said.

3
00:00:09,000 --> 00:00:11,000
Every night this week?

Выход

I missed the last train home and had to walk. Back before midnight, you said.

Every night this week?

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

Пауза ровно в две секунды

Вход

1
00:12:30,000 --> 00:12:32,000
The train was late
again.

2
00:12:34,000 --> 00:12:36,000
Third time this week.

Выход

The train was late again.

Third time this week.

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

Тот же файл с добавленными временами

Вход

1
00:02:15,000 --> 00:02:17,000
Here is where
we came in.

2
01:47:52,000 --> 01:47:55,000
And here is
where we leave.

Выход

[00:02:15] Here is where we came in.

[01:47:52] And here is where we leave.

Когда переключатель времени включён, каждый абзац начинается со времени реплики, которая его открывает, с точностью до секунды. Второй абзац стоит почти через два часа, и по нему видно, зачем час выписывается целиком, а не считается в минутах: 01:47:52 говорит читателю, куда перемотать, а 107:52 — нет.

Частые вопросы

Чем это отличается от сохранения субтитров в файл .txt?

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

Как страница решает, где кончается один абзац и начинается следующий?

По тишине между репликами, а не по самим репликам. Страница измеряет промежуток между концом одной реплики и началом следующей и открывает новый абзац, когда этот промежуток достигает числа в поле паузы, по умолчанию 2000 мс. Реплики, стоящие ближе, читаются как один непрерывный кусок. Абзац на каждую реплику был бы здесь неправдой: одну произнесённую фразу обычно режут на три-четыре реплики, чтобы каждая уложилась в свой тайминг, и разрыв абзаца каждые несколько секунд — не то, как выглядит транскрипт.

Что делает пауза, выставленная в ноль?

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

Почему метки времени точны только до секунды?

Потому что метка в транскрипте — это закладка, а не точка разреза. Она нужна читателю, чтобы снова найти этот фрагмент в плеере, а в программе на час 00:42:17 уже достаточно точно, чтобы попасть на фразу; миллисекунды добавили бы четыре знака в начало каждого абзаца, не изменив, куда кто перематывает. Метка на каждую реплику, до миллисекунды, — это то, для чего существует файл субтитров, и в принесённом файле она уже есть.

Появятся ли в транскрипте имена говорящих?

Нет, и не потому, что страница их выбрасывает. Ни у одного из читаемых форматов нет поля «кто говорит»: SRT, WebVTT, ASS, SSA, SBV, SAMI, MicroDVD, TTML, JSON и CSV хранят отрезок времени и некоторый текст. Если файл называет говорящего, имя набрано внутри реплики, обычно заглавными или через тире, и в транскрипте оно окажется ровно там, куда его поставил файл, и нигде больше. Из формы строк ничего не выводится: догадка, поданная как имя говорящего, была бы хуже, чем отсутствие имени.

Что происходит с репликой, в которой нет текста?

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

Сохраняет ли транскрипт переносы строк, которые были на экране?

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

Похожие инструменты