本项目旨在处理和优化字幕文件(SRT格式),通过自动语音识别(ASR)数据的分段合并与拆分,提高字幕的可读性和同步精度。主要功能包括:
- ASR数据预处理:标准化 中英文文本,去除纯标点符号,处理中英文混合文本等。
- 长分段的智能拆分:利用大语言模型(LLM)对超过最大词数的中英文分段进行拆分,确保每个分段的可读性。
- 缓存机制:通过哈希生成缓存键,减少测试过程的重复请求,提高处理效率。
-
准备SRT文件
确保你有需要处理的SRT文件,例如:
test_data/演讲.srt
-
运行主程序
该脚本将读取指定的SRT文件,进行预处理、分段合并与拆分,并生成一个合并后的SRT文件,如
test_data/演讲_merged.srt
假设你有一个名为演讲.srt
的字幕文件,内容如下:
1
00:00:09,100 --> 00:00:09,260
大
2
00:00:09,260 --> 00:00:09,420
家
3
00:00:09,420 --> 00:00:09,620
好
4
00:00:09,820 --> 00:00:09,940
我
5
00:00:09,940 --> 00:00:10,180
叫
6
00:00:10,220 --> 00:00:10,420
杨
7
00:00:10,420 --> 00:00:10,580
玉
8
00:00:10,580 --> 00:00:10,740
溪
...
运行main.py
后,将生成一个合并后的文件李白_merged.srt
,内容示例如下:
1
00:00:09,100 --> 00:00:09,620
大家好
2
00:00:09,820 --> 00:00:10,740
我叫杨玉溪
3
00:00:11,220 --> 00:00:14,220
来自有着良好音乐氛围的福建厦门
4
00:00:14,700 --> 00:00:15,420
自记事起
-
合并分段:原始SRT文件中每个单一字符或单词作为一个分段,经过处理后,分段被合并为一句完整的句子,提升了字幕的可读性。
-
时间同步:合并后的字幕段落时间跨度根据原始分段的起止时间自动调整,确保字幕与视频内容同步。
-
智能拆分:对于合并后仍然超过最大词数的字幕段落,系统将自动利用LLM进行语义拆分,避免在不适当的位置断句,保持字幕的连贯性和自然性。
- main.py:主程序,负责读取SRT文件,进行预处理、分段合并与拆分,并保存结果。
- split_by_llm.py:使用LLM进行文本断句的模块,包含缓存机制以提升效率。
- ASRData.py:处理ASR数据的模块,定义数据结构和相关操作。
- test_data/:存放测试用的SRT文件及处理后的结果文件。
- cache/:存放LLM断句结果的缓存文件。
- requirements.txt:项目依赖列表。
- README.md:项目说明文件。
- 初始发布,实现基本的SRT文件处理功能。