본문으로 건너뛰기

AMMDS 字幕生成与翻译工作流实战

· 약 5분
萌森
新疆萌森软件开发工作室

很多影视资源——尤其是冷门剧集、纪录片、海外综艺——并没有现成字幕,导致在媒体服务器上“只能看画面”。自 v1.6.64 接入 VibeVoice、v1.6.66 增补字幕翻译后,AMMDS 已经能帮你为整目录视频自动生成字幕,并一键转成双语版本。本文以一次完整的“日剧批量生成中文字幕”为例,演示整套工作流的实战用法。

一、前置准备

在开始之前,请确认以下条件已满足:

  1. AMMDS 已升级至 v1.6.66 及以上:字幕生成与翻译能力分别来自 v1.6.64 与 v1.6.66
  2. FFmpeg/FFprobe 已就绪:v1.6.64 起会在启动时自动下载,可在 集成 → FFmpeg 查看状态
  3. VibeVoice 已启用:在 集成 → VibeVoice 开启插件,建议默认使用本地模式
  4. 至少配置一种翻译引擎:双语字幕依赖翻译模块,请先在翻译服务中配置百度 / 腾讯 / DeepL / OpenAI / Gemini 中的任意一种

本地模式首次启用会自动下载约 1.5GB 的 GGUF 模型与推理程序,国内会优先使用 hf-mirror.com 镜像加速,请确保磁盘空间与网络畅通。

二、理解任务执行流程

动手前,先了解一条字幕任务的完整生命周期,有助于你在出问题时快速定位:

新建任务 (单个视频 / 目录批量)


校验视频文件 + 探测时长 (FFprobe)
├─ 时长上限 12 小时
├─ 单段最大时长分段 (默认 3 分钟, 段间重叠 2 秒)
└─ 过短末段并入前段

持久化任务记录 (状态 WAITING)

提交到线程池
├─ 并发信号量控制 (动态跟随配置, 默认 1, 上限 5)
└─ 超出并发上限 → 状态转为 QUEUED

执行识别
├─ 信号量获取 → 状态 RUNNING
├─ 按分段计划逐段提取音频 (FFmpeg)
├─ 调用 VibeVoice 服务识别 (本地 / 远程)
├─ 合并分段结果
├─ (可选) 双语字幕 → 调用翻译模块翻译为目标语言
└─ 写入 SRT 文件

状态流转: SUCCESS / FAILED / CANCELED

可以看到,FFmpeg 负责音频提取与时长探测,VibeVoice 负责语音识别,翻译模块负责双语输出,三者协作完成一条流水线。

三、实战:批量生成日剧中文字幕

场景描述

假设你的 NAS 上有一个目录 /media/series/j-drama-2026/,里面是 12 集没有字幕的日剧。我们希望为它们生成日文原文字幕,并翻译成中文形成双语字幕。

第 1 步:确认 VibeVoice 模型就绪

进入 集成 → VibeVoice,确认:

  • 接入模式为 local(本地托管)
  • 模型状态显示“已就绪”,否则点击下载,等待约 1.5GB 模型下载完成
  • 启动器优先级保持 asr_infer(推荐,命令行单次推理,无常驻内存占用)

第 2 步:配置分段与并发

针对本地模式,建议这样配置以兼顾质量与稳定性:

配置项建议值说明
最多同时任务数1~2本地推理吃内存,低配机器建议 1
单个任务最大线程4转发给服务的提示参数
单段最大分钟3本地模式上限 3 分钟,超出会被自动收敛

切换启动器为 asr_stream_server 时前端会应用对应推荐参数,但其常驻内存约 2.5GB 且长音频易因 ggml 上下文分配失败崩溃,无特殊需求不建议使用。

第 3 步:创建批量字幕任务

进入 工具箱 → 媒体编辑 → 字幕生成,选择“目录批量”:

  1. 选择目录 /media/series/j-drama-2026/
  2. 识别语言选择 日语
  3. 勾选 双语字幕
  4. 目标语言选择 中文
  5. 字幕生成位置建议保持 视频同源,便于播放器自动加载

提交后,系统会为目录内所有视频批量创建任务。超出最大并发数的任务自动进入“排队中”状态,等待空闲槽位。

第 4 步:跟踪任务进度

任务列表会展示视频文件名、路径、时长、识别语言、双语标记、状态、进度与创建时间。展开行还会显示分段进度(已完成 / 总数)、字幕片段数、识别模型、线程数、字幕文件路径与错误信息。

支持按状态筛选:全部 / 进行中 / 已完成,方便你聚焦当前正在跑的任务。

字幕任务状态说明:

状态含义
等待中等待执行(并发槽位不足)
排队中超出最大并发任务数,等待空闲槽位
进行中正在识别
翻译中翻译任务:基于源字幕文件进行翻译
已完成字幕生成成功
失败识别失败
已取消用户手动取消

第 5 步:处理失败与重试

如果某个任务因网络抖动或内存不足失败:

  • 在任务列表点击 重试 即可重新执行
  • 若是本地模式长段崩溃,可降低“单段最大分钟数”后重试
  • 若是远程模式速率限制,可降低并发任务数

第 6 步:查看、编辑与下载字幕

任务完成后可以:

  • 查看:直接预览生成的字幕内容
  • 编辑:对识别不准的片段手动修正
  • 下载:下载 SRT 字幕文件,归档或分享

四、字幕翻译工作流

v1.6.66 新增的字幕翻译能力,让你可以基于已有字幕任务创建翻译任务,而不必重新识别音频。这在不开启“双语字幕”先生成原文字幕、之后再决定要不要翻译的场景下非常实用。

典型流程

  1. 先用 VibeVoice 生成日文原文字幕(不勾选双语)
  2. 在翻译模块配置好目标语言(如中文)
  3. 在字幕任务上发起翻译任务,状态进入 TRANSLATING(翻译中)
  4. 翻译完成后,字幕文件以双行显示(原文 + 译文)

翻译引擎选择建议

不同引擎各有取舍:

引擎适用场景备注
DeepL欧美语言、对译文流畅度要求高需 API Key,有免费额度
OpenAI / Gemini对上下文理解要求高、术语较多适合专业内容
百度 / 腾讯中文互译、国内访问稳定适合大批量日中翻译

SRT 工具类已增强解析能力,对非标准 SRT 文件也有更好兼容性,但仍建议以标准 SRT 为翻译源,避免因格式问题影响分段对齐。

五、让播放器自动加载字幕

字幕生成位置选“视频同源”时,字幕会以视频文件名命名(如 第01集.srt)并放在视频同目录下,Emby / Jellyfin / Kodi 等媒体服务器会自动加载外挂字幕,无需手动挂载。

如果你的播放器没有自动加载,检查:

  • 字幕文件名与视频文件名是否完全一致(仅扩展名不同)
  • 媒体服务器是否已在 AMMDS 中配置并触发媒体库刷新
  • 字幕编码是否为 UTF-8(AMMDS 默认输出 UTF-8)

六、常见问题排查

Q1:本地模式长视频识别中途崩溃

这是 ggml 上下文分配失败的典型表现。请:

  • 确认“单段最大分钟”不超过 3(本地模式会自动收敛)
  • 降低并发任务数为 1
  • 内存紧张时改用“远程模式”连接外部 VibeVoice 服务

Q2:识别结果全是乱码或空白

  • 确认“识别语言”与视频实际语言一致
  • 检查视频音轨是否正常(FFprobe 探测时长是否为 0)
  • 远程模式检查服务地址与 API Key 是否正确

Q3:双语字幕译文与原文对不上

  • 翻译基于 SRT 时间轴分段进行,源字幕格式不规范会导致分段错位
  • 建议用 AMMDS 生成的标准 SRT 作为翻译源,而非外部来源的非标准字幕

七、性能小贴士

  • 批量优于零散:目录批量创建后,任务会在并发槽位内排队,比一个个手动创建更高效
  • 分段时长权衡:单段越小越稳定但合并开销更大,本地模式 3 分钟是安全上限;远程服务可按其能力调大
  • 段间重叠的价值:默认 2 秒重叠用于避免句子被切断,合并时会去重,不必担心重复字幕

结语

VibeVoice + 字幕翻译,让 AMMDS 把“找字幕”这件最耗时的体力活自动化了。从音频提取、长音频分段、多语言识别,到双语翻译、播放器自动加载,整条链路在 AMMDS 内闭环完成,数据始终留在你自己的本地环境。

下次遇到没字幕的冷门资源,不妨直接交给 AMMDS 跑一晚上,第二天就能抱着带中文字幕的剧集开看了。