Cerlancism/chatgpt-subtitle-translator
Token efficient translation tool based on ChatGPT or any OpenAI compatible LLM chat completion API
ChatGPT API SRT 字幕翻译工具
功能简介 – 一个 Node.js 实用程序,调用 OpenAI ChatGPT(或任何 OpenAI 兼容)API 来翻译字幕文件(SRT)或纯文本。它旨在保持严格的一对一对应关系,确保字幕的时序不变。
为何重要 – 使用大型语言模型翻译字幕可能很昂贵,因为每行都带有 SRT 开销(索引、时间戳)。此工具会剔除这些开销,智能地批量处理行,并可选地利用 OpenAI 的结构化输出和提示缓存功能,在保持行序的同时最大限度地减少令牌使用量。
主要功能
- Web UI(托管在 https://cerlancism.github.io/chatgpt-subtitle-translator )以及功能完整的 CLI。
- 支持 OpenAI 结构化响应(
array、object、timestamp、agent、none)。 - 通过
--context支持提示缓存,以重用翻译历史记录。 - 适用于任何 OpenAI 兼容端点(例如本地 Ollama)。
- 基于行的批处理,保持在模型令牌限制之内并减少浪费。
- 可选的审校检查,避免发送不允许的内容。
- 流式进度输出、RPM 速率限制处理和可恢复的 CLI 运行。
- “代理模式”可执行多阶段工作流:语言检测 → 规划摘要 → 优化翻译指令 → 最终翻译。
工作原理
- 预处理 – 去除或压缩 SRT 索引和时间戳(Toon 格式),以便只发送原始文本。
- 批处理 – 将行分组成符合令牌预算的 JSON 数组(或其他模式)。默认系统提示仅为
Translate to <target>(约 3 个令牌)。 - API 调用 – 将批次发送到 ChatGPT 模型(默认为
gpt-4o-mini)。结构化输出强制模型返回匹配的 JSON 结构,从而保证逐行对应。 - 后处理 – 将 JSON 响应重新组装为 SRT 文件,重新插入原始时间戳和索引。
- 代理模式(可选) – 执行快速扫描以推断源语言,生成内容概述,并在实际翻译过程之前生成优化后的指令。
典型用法
# 将日语 SRT 翻译为英语(CLI)
cli/translator.mjs --input subtitles.srt --from Japanese --to English
# 一次性纯文本翻译
cli/translator.mjs --plain-text "你好" --to English
# 使用结构化输出作为对象
cli/translator.mjs -r object -i subtitles.srt -o out.srt
设置 – 需要 Node ≥ 20。克隆后,运行 npm install,将 .env.example 复制为 .env,添加你的 OpenAI(或兼容)API 密钥,并使 CLI 脚本可执行。
适用人群 – 任何需要快速翻译字幕文件而不想为不必要的令牌付费的人,从爱好者视频编辑者到构建大型媒体本地化管道的开发人员。
相关
- 项目
- 项目
- 项目
- 项目
- 项目