这是一个基于大型语言模型的字幕优化与翻译工具,专为处理机器翻译生成的不连贯字幕而设计。该工具利用 LangGraph 和 LangChain 构建高效翻译 Agent,提供准确、自然的翻译结果,同时优化字幕的连贯性和可读性。
- 字幕优化:修正翻译错误,删除重复内容,提高字幕流畅度
- 多语言翻译:支持将字幕翻译为中文、英文、日文、韩文等多种语言
- 批量处理:支持批量处理大量字幕,提高效率
- 双重界面:提供命令行界面和友好的Web界面,满足不同用户需求
- 进度反馈:实时显示处理进度,方便跟踪任务完成情况
- 灵活配置:支持自定义语言模型、API密钥和处理参数
pip install langgraph langchain-openai langchain-core pyyaml srt tqdm gradio numpy
在 confs/config.yaml
文件中配置 API 密钥和翻译设置:
llms:
- name: "openai"
key: "your_openai_api_key"
model: "gpt-4o"
base_url: "https://api.openai.com/v1"
- name: "local_llama"
key: "1111"
model: "llama3"
base_url: "http://127.0.0.1:11434/v1"
translate:
model: "openai"
source_language: "en"
target_language: "zh"
subtitles:
model: "openai"
source_language: "en"
target_language: "zh"
使用命令行处理字幕文件:
python cli_subitile.py input.srt -o output.srt -t 中文 --batch_size 10 --delay 1.0
参数说明:
input_file
:输入SRT文件路径(必需)-o, --output
:输出SRT文件路径(可选,默认将在输入文件名后添加后缀)-t, --translate
:目标语言,如"中文"、"英文"等(默认为"中文")--api_key
:API密钥(可选,覆盖配置文件)--base_url
:API基础URL(可选,覆盖配置文件)--model
:使用的模型名称(可选,覆盖配置文件)--batch_size
:批处理大小(默认:10)--delay
:请求之间的延迟时间(秒)(默认:1.0)
启动Web界面:
python web-ui.py
Web界面提供以下功能:
- 上传字幕文件(SRT格式)
- 选择目标语言
- 设置批处理大小和请求延迟
- 实时查看处理结果
- 下载处理后的文件
from subtitle_agent import SubtitleProcessingAgent
# 创建字幕处理代理
agent = SubtitleProcessingAgent(batch_size=10, request_delay=1.0)
# 处理字幕文件
agent.process_srt_file("input.srt", "output.srt", target_language="中文")
# 或者直接处理字幕内容
with open("input.srt", "r", encoding="utf-8") as f:
srt_content = f.read()
processed_content = agent.process_srt(
srt_content,
target_language="中文",
remove_repetitions=True
)
# 保存处理结果
with open("output.srt", "w", encoding="utf-8") as f:
f.write(processed_content)
字幕优化与翻译工具/
│
├── subtitle_agent.py # 核心字幕处理代理实现
├── cli_subitile.py # 命令行界面
├── web-ui.py # Web界面
├── config.py # 配置管理(未显示在代码中)
│
├── confs/
│ └── config.yaml # 配置文件
│
└── README.md # 项目文档
- 修正明显的翻译错误和语义不通顺的地方
- 删除重复的字幕条目和内容
- 保持字幕的自然流畅性
- 确保每条字幕的长度适中,便于阅读
- 将字幕从源语言翻译为目标语言
- 保持原始的字幕时间码和格式
- 准确传达原文含义,同时符合目标语言的表达习惯
如果遇到API密钥相关错误,请检查:
- 确保在
config.yaml
文件中正确设置了API密钥 - 检查API密钥是否有效且未过期
- 确保网络连接正常
如果翻译质量不理想:
- 尝试使用更强大的模型(如从GPT-3.5切换到GPT-4)
- 减小批处理大小,让模型更专注于每个字幕段落
如果处理速度慢:
- 增加批处理大小
- 减少请求延迟(注意可能会触发API限制)
- 考虑使用本地部署的语言模型