用户一边朗读文字稿 texttxt 文件一边录音得到 audiomp3 文件文字稿一行就是一句话文字稿每行文字在录音中的起始时间逐行 放在 timetxt中如何通过 texttxt timetxt 生成字幕
可以按照以下步骤生成字幕:
- 读取 time.txt 文件,把每行的起始时间记录下来。
- 读取 text.txt 文件,把每行的文字记录下来。
- 把起始时间和对应的文字合并成一个字幕条目,存储在一个列表中。
- 根据每个字幕条目的起始时间和结束时间,计算每个字幕的持续时间。
- 把每个字幕条目按照起始时间排序。
- 把每个字幕条目的文字和持续时间写入一个新的字幕文件中,格式可以是 SRT 或者其他常见的字幕格式。
代码示例(Python):
# 读取 time.txt 文件
with open('time.txt', 'r') as f:
time_lines = f.readlines()
# 读取 text.txt 文件
with open('text.txt', 'r') as f:
text_lines = f.readlines()
# 把起始时间和对应的文字合并成一个字幕条目,存储在一个列表中
subtitles = []
for i in range(len(time_lines)):
start_time = time_lines[i].strip()
end_time = time_lines[i+1].strip() if i < len(time_lines) - 1 else ''
text = text_lines[i].strip()
subtitle = {
'start_time': start_time,
'end_time': end_time,
'text': text
}
subtitles.append(subtitle)
# 计算每个字幕的持续时间
for i in range(len(subtitles)):
start_time = time_to_seconds(subtitles[i]['start_time'])
end_time = time_to_seconds(subtitles[i]['end_time']) if subtitles[i]['end_time'] else start_time + 5
duration = end_time - start_time
subtitles[i]['duration'] = duration
# 按照起始时间排序
subtitles = sorted(subtitles, key=lambda x: time_to_seconds(x['start_time']))
# 把每个字幕条目的文字和持续时间写入一个新的字幕文件中
with open('subtitles.srt', 'w') as f:
for i in range(len(subtitles)):
f.write(f"{i+1}\n")
f.write(f"{subtitles[i]['start_time']} --> {subtitles[i]['end_time']}\n")
f.write(f"{subtitles[i]['text']}\n")
f.write('\n')
# 辅助函数:将时间字符串转换为秒数
def time_to_seconds(time_str):
h, m, s = time_str.split(':')
return int(h) * 3600 + int(m) * 60 + float(s)
上面的代码示例中,我们假设 time.txt 文件中每行的格式都为 hh:mm:ss,text.txt 文件中每行就是一句话。代码中的 time_to_seconds 函数用来将时间字符串转换为秒数,方便计算字幕的持续时间。生成的字幕文件格式为 SRT,可以用常见的视频播放器加载并显示。
原文地址: http://www.cveoy.top/t/topic/GC0 著作权归作者所有。请勿转载和采集!