对ts源中提取出的ass字幕进行处理,包括合并多行对白、清理各种不必要的符号、说话人备注、转换假名半角等,输出ass或txt。
在Releases页面选择最新版本的程序下载。
合并多行对白及其时间(需要保证字幕按时间顺序排列)
📝 分隔符:一般使用merge.sep
(默认为空格)或merge.sep_on_overlap
(默认为空格),具体用法见下文;
当新行以merge.special_prefix
开头时(默认为空字符串,表示关闭该功能),则改为使用merge.sep_on_special_prefix
分隔。
-
按成对括号合并(开关:
merge.pair
,默认开启)从首次出现左括号起,经过若干行后出现对应的右括号,则将这些行合并,并使用
merge.sep
分隔。(如需删除括号本身,见清理)如:第一行
《aa
,第二行bb》
,两行合并为一行得到《aa bb》
。⚠️ 合并时左括号后和右括号前后不添加分隔符。配置:在
merge.merge_pairs_left
中配置左括号,在merge.merge_pairs_right
中配置对应的右括号,二者必须按顺序一一对应。默认取值为
merge.merge_pairs_left: "《<<〈「「『(([["
merge.merge_pairs_right: "》>>〉」」』))]]"
-
按单个符号合并(开关:
merge.singlesuf
,默认开启)以
merge.merge_suffix
(默认为→➡
)中任一符号结尾的对白,和下一行合并,并使用merge.sep
分隔,并将该符号删除。 -
按时间合并(开关:
merge.time
,默认关闭):时间有重叠的相邻对白合并,使用
merge.sep_on_overlap
分隔。
-
可配置参数:
-
📝 合并行数限制
merge.limit
:整数。为避免合并后内容过长,可以限制合并行数达到
merge.limit
后强制新建一行。默认为2,设为0表示不限制。
-
📝 忽略按时间合并时的行数限制
merge.ignore_limit_on_overlap
:默认关闭。开启后可以保证输出的每一行都不会有时间重叠。
-
-
直接删除单个字符:
配置:
symbols.remove
,把所有需要删除的单个字符依次写入,默认包括:。。!!??~~∼・♪≫《》<><>〈〉
📝:如果添加
「
」
『
』
等各种括号也不影响前面的合并,会先合并再删除。 -
替换单个字符(配置:
symbols.replace_key
symbols.replace_val
):默认
symbols.replace_key: "、、⚟"
,依次替换为symbols.replace_val: " "
(全替换为半角空格)。配置方法:替换前的单个字符写在
symbols.replace_key
中,替换后的单个字符一一对应按顺序依次写在symbols.replace_val
中。 -
直接删除以下字符(不可配置):
\N
-
半角方括号
[]
及其括起来的的内容(不可配置); -
rubi字幕(平假名注音字幕)(开关:
remove_rubi
,默认开启) -
特效标签(花括号括起来的),开启时全部删除,关闭时保留(如果合并了多行,只保留第一行的)(开关:
remove_format_tags
,默认开启) -
半角圆括号
()
及其括起来的内容,一般为说话人或环境音提示(开关:remove_comments
,默认开启); -
说话人标识。匹配规则为:从行首开始全是片假名,然后紧接一个全角冒号(开关:
remove_speaker
,默认开启)。 -
特定文本替换(配置:
texts.replace
):将
texts.replace
中的键替换为对应的值(冒号左边替换为右边),如将ウソ
替换为嘘
,ダメ
替换为だめ
。注意
texts.replace
字典中最后一行的结尾不能有逗号。
-
假名宽度替换(
FullwidthConverter.py
)(开关:convert_width
,默认开启):将半角片假名,以及
。
「
」
、
・
等符号转换为全角;将全角数字、空格转换为半角。
-
添加前缀(开关:
add_newline_prefix
,默认开启):在输出的每一行开头添加
\N
前缀。 -
数字宽度替换(开关:
format_digit
,默认开启):若一行对白只含有一个数字,则数字使用全角,若含有多个数字,则所有数字均使用半角。
-
标注时间重叠行(开关:
mark_overlap
,默认开启):当某几行的时间出现重叠时,在
Actor
栏中标注(如:时间重叠1)。 -
标注分工(设置值:
mark_segment
,默认为3,设为0表示关闭):把全文均分为
mark_segment
部分,每部分的起始位置标注在Actor
栏中(如:分段1开始),方便分工。
-
可配置参数:
-
📝 输出格式
format
:字符串,默认为
ass
,表示输出ass字幕文件,也可设置为txt
,表示文本文件。
-
配置文件为同目录下的configs.json
,使用JSON语法。
📝 如果误删,重新运行一次SubCleaner.exe
即可生成。
默认配置:
{
"format": "ass",
"merge": {
"pair": true,
"singlesuf": true,
"time": false,
"limit": 2,
"ignore_limit_on_overlap": false,
"sep": " ",
"sep_on_overlap": " ",
"special_prefix": "",
"sep_on_special_prefix": "\\N",
"merge_pairs_left": "《<<〈「「『(([[",
"merge_pairs_right": "》>>〉」」』))]]",
"merge_suffix": "→➡"
},
"symbols": {
"remove": "。。!!??~~∼・♪≫《》<><>〈〉",
"replace_key": "、、⚟",
"replace_val": " "
},
"texts": {
"replace": {
"ウソ": "嘘",
"イヤ": "嫌",
"ダメ": "だめ",
"ヤツ": "奴",
"ジャマ": "邪魔",
"ケンカ": "喧嘩",
"ホント": "本当"
}
},
"remove_rubi": true,
"remove_format_tags": true,
"remove_comments": true,
"remove_speaker": true,
"convert_width": true,
"add_newline_prefix": true,
"format_digit": true,
"mark_overlap": true,
"mark_segment": 3
}
按需求修改配置文件configs.json
,然后将需要处理的字幕文件ass
拖放到SubCleaner.exe
上,即可得到处理后的文件,默认输出文件名为<输入文件名>_cleaned
。
也可以使用命令行进行更多配置。
格式
SubCleaner.py [-h] [-o OUTFILE] [-q] [--offsetms OFFSETMS] [-c CONFIG] [--log] InputFile
可选参数说明:
-o OUTPUT, --output OUTPUT
输出文件路径,默认为<输入文件名>_cleaned。
-q, --quit
结束后不暂停程序直接退出,方便命令行调用。不加该参数程序结束时会提示请按任意键继续...
。
--offsetms OFFSETMS
输出ass整体时间偏移毫秒数,负数为提前,正数为延后。
-c, --config CONFIG
指定配置文件的路径,默认为同目录下的config.json
--log
记录日志,日志存储到同目录下的<输入文件名>_log.txt。
📝 使用命令行参数需要先在SubCleaner.exe
所在目录打开命令行,然后输入Subcleaner.exe <字幕文件路径> <其他命令行参数>
,如Subcleaner.exe input.ass -o output.ass --offsetms -355 --log -q
。
点击资源管理器的地址栏,输入cmd
后按回车。
说明:批处理文件,依次调用Caption2Ass
(请自行搜索下载)提取ts中的ass、SubCleaner
对提取出的字幕进行清理。
使用方法:拖放ts文件到批处理文件上。
请给我提出Issue,看到后我会及时处理。
-
1.0.4_halfwidth-sp
- 空格全部变为半角
-
v1.0.4
- 空格全部变为全角
-
v1.0.3
- 修改全角数字为半角数字
-
v1.0.2
- 添加
-q, --quit
--log
参数,方便命令行调用
- 添加
-
v1.0.1
- 优化直接运行程序时的提示
-
v1.0
- 实现基本功能
- 支持UTF-8 (with BOM)、GBK编码格式文件
- 一次只支持单个文件
-
v3.0.2
- 支持新的参数
-
v3.0.0
- 重构代码,支持输出ass
- 支持更多可配置参数,并使用配置文件读取
-
v2.4.5.001
- 一句话内只有一位数字时改为全角,同时出现多位数字时保持半角
-
v2.4.4.002_halfwidth-sp
- 空格全部变为半角
-
v2.4.4.002:
- 使用假名转换器v1.0.4
- 不含拟声词删除功能
-
v2.4.3
- 顿号替换为全角空格
- v2.4.3.002: 拟声词误删较多,暂时关闭该功能
-
v2.4.2
- 使用假名转换器v1.0.3
-
v2.4.1
- 完善台词清理符号
-
v2.4.0
- 完善台词清理符号
- 台词清理新增删除拟声词v0.2
- 完善台词合并行为(每两行合并一次)
-
v2.3.1
- 转移仓库至zhimengsub
-
v2.3.0
- 改进台词合并的规则
- 跳过Rubi(注音)的台词
-
v2.2.0
- 优化输出内容(存在bug:时间相同的台词合并时也会以全角空格隔开)
-
v2.1.0
- 新增几对合并标志符号,优化输出内容
-
v2.0.0
- 修改台词合并逻辑
- 修复合并及清理时的一些bug
- 修改默认输出文件名为
<输入文件名>.txt
- 添加
-q, --quit
--log
参数,方便命令行调用
-
v1.0.1
- 优化直接运行程序时的提示
-
v1.0
- 实现基本功能
- 一次只支持单个文件