MCPcopy Index your code
hub / github.com/WEIFENG2333/SubtitleSpliter

github.com/WEIFENG2333/SubtitleSpliter @v1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0 ↗ · + Follow
36 symbols 107 edges 3 files 25 documented · 69% updated 18mo agov1.0 · 2024-10-25★ 1391 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

项目简介

本项目旨在处理和优化字幕文件(SRT格式),通过自动语音识别(ASR)数据的分段合并与拆分,提高字幕的可读性和同步精度。主要功能包括:

  • ASR数据预处理:标准化 中英文文本,去除纯标点符号,处理中英文混合文本等。
  • 长分段的智能拆分:利用大语言模型(LLM)对超过最大词数的中英文分段进行拆分,确保每个分段的可读性。
  • 缓存机制:通过哈希生成缓存键,减少测试过程的重复请求,提高处理效率。

使用方法

  1. 准备SRT文件

确保你有需要处理的SRT文件,例如:test_data/演讲.srt

  1. 运行主程序

该脚本将读取指定的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:项目说明文件。

更新日志

v1.0.0

  • 初始发布,实现基本的SRT文件处理功能。

Core symbols most depended-on inside this repo

to_txt
called by 6
ASRData.py
count_words
called by 5
main.py
split_by_llm
called by 3
split_by_llm.py
_ms_to_srt_time
called by 2
ASRData.py
from_srt
called by 2
ASRData.py
get_cache_key
called by 2
split_by_llm.py
preprocess_text
called by 2
main.py
to_srt_ts
called by 1
ASRData.py

Shape

Method 18
Function 16
Class 2

Languages

Python100%

Modules by API surface

ASRData.py22 symbols
main.py10 symbols
split_by_llm.py4 symbols

For agents

$ claude mcp add SubtitleSpliter \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact