字幕翻译时间码零漂移:TranslateBooksWithLLMs处理SRT文件实战指南
字幕翻译时间码零漂移TranslateBooksWithLLMs处理SRT文件实战指南【免费下载链接】TranslateBooksWithLLMsTranslate full-length books and documents with Ollama, OpenAI-compatible, Gemini, Mistral, DeepSeek, Poe or OpenRouter. Preserves formatting. Resumes where you left off. No file size limits.项目地址: https://gitcode.com/gh_mirrors/tr/TranslateBooksWithLLMsTranslateBooksWithLLMs是一款免费的开源图书与文档翻译工具也能高质量处理SRT 字幕文件批量翻译它把时间码和字幕文本彻底分离只把文字发给大模型因此翻译结果时间码零漂移、条目零丢失。支持 Ollama、OpenAI、Gemini、Mistral、DeepSeek、Poe、OpenRouter 等多种模型后端无文件大小限制还带断点续传与双语字幕输出。本文带你快速跑通 SRT 字幕翻译的完整流程。为什么字幕翻译最怕时间码错位一个 SRT 文件由三部分组成序号、时间码如00:00:01,000 -- 00:00:04,000、字幕文本。很多整文件喂给大模型的做法一旦模型多输出或少输出一行、改错一个逗号后面所有字幕的时间码就集体错位——视频画面和字幕对不上只能手动返工。TranslateBooksWithLLMs 的思路完全不同解析阶段把时间码、序号、文本拆成独立字段见 parse_srt时间码从始至终只读不译永远不会进入提示词翻译阶段只翻译文本字段用[N]索引标记保证每条译文能精确对号入座重建阶段用原始时间码 新文本重新拼装 SRT见 reconstruct_srt。三道工序保证输出条数与输入一致时间码逐字节原样保留。零漂移背后的关键设计分块翻译 局部索引回映射文件再大也不怕。工具按固定条数默认 10 条/块由SRT_LINES_PER_BLOCK控制见 src/config.py把字幕分块块内使用0, 1, 2...局部编号翻译完成后通过映射表回写到全局索引核心逻辑在 extract_block_translations_with_remapping。标记校验 自动重试模型偶尔会漏掉某条[N]标记。适配器会先校验validate_unit_translation发现缺失标记就带着明确的修复指令重试而不是带着残缺结果继续。另有 tests/test_srt_marker_retry.py 等测试锁定这一行为。保留格式标签多行字幕、i、b、\an8等内联格式标签都会原样保留不会因翻译被抹掉。三步跑通SRT字幕翻译实战第 1 步安装与启动pip install -r requirements.txt python translate.pyWindows 用户可直接运行 start.batLinux/macOS 运行 start.sh也支持 Docker 部署参考 deployment/。第 2 步上传 SRT 文件并选择模型打开 Web 界面上传.srt文件选择源语言、目标语言和模型本地 Ollama 免费离线或云端 API 追求质量。点击翻译后进度条按字幕条数实时推进。第 3 步选择输出模式纯译文文本被译文替换时间码不动双语模式每条字幕上方保留原文、下方显示译文实现在 _reconstruct_bilingual_srt非常适合做语言学习材料。断点续传长字幕文件不怕中断几小时的剧集字幕可能有上千条。中途断网、换模型都不必从头再来每完成一个块就写入检查点resume_from_checkpoint会恢复已完成块的译文src/core/adapters/srt_adapter.py暂停后可在面板中直接Resume继续或Change model换模型接着翻见上图单条翻译失败时保留原文兜底不会留空条目拖垮时间轴src/core/subtitle_translator.py。进阶技巧清单精调第二遍Refine开启后对译文再做一轮打磨专门针对字幕口语化、长度控制优化refine_subtitle_translations术语表锁定译名角色名、专有名词统一避免同一角色两个译名的观感调整块大小环境变量SRT_LINES_PER_BLOCK控制每块条数上下文更强可加大自定义指令注入风格要求如译文明快口语化、每行不超过40字。字幕翻译提示词的设计细节可参考 generate_subtitle_block_prompt。常见问题 FAQ问翻译后时间码会错位吗不会。时间码在解析期就被剥离LLM 接触不到时间码重建时原样拼回这是零漂移的根本保证。问多行字幕怎么处理多行结构原样保留[N]标记内的换行会被完整还原。问文件编码是 GBK 的旧字幕怎么办工具以 UTF-8 读写建议先用文本编辑器另存为 UTF-8 再上传。核心文件导航模块路径SRT 解析与重建src/core/srt_processor.py字幕分块翻译src/core/subtitle_translator.pySRT 适配器校验/双语/续传src/core/adapters/srt_adapter.py字幕提示词src/prompts/prompts.py适配器测试tests/test_adapters/test_srt_adapter.py标记重试测试tests/test_srt_marker_retry.py块大小配置src/config.py把 SRT 拖进去、选好语言、点击翻译——几分钟后你得到的就是一份时间码分毫不差的双语字幕。【免费下载链接】TranslateBooksWithLLMsTranslate full-length books and documents with Ollama, OpenAI-compatible, Gemini, Mistral, DeepSeek, Poe or OpenRouter. Preserves formatting. Resumes where you left off. No file size limits.项目地址: https://gitcode.com/gh_mirrors/tr/TranslateBooksWithLLMs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考