AI 字幕翻译:接入大模型 API 整轨自动翻译

外语视频配中文字幕,过去是一条「听写→打轴→翻译→校对」的流水线,其中翻译环节最耗人。大模型把这一环的成本打到了几乎为零——但大多数播放器没有把「翻译」做成播放体验的一部分:你得导出字幕、开网页、传文件、下载结果、再导回播放器。ZWPlayer 把整条链路收进了播放器:设置里选目标语言,点开始翻译,译文直接挂成副轨双语显示。本文讲接入方法、服务端协议与典型用法。

播放器侧:一个配置项 + 一个面板

初始化时给出字幕服务的 base URL:

new ZWPlayer({
  playerElm: 'player',
  url: 'https://example.com/lecture.mp4',
  subtitles: [{ url: 'https://example.com/en.srt', title: 'English' }],
  translateApi: 'https://your-server.com/subtitle-api/api',
});

配置后,设置面板出现「字幕翻译」入口,打开翻译面板:选择原始字幕轨与目标语言,点「开始翻译」。

字幕翻译面板 图 1:字幕翻译面板——选择原始字幕与目标语言后整轨翻译

翻译完成后,译文自动挂载为副轨,与原文组成双语字幕——不需要导出再导入,观众的观看不中断。配合《HLS/DASH 内嵌字幕预下载》,流媒体的流内字幕同样可以整轨翻译。

服务端:协议开放,引擎自由

translateApi 指向的是一个极简的 HTTP 字幕服务,协议完全公开,任何开发者都能自行实现或改写:

接口 方法 作用
/api/languages GET 返回支持的目标语言列表(填充面板下拉框)
/api/translate POST multipart/form-data 提交 SRT 文件与目标语言,同步返回译文

设计上有两个务实决定:

  1. 上游引擎不锁定。翻译质量取决于大模型,协议只约定「收 SRT、回 SRT」,服务端想接阿里云 DashScope(qwen-mt-flash)、DeepSeek 还是自部署模型都行——模型迭代时换上游,播放器零改动;
  2. 同步阻塞接口。一部视频的字幕翻译在大模型上是秒级到分钟级的任务,同步接口让部署简单到只需一个进程,不必引入任务队列。

鉴权采用 API Key(可加 IP 白名单),适合个人与团队自用;要对外提供服务再考虑配额与限流。

三个典型用法

  • 外语学习:原文轨 + AI 译文轨双语同显,生词对照即看即懂;配合字幕全文搜索(Ctrl+F 级体验),回找某句台词复习;
  • 课程本地化:英文技术课程整轨翻译成中文挂副轨,团队内部分发一次到位;对翻译质量不放心时,AI 译文先出初稿,人工只做校对;
  • 多语言站点:同一视频挂多语字幕轨,按 translateApi 逐语言生成,观众在字幕菜单自选——比「每语言渲染一版视频」便宜两个数量级。

质量与成本的现实预期

  • 大模型翻译字幕的常见短板:专有名词一致性(人名前后不一)、俚语双关、文化梗。同一服务固定模型与提示词能显著改善一致性;
  • 成本量级:一部 90 分钟电影约 1500 条字幕,按主流大模型定价通常在几分钱到几毛钱之间——比人工翻译低三个数量级;
  • 建议永远保留原文轨:译文轨当辅助而非替代,观众可一键关闭。

常见问题

必须自建服务吗? 是——协议开放、参考实现轻量,一个进程即可跑起来;这保证了你的字幕数据不经过第三方(除你选择的模型 API 外)。

翻译会覆盖原字幕吗? 不会。译文挂副轨,原文主轨原样保留,双语开关随时切换纯原文/纯译文/双语。

BCC/VTT 也能翻译吗? 翻译接口以 SRT 为交换格式,其他格式先转换再提交;播放器侧的导出能力可以完成这一步。

相关文章