基于本地Ollama模型的高质量SRT字幕文件翻译工具,支持长视频字幕翻译,保持时间轴精确对齐。
- 🚀 高效翻译: 支持超过30分钟的长视频字幕文件翻译
- 🎯 精准对齐: 翻译后的内容与原始时间轴完全对齐
- 🔒 本地处理: 基于本地Ollama模型,保护隐私,无需上传到云端
- 📊 实时进度: 翻译过程实时展示,清晰了解进度
- 🎨 友好界面: 直观的Web界面,支持拖拽上传
- 🔄 批量处理: 支持智能分段处理,保持上下文连贯性
- 后端: Python 3.9+, FastAPI, Ollama Python Client
- 前端: HTML5, CSS3 (Tailwind CSS), JavaScript
- AI模型: Ollama (默认使用deepseek-r1:8b模型)
- Python 3.9或更高版本
- Ollama 本地安装并运行
- 足够的磁盘空间存储临时文件
- 建议8GB以上RAM以支持模型运行
访问 Ollama官网 下载并安装Ollama。
安装完成后,运行以下命令下载deepseek-r1:8b模型:
ollama pull deepseek-r1:8bgit clone <repository-url>
cd srt-translator运行启动脚本:
chmod +x start.sh
./start.sh启动脚本会自动:
- 检查Python和Ollama安装
- 安装所需的Python依赖
- 启动后端API服务
- 在浏览器中打开前端页面
- 在Web界面中拖拽或选择SRT文件
- 点击"开始翻译"按钮
- 等待翻译完成(可实时查看进度)
- 下载翻译后的SRT文件
启动服务后,可以通过以下地址访问API文档:
http://localhost:8000/docs
POST /api/upload- 上传SRT文件GET /api/status/{task_id}- 获取翻译任务状态GET /api/download/{task_id}- 下载翻译完成的SRT文件POST /api/translate/text- 翻译文本片段GET /health- 健康检查
srt-translator/
├── src/ # 源代码目录
│ ├── domain/ # 领域核心层
│ │ ├── entities.py # 核心实体定义
│ │ └── ports.py # 领域接口定义
│ ├── application/ # 应用服务层
│ │ └── usecases/ # 业务用例实现
│ │ ├── translate_text_usecase.py # 文本翻译用例
│ │ ├── translate_srt_file_usecase.py # SRT文件翻译用例
│ │ └── manage_translation_task_usecase.py # 任务管理用例
│ ├── infrastructure/ # 基础设施层
│ │ └── adapters/ # 接口实现
│ │ ├── srt_repository_impl.py # SRT解析实现
│ │ ├── translation_service_impl.py # 翻译服务实现
│ │ └── task_manager_impl.py # 任务管理实现
│ └── presentation/ # API接口层
│ └── api/ # RESTful API实现
│ └── main.py # FastAPI应用入口
├── frontend/ # 前端代码
│ └── index.html # 主页面
├── requirements.txt # Python依赖列表
├── 需求文档.md # 项目需求文档
├── 技术文档.md # 项目技术文档
├── start.sh # 启动脚本
└── README.md # 项目说明
默认使用deepseek-r1:8b模型,如需更改,请修改 src/infrastructure/adapters/translation_service_impl.py 文件中的模型配置:
def __init__(self, model: str = "deepseek-r1:8b", batch_size: int = 10, max_retries: int = 3):可以根据系统性能调整批处理大小:
def __init__(self, model: str = "deepseek-r1:8b", batch_size: int = 10, max_retries: int = 3):在 src/infrastructure/adapters/task_manager_impl.py 中修改:
def __init__(self, max_concurrent_tasks: int = 3):- 检查Ollama是否正在运行:
ollama list - 检查deepseek-r1:8b模型是否已下载:
ollama list | grep deepseek-r1:8b - 查看后端日志:
cat backend/backend.log
- 确保SRT文件格式正确
- 检查Ollama服务是否正常运行
- 查看详细错误信息
- 对于大型SRT文件,可以减小批处理大小
- 确保系统有足够的内存和CPU资源
- 关闭其他占用资源的应用程序
欢迎提交问题报告和功能请求!
- 初始版本发布
- 支持SRT文件上传和翻译
- 实时进度显示
- 基于Ollama的本地翻译
- 响应式Web界面