发布 AMMDS v1.6.64 — VibeVoice 语音识别与字幕生成
AMMDS v1.6.64 是一次面向“音视频智能化”的重要更新。本版本接入了微软开源的 VibeVoice 语音识别模型,让 AMMDS 拥有了为影视资源自动生成字幕的能力;同时引入了 FFmpeg 集成工具与统一的工具下载服务,并修复了本地推理的若干稳定性问题。
新功能与改进
VibeVoice 语音识别集成
本版本最大的亮点是接入了微软开源的 VibeVoice-ASR 模型,通过 OpenAI 兼容的 ASR 接口(POST /v1/audio/transcriptions)接入自部署的 VibeVoice 服务,实现视频语音自动识别并生成 SRT 字幕文件。
VibeVoice-ASR 支持单遍处理最长 60 分钟的音频,覆盖 50+ 语言,并能在一次推理中完成语音识别、说话人分离与时间戳标注。关于该模型的详细介绍,可以参阅我们发布的《微软 VibeVoice 语音识别模型介绍》一文。
AMMDS 提供两种接入模式:
- 本地模式(AMMDS 托管):由 AMMDS 内置托管识别服务,自动下载 GGUF 模型与推理程序并启动服务,无需外部依赖
- 远程模式(外部服务):连接已有的 OpenAI 兼容 VibeVoice 服务地址,由外部服务完成识别
本地模式下,模型文件(GGUF,合计约 1.5GB)会从 HuggingFace 官方仓库 microsoft/VibeVoice-ASR-BitNet 下载,并优先使用国内镜像 hf-mirror.com 加速。系统会自动匹配最优 GGUF 文件,无需手动选择模型。
字幕生成工具箱
为配合 VibeVoice,新增了可视化的字幕任务管理界面,入口位于 工具箱 → 媒体编辑 → 字幕生成。
任务创建方式:
| 方式 | 说明 |
|---|---|
| 单个视频 | 选择服务器上的单个视频文件创建单任务 |
| 目录批量 | 选择包含视频文件的目录,为目录内所有视频批量创建任务 |
任务管理操作支持新建、取消、重试、查看、编辑、下载与删除。任务列表展示视频文件名、路径、时长、识别语言、双语标记、状态、进度与创建时间,并支持按状态筛选(全部 / 进行中 / 已完成)。
任务状态流转:
| 状态 | 说明 |
|---|---|
| 等待中 | 等待执行(并发槽位不足) |
| 排队中 | 超出最大并发任务数,等待空闲槽位 |
| 进行中 | 正在识别 |
| 已完成 | 字幕生成成功 |
| 失败 | 识别失败 |
| 已取消 | 用户手动取消 |
字幕生成位置
支持两种字幕输出位置:
- 视频同源(默认):字幕生成到视频所在目录并使用视频文件名(如
测试视频.srt),便于播放器自动加载 - 统一目录:生成到
data/subtitles/vibevoice/目录(以任务 ID 命名)
双语字幕
开启双语字幕后,识别结果会通过系统翻译模块翻译为目标语言,字幕双行显示(原文 + 译文)。翻译能力复用 AMMDS 既有的翻译服务集成(百度、腾讯、DeepL、OpenAI、Gemini 等)。
FFmpeg 集成工具
新增 FFmpeg 集成管理页面(集成 → FFmpeg),提供 FFmpeg/FFprobe 资源的下载状态查看与手动下载能力。FFmpeg/FFprobe 是音视频处理的基础组件(视频时长探测、音频提取、截图等),是 AMMDS 音视频相关功能的底层依赖。
AMMDS 启动后会自动检查 FFmpeg/FFprobe 是否安装,缺失时异步提交下载,不阻塞启动;下载未完成时每 60 秒重新检查一次。
通用工具下载服务
新增统一的工具程序异步下载框架,替代各插件独立的下载逻辑,目前支持 FFmpeg、MetaTube、VideoHashes、VibeVoice 等多个工具的下载管理。
主要特性:
- 异步下载:使用固定线程池(2 线程)异步下载,不阻塞主流程
- 防重复:已就绪或下载中的组件自动跳过
- 多源回退:下载地址支持多个源,失败时自动回退到下一源
- 进度跟踪:返回文件名、路径、是否就绪、下载进度等状态
- 统一路径展示:所有工具下载路径展示逻辑统一
MetaTube、ThePornDB、VibeVoice 等插件的集成页面均新增了资源下载卡片,支持自动下载。
启动器选择
本地模式下支持两种推理引擎,用户可按场景选择:
| 引擎 | 说明 | 适用场景 |
|---|---|---|
asr_infer(推荐) | 命令行单次推理,每段独立进程,无常驻内存占用;LM 上下文 16384,实测速度更快(RTF ≈ 1.39) | 默认选择,适合大多数场景 |
asr_stream_server | 常驻进程(约 2.5GB 常驻内存),LM 上下文小,长音频会因 ggml 上下文分配失败崩溃 | 仅在需要避免每段重新加载模型时选用 |
本地推理稳定性修复
针对本地模式推理进程崩溃问题进行了一系列修复:
| 问题 | 修复方案 |
|---|---|
| 本地模式推理进程崩溃 | 将默认单段最大时长从 60 分钟改为 3 分钟,避免超出推理模型上下文限制 |
| 配置超出安全上限 | 新增单段时长自动收敛逻辑,本地模式自动将超出安全上限的配置下调到 3 分钟 |
| 常驻服务重启端口泄漏 | 修复常驻服务重启时端口泄漏问题,复用原有 HTTP 服务端口 |
| 官方下载地址路径 | 调整官方下载地址路径,优化资源访问路径 |
| 异常提示不友好 | 优化异常提示信息,添加音频过长或内存不足的排查指引 |
本地模式受推理模型上下文限制(实测 240s 可运行 / 480s 崩溃),代码会按当前启动器能力自动收敛:切换启动器时前端应用对应推荐参数,本地模式自动将超出安全上限的 vibevoice_segment_minutes 下调到 3 分钟,远程服务可按其能力调大。
配置项说明
VibeVoice 集成支持以下配置项(保存在系统配置表中):
| 配置项 | 默认值 | 说明 |
|---|---|---|
| 接入模式 | local | local 本地托管 / remote 远程服务 |
| 启用状态 | false | 是否启用 VibeVoice 插件 |
| 服务地址 | http://127.0.0.1:8000 | 远程模式使用;本地模式由内置服务自动写入 |
| API Key | (空) | 可选,远程服务鉴权 |
| 识别模型名 | vibevoice-asr | 识别使用的模型名 |
| 最多同时任务数 | 1 | 并发任务上限 1~5 |
| 单个任务最大线程 | 4 | 转发给服务的提示参数 |
| 单段最大分钟 | 3 | 单段识别最大时长(分钟),本地模式上限 3 |
| 模型仓库 | microsoft/VibeVoice-ASR-BitNet | HuggingFace 官方仓库 |
| 启动器优先级 | asr_infer | asr_infer 命令行单次推理 / asr_stream_server 常驻服务 |
| 字幕生成位置 | video_dir | video_dir 视频同源 / unified 统一目录 |
升级指南
Docker 部署
# 拉取最新镜像
docker pull ghcr.io/mengshou/ammds:latest # 国内用户可替换为 qyg2297248353/ammds:latest(Docker Hub)
# 重新启动容器
docker compose down
docker compose up -d
注意事项
- 首次启用 VibeVoice 本地模式时,系统会自动下载约 1.5GB 的 GGUF 模型与推理程序,请确保磁盘空间充足并保持网络畅通(国内会优先使用
hf-mirror.com镜像) - 本地模式对内存有较高要求,建议至少为容器分配 4GB 可用内存;资源紧张时可选“远程模式”连接外部 VibeVoice 服务
- FFmpeg/FFprobe 会在升级后自动下载,无需手动干预
已知问题
- 在内存不足的设备上,VibeVoice 本地模式长段识别可能因 ggml 上下文分配失败而崩溃,建议降低单段最大分钟数或改用远程模式
- 常驻服务(
asr_stream_server)模式约占 2.5GB 常驻内存,仅在确有需要时启用
致谢
感谢社区用户在 VibeVoice 集成开发过程中提交的反馈与测试支持。AMMDS v1.6.64 为影视库的智能化补全迈出了关键一步,下一版本我们将继续完善字幕翻译流程,并引入大模型对话能力,敬请期待!
