MachineSub - 字幕生成与机器翻译

一款用于moviepolit自动生成英文、中文字幕的插件。基于faster-whisper生成外语字幕,使用百度通用文本翻译或火山引擎文本翻译生成中文字幕。

Emby、jellyfin、Plex字幕解决方案。不用再费力找字幕。


前言

在使用moviepolit管理媒体文件的时候,经常会遇到下载的电影或电视剧没有中文字幕,且很难找到官方或合适的字幕文件。那么此时,自动通过媒体文件的外挂字幕、内嵌字幕、音频生成字幕,并翻译成中文就很有必要了。

其实moviepolit中早就有了相关插件:autosub、AI字幕自动生成(V2)。但是这两个插件后端翻译成中文的方式是调用openai等大模型。就我自己而言,维护这些大模型的token有点麻烦,并且我翻译的用量不大。因此我的要求:国内能直连、少量维护或者不用维护、每月有一定的免费额度。

正值养虾潮,现在的AI使用范围越来越广,各大大模型的厂商也在慢慢收减免费额度,而且免费额度页经常遇到访问高峰无法访问的问题,开了token也是要高级一些的模型才能及时处理。

而且来说,单纯的电影、电视剧英文转中文,并不需要那么高的要求,像百度翻译这种通用平台完全可以满足要求,大平台值得信赖。而且每个月还有百万字符的免费额度,完全够用,就算不够,49块钱就可以买到一百万字符,成本低得很。火山引擎的文本翻译免费额度更高一些,每月200万字。

开通机器翻译

将获取到的秘钥填入到插件对应的位置,再选择对应的平台用于翻译就行。

Machinesub插件截图

插件预留了两个平台的设置,方便用户随时切换。

百度通用文本翻译

使用您的百度账号登录百度翻译开放平台
注册成为开发者(个人就行),获得 APPID ;
进行开发者认证(认证成功就是高级版,每月100万字符免费。不认证就是标准版,每月5万);
开通通用翻译API服务:开通链接 (选择“通用文本翻译”);

复制APP ID和秘钥

开通完服务后,将上面的APP ID和秘钥复制到插件的“百度翻译接口设置”。保存即可。

火山引擎机器翻译

火山引擎的机器翻译开通,参照官方文档就行,很详细:机器翻译文档指南

只需要看1-4,获取到秘钥就可以了。

项目介绍

MoviePilot-Plugin-Market

在MoviePilot的插件市场加入本仓库地址,以加载本插件:https://github.com/tianlingzi/MoviePilot-Plugins

功能特点

  • 支持 faster-whisper 语音识别,从音轨自动生成字幕。
  • 支持优先使用外挂字幕或内嵌字幕,减少 ASR 耗时。
  • 支持百度翻译、火山引擎翻译将外语字幕翻译成中文。
  • 支持双语字幕输出(中文 + 原文)。
  • 支持批量翻译,提升翻译效率。
  • 支持字幕源语言偏好(仅英文 / 英文优先 / 原音优先)。
  • 支持监听媒体入库事件自动执行字幕生成。
  • 支持手动执行一次,并可选择强制翻译——忽略已有字幕检查,直接对视频进行音频提取、字幕生成和翻译。
  • 支持任务队列机制与任务状态列表展示。

配置说明

基础配置

配置项说明默认值
启用插件是否启用插件
清除历史记录清除已完成的任务记录(完成、跳过或失败)
媒体入库自动执行监听到媒体入库事件后自动执行字幕生成
手动执行一次保存配置后立即执行一次任务
发送通知是否发送任务执行通知
文件大小(MB)最小处理的视频文件大小,小于该值的文件不处理10
字幕源语言偏好设置字幕提取的优先级策略优先原音字幕
翻译为中文是否使用百度翻译将字幕翻译成中文
字幕输出模式生成、保留哪些字幕单字幕

ASR配置(语音识别)

配置项说明默认值
允许从音轨提取字幕是否允许从视频音轨中提取字幕
faster-whisper 模型选择使用的 Whisper 模型大小base
使用代理下载模型是否使用代理下载模型

百度翻译接口配置

配置项说明默认值
百度翻译APP ID在百度翻译开放平台申请的APP ID
百度翻译密钥在百度翻译开放平台申请的密钥

翻译参数配置

配置项说明默认值
启用批量翻译是否启用批量翻译以提高效率
每批翻译行数每批处理的字幕行数10
上下文窗口大小翻译时考虑的上下文行数(百度翻译不使用,保留配置兼容)0
翻译请求重试次数翻译失败时的重试次数3
翻译英文时合并整句对英文字幕先合并单词再翻译,提升翻译质量

手动运行配置

配置项说明默认值
媒体路径要处理的媒体文件或文件夹绝对路径,每行一个

字幕提取策略说明

字幕提取优先级:外挂字幕 > 内嵌字幕 > 音轨识别

字幕提取策略的选择主要取决于视频源语言和翻译能力。对于包含多语言字幕的非英语视频,建议根据以下原则选择策略:

  1. 仅英文字幕

    • 仅使用英文字幕作为翻译源
    • 当视频无英文字幕时,使用ASR提取
    • 适用于仅支持中英互译的场景
  2. 优先英文字幕

    • 优先使用英文字幕作为翻译源
    • 无英文字幕时,使用其他语言字幕
    • 当所有字幕都不存在时,使用ASR提取
    • 适用于英译中翻译质量更好的场景
  3. 优先原音字幕

    • 优先使用视频原始语言的字幕
    • 无原音字幕时,使用英文字幕
    • 当所有字幕都不存在时,使用ASR提取
    • 适用于支持多语言翻译的场景

注意事项

  1. 翻译功能依赖百度翻译API和火山引擎文本翻译API配置,使用前请确保已正确配置APP ID和密钥。
  2. 首次使用音轨识别功能时,会自动从 HuggingFace 下载模型。开启"使用代理下载模型"选项会使用 MP 配置的代理。
  3. 媒体路径支持单个文件或文件夹的绝对路径。选择文件夹时会递归处理其中的所有视频文件,外挂字幕将从媒体文件同级目录中查找。
  4. 批量翻译通过一次处理多行字幕来减少 API 调用次数,提高效率。如果翻译结果与原文行数不匹配,系统会自动降级为逐行翻译。
  5. 翻译后的中文字幕会打上"机翻"标签。
  6. 插件运行时会启动一个后台线程用于消费任务队列,插件关闭时会清空队列并终止当前任务。
最后修改:2026 年 08 月 11 日
如果觉得我的文章对你有用,请随意赞赏