subtitle-translator:批量字幕翻译工具
近年来,随着在线视频的兴起,国外热门影视作品的翻译多由视频平台完成,而原本活跃的字幕组则逐渐淡出人们的视野。然而,对于冷门视频和自制视频的字幕需求却未能得到有效满足,导致未配字幕的视频数量持续增加。为解决这一问题,可以用 Whisper 工具为这些生肉视频自动生成字幕,并通过翻译接口将其翻译成中文。具体操作步骤可参考文章:找不到字幕?Whisper 让不懂外语的你也能看懂日剧。
针对市面上字幕翻译工具存在的翻译速度慢、不支持批量处理、需人工干预等问题,我开发了一款免费且功能全面的字幕翻译工具——subtitle-translator。该工具支持.srt、.ass、.vtt 格式的多语言字幕文件转换,具备秒级翻译速度,大幅提高翻译效率。我已成功转录超过 500 个视频,翻译后的字幕文件可在whisper-subtitles 查看。
特色功能
- 秒级翻译:利用字幕文本的分块压缩和并行处理技术,除 GTX 接口稍慢外,基本实现了 1 秒翻译一集电视剧。
- 批量翻译:一次性处理上百份字幕文件,大大提高工作效率。
- 多语言支持:提供包括英语、中文(简体/繁体)、西班牙语、印地语、阿拉伯语、葡萄牙语、孟加拉语、俄语、日语、德语、韩语、法语、越南语、土耳其语等 35 种主流语言的翻译,并将根据用户反馈持续增加新语言。
- 多接口选择:提供 3 种免费翻译方式和 3 种商业级翻译 API,满足不同需求。
- 翻译缓存:每行翻译将自动缓存到本地,避免重复翻译。
- 自动匹配格式:在单文件模式下,根据字幕格式自动识别并输出相应的格式;在多文件模式下,将按照原文件的名称和格式输出。
- 字幕提取:在单文件模式下,用户可以一键提取并复制字幕中的文本,适用于 AI 总结等应用。
参数说明
翻译模式
subtitle-translator 设有单文件和多文件两种翻译模式,适应不同的使用场景。
- 单文件模式:通过上传字幕文件或粘贴字幕文本导入字幕。翻译完成后,结果将显示在文本框中,需要手动复制或导出。
- 多文件模式:支持批量上传字幕文件,翻译后的字幕文件将按原名称保存在浏览器默认下载目录,无需人工干涉。
翻译 API
subtitle-translator 提供了 6 种翻译 API,一般选择免费的 GTX API(google)即可。
- 翻译质量:DeepL(X) > Google Translate > Azure Translate > GTX Web(免费)> GTX API(免费)
- 稳定性:Google Translate > Azure Translate > DeepL > GTX API(免费)> DeepLX > GTX Web(免费)
如果对翻译速度要求高,可以自行申请 Google Translate、Azure Translate 和 DeepL Translate 的 API 密钥。Google Translate 在常见句子的翻译上较为普遍,特别适合翻译用户界面 UI,每月可免费翻译 50 万字符;DeepL 在长文本翻译方面表现更优,能提供更流畅的翻译结果,每月可免费翻译 50 万字符;Azure Translate 支持语言较多,每月可免费翻译 200 万字符(仅限注册 Azure 后的前 12 个月)。若想申请这些 API,可参考相关的接口申请教程。
不同 API 的支持语言: DeepL 支持语言、google translate 支持语言、azure 支持语言。
双语字幕
勾选双语字幕之后,翻译内容将会在原始字幕的下一行显示。请注意,若字幕过长,双语字幕可能无法完整显示,请根据需要进行选择。
分割翻译
为加快翻译速度,我将多行字幕打包在一起翻译,而这里的分割翻译字符数就是每个打包块的上限。以下是每个翻译服务的最大字符数限制:
- DeepL Free API:每个请求最大字符数为 5000 个字符。
- Azure Translate:每个请求最大字符数为 10K 个字符。
- Google Translate: Google Translate 网页界面每次翻译最多 5000 个字符,Google Cloud Translation API 每个请求最大字符数为 30K 个字符。(由于 Google 翻译会破坏换行符,因此未使用分割翻译。)
延迟时间
延迟时间主要针对 Azure Translate 的免费套餐,其他翻译 API 可以不修改。在我的测试中,Azure Translate Free 的延迟时间设为 5000 毫秒以上为佳。大量字幕需要翻译时,可以多设些延迟,避免出现大量空白字幕。
使用注意
使用 subtitle-translator 时,请注意以下几点:
- DeepL API 不支持在网页上使用,所以 subtitle-translator 在服务器端提供了一个专门的 DeepL 翻译转发接口,该接口仅用于数据转发,不会收集任何用户数据。用户可以选择在本地环境中部署并使用这一接口。
- subtitle-translator 不会储存你的 API Key,所有数据均缓存在本地浏览器中。
- GTX Web 接口对服务器压力过大,改为仅在本地运行。另外,避免在全局代理环境下使用 GTX Web 接口,以免出现翻译错误。
更新日志
待更新功能:一种字幕批量翻译成多种其他语言的字幕;i18n;本地客户端化;对翻译后的字幕内容进行 ai 润色;自定义翻译接口:DeepLX 和 Siliconflow、Grop 等 LLM 添加自定义接口。
- 2024.10.12:为 GTX API 添加了自定义延迟设置。(根据反馈,原设置在超过 150 次后容易达到上限,数量较低时则无需调整)
- 2024.09.08:增加 GTX API 的分批翻译限制,确保翻译的稳定性。新增繁体中文支持。
- 2024.09.07:优化对 webvtt 格式的识别;默认双语字幕格式为 .ass,并兼容多行字幕的双语处理。
- 2024.09.06:为翻译结果添加本地缓存,提升重复内容的翻译速度。
- 2024.09.05:跳过纯数字或字符内容,避免不必要的翻译。
- 2024.08.13:新增双语字幕输出功能。
- 2024.07.11:在单文件模式下,自动匹配字幕格式。
- 2024.07.06:新增对 vtt 和 ass 格式字幕的支持。
- 2024.07.05:字幕翻译语言支持扩展至 35 种。
- 2024.06.26:新增仅提取字幕内容的功能。
期待大家的反馈与建议,我将不断优化 subtitle-translator,希望这款工具能够为大家带来便利,帮助解决观看视频时的语言障碍。
- 0
- 0
- 0
- 0
- 0