找回密码
 立即注册
查看: 845|回复: 1

[脚本] SubsRefine:处理 TV 和 Web 的日文字幕

9

主题

42

回帖

1490

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
479491
MingY 发表于 2025-3-18 19:02:48 | 显示全部楼层 |阅读模式
本帖最后由 MingY 于 2025-3-18 19:17 编辑

GitHub 地址:MingYSub/SubsRefine

背景
最近有很多新组、个人开始做双语字幕,但在处理 TV 和 Web 的日文字幕时可能会遇到一些问题。因此,我开发了 SubsRefine 这个脚本,来自动化这些字幕处理任务,从而能够更专注于翻校的工作。(论坛有点不太好编辑,建议去 GitHub 查看 README 文档)


SubsRefine
处理 TV 和 Web 的日文字幕。
支持 Python 3.11 及以上。

功能
  • 支持读取 ass srt vtt 格式字幕
  • 合并时间重复行
  • 去除语气词
  • 输出设置
    • 支持格式: txt ass srt
    • 行尾追加字符
    • 输出说话人
    • 停顿提示
  • 全半角转换
    • 全角英数转为半角
    • 半角片假名转为全角
  • 日文和西文之间添加空格
  • 删除多余信息
    • 去除位置、颜色等信息
    • 删除未识别的外字
  • 整理重复音节
  • 批量转换

用法
命令行
  1. usage: cli.py [-h] [--conf CONF] [--verbose]
  2.               [--merge-strategy {none,auto,force}]
  3.               [--filter-interjections | --no-filter-interjections | -fi]
  4.               [--output-dir OUTPUT_DIR]
  5.               [--output-format {txt,srt,ass}]
  6.               [--output-ending OUTPUT_ENDING]
  7.               [--show-speaker | --no-show-speaker | -a]
  8.               [--show-pause-tip SHOW_PAUSE_TIP]
  9.               [--full-half-numbers {skip,half,full,single_full}]
  10.               [--full-half-letters {skip,half,full,single_full}]
  11.               [--convert-half-katakana | --no-convert-half-katakana]
  12.               [--cjk-spacing | --no-cjk-spacing]
  13.               [--cjk-space-char CJK_SPACE_CHAR]
  14.               [--repetition-adjustment | --no-repetition-adjustment | -r]
  15.               [--repetition-connector REPETITION_CONNECTOR]
  16.               path [path ...]
复制代码
注意:
  • 命令行参数会覆盖配置文件设置
  • 默认配置文件路径:工具目录/config.yaml
Windows GUI
暂无



    配置文件
    请见 config.yaml

    样例
    原文(节选)
    1. Dialogue: 0,0:08:07.37,0:08:10.44,Default,,0,0,0,,{\pos(340,1018)\c&H00ffff&}お父さんがいっぱいだー!\N
    2. Dialogue: 0,0:08:10.44,0:08:14.04,Default,,0,0,0,,{\pos(620,898)\c&Hffff00&}意味が分からない\N
    3. Dialogue: 0,0:08:10.44,0:08:14.04,Default,,0,0,0,,{\pos(620,1018)\c&Hffff00&}つまり えっと…\N
    4. Dialogue: 0,0:08:14.04,0:08:19.11,Default,,0,0,0,,{\pos(340,898)\c&Hffff00&}姉は ヨシュアさんを流通用の段ボールに\N
    5. Dialogue: 0,0:08:14.04,0:08:19.11,Default,,0,0,0,,{\pos(340,1018)\c&Hffff00&}封印したってことでしょうか?\N
    6. Dialogue: 0,0:08:19.11,0:08:22.72,Default,,0,0,0,,{\pos(620,898)}(清子)まあまあ\N
    7. Dialogue: 0,0:08:19.11,0:08:22.72,Default,,0,0,0,,{\pos(620,1018)}今は楽しい歓迎会の場です\N
    8. Dialogue: 0,0:08:22.72,0:08:26.22,Default,,0,0,0,,{\pos(940,898)}あとで考えましょ\N
    9. Dialogue: 0,0:08:22.72,0:08:26.22,Default,,0,0,0,,{\pos(340,1018)\c&Hffff00&}お母さんは落ち着きすぎです!\N
    10. Dialogue: 0,0:08:26.22,0:08:30.56,Default,,0,0,0,,{\pos(420,898)}それでは お父さんを入れて\N
    11. Dialogue: 0,0:08:26.22,0:08:30.56,Default,,0,0,0,,{\pos(420,1018)}シャッフルクイズしたら面白そうです\N
    12. Dialogue: 0,0:08:30.56,0:08:32.56,Default,,0,0,0,,{\pos(580,1018)}当てる自信ありです\N
    13. Dialogue: 0,0:08:32.56,0:08:35.56,Default,,0,0,0,,{\pos(340,898)\c&Hffff00&}だとしても やめましょう\N
    14. Dialogue: 0,0:08:32.56,0:08:35.56,Default,,0,0,0,,{\pos(1060,1018)}え~ でも\N
    15. Dialogue: 0,0:08:35.56,0:08:38.06,Default,,0,0,0,,{\pos(580,898)}<頑張れシャミ子\N
    16. Dialogue: 0,0:08:35.56,0:08:38.06,Default,,0,0,0,,{\pos(580,1018)}シャッフルクイズは>\N
    17. Dialogue: 0,0:08:38.06,0:08:41.13,Default,,0,0,0,,{\pos(420,1018)}<当ててくれないと傷つくぞ>\N
    复制代码
    处理后文本(默认设置)
    1. お父さんがいっぱいだー!
    2. 意味が分からない つまり えっと…
    3. 姉は ヨシュアさんを流通用の段ボールに 封印したってことでしょうか?
    4. まあまあ 今は楽しい歓迎会の場です
    5. あとで考えましょ
    6. お母さんは落ち着きすぎです!
    7. それでは お父さんを入れて シャッフルクイズしたら面白そうです
    8. 当てる自信ありです
    9. だとしても やめましょう
    10. え~ でも
    11. 頑張れシャミ子 シャッフルクイズは
    12. 当ててくれないと傷つくぞ
    复制代码

    开源许可
    使用 MIT 作为开源许可证。

评分

参与人数 1活跃度 +32767 收起 理由
群鸟逐孤雁 + 32767 赞一个!

查看全部评分

MingYSub 译制的字幕作品(GitHub 仓库),若无特别标注,均基于 CC BY-NC-SA 4.0 协议共享,转载时请遵守共享协议。
回复

使用道具 举报

0

主题

4

回帖

0

VC币

新手上路

Rank: 1

积分
377
格列佛隧道 发表于 2025-3-18 20:09:49 来自手机 | 显示全部楼层
挺好,批量处理神器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表