Формат субтитров видео, загружаемых с YouTube, — VTT. Чтобы преобразовать файлы субтитров VTT в формат SRT или LRC, вы можете использовать библиотеку Python webvtt.
Команда установки: pip install webvtt-py
Основное различие между форматом субтитров WebVTT и форматом субтитров SRT — это формат времени.
Ниже приведен файл субтитров в формате WebVTT.
00:00:20.000 --> 00:00:24.400
En réponse à l'augmentation dramatique
de la criminalité dans certains quartiers,
Соответствующий формат субтитров SRT:
00:00:20,000 --> 00:00:24,400
En réponse à l'augmentation dramatique
de la criminalité dans certains quartiers,
После завершения установки введите слово-подсказку в диалоговом окне ChatGPT:
Вы являетесь экспертом по программированию на Python. Теперь вы хотите выполнить преобразование файлов субтитров в формате VTT в файлы субтитров в формате SRT и LRC. Конкретные шаги заключаются в следующем:
Откройте папку: D:\lexfridman-podcast\vtt.
Прочтите файл суффикса vtt в папке, а затем преобразуйте его в формат SRT и формат LRC;
Примечание. Соответствующая информация должна выводиться на каждом этапе.
Исходный код предоставлен ChatGPT:
import os
import webvtt
from datetime import datetime
def convert_vtt_to_srt(vtt_filename, srt_filename):
print(f"Преобразование {vtt_filename} в {srt_filename}")
vtt = webvtt.read(vtt_filename)
with open(srt_filename, 'w', encoding='utf-8') as f:
for i, caption in enumerate(vtt):
f.write(str(i+1) + '\n')
f.write(caption.start.replace('.', ',') + ' --> ' + caption.end.replace('.', ',') + '\n')
f.write(caption.text + '\n\n')
def convert_vtt_to_lrc(vtt_filename, lrc_filename):
print(f"Преобразование {vtt_filename} в {lrc_filename}")
vtt = webvtt.read(vtt_filename)
with open(lrc_filename, 'w', encoding='utf-8') as f:
for caption in vtt:
start = datetime.strptime(caption.start, '%H:%M:%S.%f')
f.write(f"[{start.minute}:{start.second:02}.{start.microsecond//10000}]{caption.text}\n")
# Открыть папку
folder = 'D:\\lexfridman-podcast\\vtt'
print(f"Открыть папку: {папка}")
# Прочитайте файл суффикса vtt в папке
for filename in os.listdir(folder):
if filename.endswith('.vtt'):
base_filename = os.path.splitext(filename)[0]
vtt_filename = os.path.join(folder, filename)
srt_filename = os.path.join(folder, base_filename + '.srt')
lrc_filename = os.path.join(folder, base_filename + '.lrc')
convert_vtt_to_srt(vtt_filename, srt_filename)
convert_vtt_to_lrc(vtt_filename, lrc_filename)
Запускаем программу и все успешно конвертируется: