Skip to content

King-fly/subtitle-translate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SRT字幕翻译工具

基于本地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以支持模型运行

快速开始

1. 安装Ollama

访问 Ollama官网 下载并安装Ollama。

2. 下载模型

安装完成后,运行以下命令下载deepseek-r1:8b模型:

ollama pull deepseek-r1:8b

3. 克隆项目

git clone <repository-url>
cd srt-translator

4. 启动服务

运行启动脚本:

chmod +x start.sh
./start.sh

启动脚本会自动:

  • 检查Python和Ollama安装
  • 安装所需的Python依赖
  • 启动后端API服务
  • 在浏览器中打开前端页面

5. 使用方法

  1. 在Web界面中拖拽或选择SRT文件
  2. 点击"开始翻译"按钮
  3. 等待翻译完成(可实时查看进度)
  4. 下载翻译后的SRT文件

API文档

启动服务后,可以通过以下地址访问API文档:

http://localhost:8000/docs

主要API端点

  • 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):

故障排除

服务启动失败

  1. 检查Ollama是否正在运行:ollama list
  2. 检查deepseek-r1:8b模型是否已下载:ollama list | grep deepseek-r1:8b
  3. 查看后端日志:cat backend/backend.log

翻译失败

  1. 确保SRT文件格式正确
  2. 检查Ollama服务是否正常运行
  3. 查看详细错误信息

性能优化

  • 对于大型SRT文件,可以减小批处理大小
  • 确保系统有足够的内存和CPU资源
  • 关闭其他占用资源的应用程序

许可证

MIT License

贡献

欢迎提交问题报告和功能请求!

更新日志

v1.0.0 (2024-01-XX)

  • 初始版本发布
  • 支持SRT文件上传和翻译
  • 实时进度显示
  • 基于Ollama的本地翻译
  • 响应式Web界面

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published