Субтитры Whisper: SRT, VTT и проверка таймкодов
См. также — глоссарий
Для субтитров важны не только слова, но и время, за которое их можно прочитать. Пример пишет SRT и WebVTT из одинаковых таймкодов сегментов, а также обычный текст и JSON. Он не встраивает титры в видеокадры и не определяет спикеров.
Получите четыре формата
После установки и загрузки модели выполните:
python transcribe.py --input input/lecture.mp4 --output output-subtitles \
--cache models --model small --language auto --offline
ls output-subtitles/lecture.mp4/
Откройте transcript.srt в плеере или редакторе с поддержкой SRT либо используйте transcript.vtt для WebVTT-дорожки. В SRT миллисекунды отделены запятой, блоки пронумерованы; VTT начинается с WEBVTT и использует точку. Все файлы записываются в UTF-8, включая русский текст.
Пример создаёт один блок на распознанный сегмент. Символы разметки экранируются, переносы внутри текста сворачиваются, чтобы распознанная строка не превращалась в произвольную разметку субтитров. Это базовый экспорт: автоматического ограничения длины строки, скорости чтения или проверки вещательного стандарта нет.
Проверка перед публикацией
- Просмотрите начало, середину и конец с подключённым файлом субтитров. Проверяйте синхронизацию с точной версией видео, а не с иначе обрезанным экспортом.
- Исправляйте имена, числа и пропуски на слух. Правдоподобная фраза не доказывает, что она прозвучала.
- Разбейте длинные блоки в редакторе, расставьте переносы и проверьте время чтения. Не переносите фразу в интервал, где уже говорит другой человек.
- Проверьте тихую речь, музыку и тишину на выдуманные титры. На коротком проблемном фрагменте сравните VAD и запуск без него.
- Сохраните отредактированную копию вне каталога результатов примера. Манифест с контрольными суммами намеренно считает правку сгенерированных файлов изменением результата.
Таймкоды сегментов не равны alignment
Экспортированные интервалы относятся к сегментам ASR. Это не forced alignment и не границы реплик разных людей. Таймкоды слов и инструменты выравнивания позволяют строить более точные процессы, но пересекающаяся речь, шум и поддержка языка требуют отдельной проверки. Пример не обещает покадровую точность. См. таймкоды слов и диаризацию.
Если клип вырезан из середины записи, перед переносом субтитров на полное видео добавьте исходное смещение. Повторный запуск пропускает завершённый файл; для другого языка или фильтра нужен новый выходной каталог. Подробнее о повторном запуске.
Готовы запустить?
Запустить GPU-сервер