⚡️ Subtitle Translator
English | 中文
AI 驱动的批量字幕翻译,支持 120+ 种语言,秒级完成
**Subtitle Translator** 是一款免费、纯浏览器运行的批量字幕翻译工具,支持 `.srt`、`.ass`、`.vtt`、`.lrc` 等格式。通过分块压缩 + 并行处理,可达到 1 集电视剧 ≈ 1 秒的翻译速度。可一次性批量上传整季字幕,接入 7 种传统翻译 API(DeepL、Google、Azure、DeepLX、Qwen-MT、TranslateGemma、GTX)和 17+ 种 LLM,覆盖 120+ 种语言——还能一次翻译成多种目标语言,每种语言各导出为独立文件。全程在浏览器本地完成,字幕内容与 API Key 不经过服务器。
👉 **在线体验**:

## 核心特性
- **秒级翻译**:分块压缩 + 并行处理,达到 1 秒翻译一集电视剧(GTX 接口稍慢)。
- **批量处理**:一次性拖入上百份字幕文件(整季剧集一次搞定),每个文件独立翻译、以原文件名自动下载,结束时汇总成功 / 失败统计(如"已导出 (3/5)")。
- **多语言输出**:一次可翻译成多种目标语言——每种语言各导出为独立文件,并自动追加语言代码(如 `movie.zh.srt`、`movie.fr.srt`)。
- **格式兼容**:自动识别 `.srt`、`.ass`、`.vtt`、`.lrc`。WebVTT 的 NOTE / STYLE / REGION 非 cue 块会被正确跳过(不当作对白翻译)。翻译过程中支持一键格式互转(SRT ↔ VTT、SRT/VTT → ASS)。
- **双语字幕**:译文可插入原字幕上方或下方,对齐保留。SRT / VTT 源还可导出 **ASS**,原文与译文分别走 Default / Secondary 样式(默认 70pt 白色 + 55pt 青色),可在字幕编辑器里独立调整。
- **上下文关联翻译**(仅 LLM):每批携带前后文,对话更连贯,角色语气更稳定。
- **结构化分离**:时间轴、序号、ASS 头、VTT cue id 在本地剥离,只把对白文本发给引擎,模型无法弄乱时间轴。
- **字幕提取**:剥离 cue / 时间码,导出纯文本(自动复制到剪贴板)用于 AI 总结、剧本回填或二次创作。
- **无上限缓存**(IndexedDB):所有翻译结果本地缓存,无浏览器存储容量限制,刷新页面已译文件不丢失。
- **120+ 种语言**:支持 120+ 种语言互译,源语言默认 Auto 自动检测。
- **多语言界面**:基于 next-intl,支持 18 种界面语言。
- **隐私优先**:完全前端处理——字幕内容与 API Key 仅保存在浏览器;LLM 请求直接从浏览器发往你配置的 API 端点。
## 翻译接口
支持 **7 种传统翻译 API** 和 **17+ 种 LLM 服务**:
### 传统翻译 API
| API 类型 | 翻译质量 | 稳定性 | 免费额度 |
| -------------------- | -------- | ------ | ------------------------------- |
| **DeepL** | ★★★★★ | ★★★★☆ | 每月 50 万字符 |
| **Google Translate** | ★★★★☆ | ★★★★★ | 每月 50 万字符 |
| **Azure Translate** | ★★★★☆ | ★★★★★ | **前 12 个月** 每月 200 万字符 |
| **DeepLX(免费)** | ★★★★☆ | ★★★☆☆ | 自部署或公共免费节点 |
| **Qwen-MT** | ★★★★☆ | ★★★★☆ | 阿里云百炼(DashScope)配额 |
| **TranslateGemma** | ★★★★☆ | ★★★★☆ | 自部署(LM Studio / Ollama 等) |
| **GTX API(免费)** | ★★★☆☆ | ★★★☆☆ | 免费(有频率限制) |
### AI 大模型
支持 **DeepSeek**、**OpenAI**、**Claude**、**Gemini**、**Qwen**、**Moonshot**、**Doubao**、**Zhipu GLM**、**MiniMax**、**Mistral**、**Perplexity**、**Cohere**、**OpenRouter**、**Groq**、**SiliconFlow**、**Nvidia NIM**、**Azure OpenAI**,以及任意 **Custom (OpenAI-compatible)** 端点(Ollama / LM Studio / vLLM / Together AI / Fireworks AI 等)。
LLM 模式提供:
- **适用场景**:文学作品、技术演讲、多语言对话
- **可定制**:支持配置 system / user prompt,定制翻译风格
- **温度控制**:调节 AI 创造性(0–1)
- **思考模式**:对推理类模型,可按 provider 单独开关
## 上下文关联翻译(仅 LLM)
LLM 模式可在每一批请求里携带前后文,提升对话连贯性和角色语气一致性。
- **并发行数**:同时翻译的最大行数(默认 20)。过高可能触发速率限制。
- **上下文行数**:每批携带的上下文行数(默认 50)。值越大连贯性越好,但 token 消耗也越多。
⚠️ **提示**:70B 以下或本地小模型容易输出错位文本,上下文模式建议使用主流在线大模型(Claude、GPT、DeepSeek、Gemini 等)。
## 字幕格式支持
| 格式 | 自动识别 | 双语 | 备注 |
| -------- | -------- | ---- | ------------------------------------------------------------------- |
| **.srt** | ✅ | ✅ | 1–3 位毫秒、100+ 小时时间戳 |
| **.ass** | ✅ | ✅ | 行首位置标签(如 `\an8`)翻译后自动还原;复杂内联特效标签会被简化 |
| **.vtt** | ✅ | ✅ | NOTE / STYLE / REGION 块正确跳过;VTT→SRT 自动处理 `` 与卡拉 OK 时间戳 |
| **.lrc** | ✅ | ✅ | 正确处理多时间标签的卡拉 OK 行 |
- **自动编码检测**:jschardet 自动识别 UTF-8 / UTF-16 / GBK / Shift-JIS,避免乱码(识别失败回退 UTF-8)。
- **文件名保留**:导出文件继承原文件名,多语言输出额外追加语言代码后缀。
- **格式转换**:翻译过程中即可完成 SRT ↔ VTT、SRT/VTT → ASS 互转,无需单独转换器(源语言与目标语言相同会被禁止,故转换需绑定一次实际翻译)。
## 翻译模式
- **批量模式**(默认):一次性拖入上百文件(整季剧集),每个文件独立翻译并自动下载,结束时汇总成功 / 失败统计。
- **单文件模式**:快速预览,新上传的文件替换当前文件。
## 常见问题
**支持哪些格式?** SRT、ASS、VTT、LRC。SRT/VTT 适配 YouTube、B 站、HTML5 播放器;ASS 适配 Aegisub 与动漫字幕组(行首位置标签如 `\an8` 自动还原);LRC 适配音乐歌词。
**用机器翻译还是 AI 大模型?** 机器翻译(Google、DeepL、Azure、Qwen-MT)便宜或免费但对白语感平庸;大模型按 token 计费但译文明显更自然——性价比首选 DeepSeek(整季大批量适用),口语化质量首选 Claude Sonnet / GPT,超长字幕用 Gemini 的大上下文。
**人名、专有名词怎么保持一致?** 在任意大模型引擎的「系统提示词」里写一份术语保留表(如「保持原文:iPhone、OpenAI、John Smith」),整季共享同一上下文,全季译名一致。
**要加「保留时间轴 / 序号」之类的提示词吗?** 不需要。时间轴、序号、头信息都在本地剥离、译完回填,模型从头到尾看不到,提示词只写翻译风格、术语表与语气即可。
**隐私安全吗?** 安全。全程前端运行:字幕解析、翻译请求、缓存都在浏览器内完成;API Key 仅保存在本地浏览器,LLM 请求直接从浏览器发往你配置的端点。
更多说明见 [官方文档完整 FAQ](https://docs.newzone.top/guide/translation/subtitle-translator/)。
## 技术栈
- **框架**:[Next.js 16](https://nextjs.org/)(App Router)+ React 19 with React Compiler
- **UI**:[Ant Design 6](https://ant.design/) + [Tailwind CSS 4](https://tailwindcss.com/)
- **i18n**:[next-intl](https://next-intl-docs.vercel.app/)
- **缓存**:[idb](https://github.com/jakearchibald/idb)(IndexedDB)
- **编码检测**:[jschardet](https://github.com/aadsm/jschardet)
## 快速开始
### 环境要求
- Node.js >= 20.9.0
- Yarn(推荐)、npm 或 pnpm
### 安装与启动
```bash
git clone https://github.com/rockbenben/subtitle-translator.git
cd subtitle-translator
yarn install
yarn dev
```
打开 [http://localhost:3000](http://localhost:3000) 即可使用。
### 构建生产版本
```bash
yarn build
```
## 文档与部署
详细配置、API 设置和自托管说明,请参阅 **[官方文档](https://docs.newzone.top/guide/translation/subtitle-translator/)**。
**快速部署**:[部署指南](https://docs.newzone.top/guide/translation/subtitle-translator/deploy.html)
## 参与贡献
欢迎通过 Issue 或 Pull Request 参与贡献!
1. Fork 本仓库并创建功能分支
2. 本地执行 `yarn` 与 `yarn dev`
3. 适当补充测试 / 文档
4. 提交 PR 并清晰描述变更
## 许可协议
MIT © 2025 [rockbenben](https://github.com/rockbenben)。详见 [LICENSE](./LICENSE)。