📍 无忆研习社 › 开源解码 › 本地跑起来的 AI 字幕神器 AutoSubs:视频创作者告别手敲时间轴的开源解法

本地跑起来的 AI 字幕神器 AutoSubs:视频创作者告别手敲时间轴的开源解法

摘要:AutoSubs是一款完全开源、本地运行的AI字幕生成工具,集成了Whisper、Parakeet和Moonshine三大语音识别模型,并内置Pyannote说话人分离功能,能自动识别并标记不同说话人。它支持独立运行和深度集成DaVinci Resolve,可在Windows、macOS和Linux上离线使用,无需上传云端、无订阅费用,能一键生成带时间轴和角色标签的字幕,大幅提升视频创作效率。
字号 100%
行距 2.05
当前可见 60% 的内容
作者:莫潇羽@无忆研习社(www.wuyi.wiki)|转载请注明出处

🎯 快速摘要

如果你只想知道结论,记住这几条就够了:AutoSubs 是一款完全开源、完全本地运行的 AI 字幕生成工具,由开发者 Tom Moroney 主导维护,GitHub 上的 Star 数已经突破 4.3K。它把 Whisper、Parakeet、Moonshine 这三大主流语音识别模型直接跑在你自己的电脑上,不走云端、不需要订阅、不限时长,音视频文件丢进去就能一键产出带时间轴的字幕。更关键的是,它内置了 Pyannote 说话人分离能力,能自动识别对话中有几个人在讲话,并且给每个人打上独立标签和颜色;同时支持 独立运行 和 深度对接 DaVinci Resolve(达芬奇) 两种工作流,支持 Windows、macOS(M 系列与 Intel 双架构)、Linux 三大平台。一句话总结:它解决的是视频创作者最头疼的那件事——字幕从识别到对齐到分角色,不用再手动做。 下文会从技术原理、架构拆解、模型区别、逐步安装到实战使用,把这个工具讲透,想深入了解的朋友往下看。


一、做视频的人,都卡在过同一个环节

写这篇文章之前我(莫潇羽)特地翻了一下自己这几年剪过的项目,发现一个规律:一条视频从开机到发布,真正花在"剪辑本身"上的时间其实没那么多,真正耗时间的是字幕这一关。

剪完一条十分钟的片子,粗剪可能一小时就搞定,但字幕的打轴、核对、断句、调色、找错别字,往往要再花两到三个小时。如果是访谈、播客、双人对谈这种多说话人场景,还要再叠加一个工作量——分辨谁在说话、给不同人的字幕设不同颜色、拉不同轨道。很多人用剪映、Arctime、Pr 自带的识别去做,要么精度达不到,要么免费额度不够用,要么对多人对话束手无策,尤其是使用敏感素材的时候,还要担心上传云端是否安全。

这也是为什么这几年 Whisper 一出来,开源社区立刻涌现出几十个包装它的 GUI 工具。但大多数工具要么只解决"识别",不解决"分角色";要么解决了"分角色",但没法无缝接到剪辑软件里;要么界面做得很工程师,没有考虑普通用户怎么用。

今天要讲的 AutoSubs,是我最近一段时间在无忆研习社(www.wuyi.wiki)的选题库里反复试用之后,真心觉得值得写一篇详细拆解的项目。它的目标非常明确:让本地设备上的 AI 一口气搞定识别、打轴、分说话人、送回剪辑软件这整条链路。


二、AutoSubs 到底是什么

AutoSubs 是一款 开源免费 的桌面端字幕生成工具,项目托管在 GitHub 上(仓库地址 https://github.com/tmoroney/auto-subs ),发布主站是 https://tom-moroney.com/auto-subs/ 。它的设计目标只有一句话——"一键产出高质量字幕",而且要做到三件事:快、准、可离线。

和市面上常见的字幕工具相比,它最核心的差异点可以用一张对照表来理解:

维度

云端订阅型工具

本地脚本型工具

AutoSubs

运行环境

服务器

命令行 / Python 环境

本地 GUI 桌面应用

隐私

文件需上传云端

本地

完全本地

使用门槛

注册、订阅

会装 Python

下载 .exe 或 .pkg 即用

说话人识别

部分支持

需要自行拼接 Pyannote

内置

剪辑软件集成

几乎没有

需要自行开发脚本

原生对接 DaVinci Resolve

语言支持

大多按次数计费

视模型而定

50+ 语言

成本

按时长/按次

有硬件门槛

完全免费

AutoSubs 属于第三种路径:把底层的模型链路、音频预处理链路、剪辑软件对接链路全部封装进一个桌面应用里,给用户看到的只有"选文件、点按钮、看结果"三步。

它目前已经支持以下系统:

  • Windows 10/11(x86_64)
  • macOS(Apple Silicon 与 Intel 分别打了不同安装包)
  • Linux(提供 .deb 安装包,Debian / Ubuntu 系可直接装)

三、本地运行意味着什么:不只是"不用上传"这么简单

很多人对"本地运行"的理解还停留在"不用联网就能用",但这个特性背后带来的改变其实是系统性的,值得展开讲一下。

第一,敏感素材可以放心丢进去了。 企业内训视频、未公开的采访、商业谈判录音、学术访谈、播客原带——这些素材一旦经手云端服务,就涉及版权、保密协议、甚至合规风险。AutoSubs 把模型直接放在用户机器上跑,所有处理都在本地硬盘里完成,不会产生任何网络请求(首次下载模型除外),这件事对 B 端用户来说尤其重要。

第二,处理速度不再受网络影响。 云端方案必然要走"上传→排队→处理→下载"的链路,文件一大就要等很久。本地方案只受制于你的 CPU / GPU 性能,一条十几分钟的视频,在一台 M1 的 MacBook Pro 上,用 Parakeet 跑完全文识别可能只要几十秒。

第三,没有调用次数限制。 云端服务必然要对每次调用计价,而本地跑模型只消耗电费。你可以一晚上处理掉几十个小时的素材而不用看额度。

第四,不受服务端策略影响。 云服务关停、调价、改 API 的事在这几年反复上演,本地工具的好处就是"下载下来就永远能用",哪怕原项目不再维护,老版本也还在本地能跑。

这里莫潇羽多啰嗦一句:选开源工具的时候,一个很重要的判断标准就是——它是不是真的可以脱离原作者持续运行。AutoSubs 满足这一条,因为它依赖的所有组件(Whisper、Parakeet、Moonshine、Pyannote、FFmpeg、Tauri)都是社区维护的开源资产,不存在单点风险。


四、架构拆解:一个 Tauri 桌面应用是怎么搭起来的

这部分是整篇文章的"硬核区",打算把工具讲明白的话,绕不开它的技术选型和架构。看不懂代码细节没关系,只要知道每一层在做什么就够了。

4.1 整体架构:前端 + Tauri 桥 + Rust 后端 + 引擎 + 外部依赖

AutoSubs 的整体结构可以用这样一张流程图来描述:

graph TB
    subgraph 前端层
        UI[React + TypeScript 界面]
        CTX[状态管理:字幕/模型/进度/设置]
        UI <--> CTX
    end
    subgraph Tauri 桥接层
        IPC[IPC 命令与事件总线]
    end
    subgraph Rust 后端
        API[命令处理器]
        AP[音频预处理]
        API --> AP
    end
    subgraph 转录引擎
        EM[引擎管理器]
        EM --> W[Whisper]
        EM --> P[Parakeet / Moonshine]
        EM --> D[Pyannote 说话人分离]
        EM --> TR[翻译器]
    end
    subgraph 外部依赖
        FF[FFmpeg 音频解码]
        HF[HuggingFace 模型托管]
    end
    subgraph DaVinci Resolve(可选)
        LUA[AutoSubs.lua 脚本]
    end
    UI <--> IPC
    IPC <--> API
    API --> EM
    AP --> FF
    EM --> HF
    LUA <-.IPC.-> IPC

这张图里藏着几个关键信息点。

前端用的是 React + TypeScript。这意味着它的界面是标准的现代 Web 技术栈,熟悉 React 的开发者可以直接读代码、改 UI 主题甚至做二次开发。

中间层用的是 Tauri。Tauri 是近几年取代 Electron 的新一代桌面应用框架,核心区别在于:它不像 Electron 那样把整个 Chromium 打包进安装包,而是复用操作系统原生的 WebView(Windows 上的 Edge WebView2,macOS 上的 WebKit,Linux 上的 WebKitGTK),再搭配 Rust 写的后端。带来的直接好处是:

  • 安装包体积小:Electron 应用经常 80–150MB 起步,Tauri 应用能压到 10MB 以下
  • 内存占用低:Electron 空载 150–300MB,Tauri 通常只需 30–50MB
  • 启动速度快:冷启动可以做到秒开
  • 安全性更高:Rust 的内存安全特性 + Tauri 的默认沙箱机制

后端是 Rust。Rust 语言以零成本抽象、内存安全、无 GC 为人所知,特别适合做"计算密集型+需要稳定跑很久"的任务。字幕识别这个场景恰好非常吃计算性能,用 Rust 写音频预处理、流程调度、模型管理这一层是一个非常合理的选型。

AI 引擎层支持三种模型:Whisper、Parakeet、Moonshine,再加上负责说话人分离的 Pyannote、做字幕翻译的模块。这是 AutoSubs 最核心的价值所在,下面会单独展开。

外部依赖里有两个重要角色:FFmpeg 负责处理任意格式的音视频文件(MP4、MOV、MKV、WebM、MP3、WAV 等等都能直接喂进去);HuggingFace Hub 负责模型的分发,用户第一次选择某个模型时,应用会从 HuggingFace 上下载对应的模型权重到本地。

最后,DaVinci Resolve 的集成通过一个 Lua 脚本实现,这个 AutoSubs.lua 脚本放在 Resolve 的脚本目录里,通过 IPC 机制和 Tauri 主应用通信,把识别好的字幕直接写入剪辑时间线。

4.2 完整处理流程:从"选择文件"到"字幕落在时间线上"

整个链路的数据流大概是这样的:

[用户操作]
      │
      ▼
① 选择音视频文件 ──────▶ 前端把路径发给 Rust 后端
      │
      ▼
② Rust 后端通过 FFmpeg 解码音频
   - 归一化采样率到 16kHz
   - 立体声降为单声道
   - 转成模型需要的格式
      │
      ▼
③ 引擎管理器根据用户选择调用对应模型
   - Whisper / Parakeet / Moonshine 做语音识别
   - 输出带时间戳的文本片段 [{start, end, text}, ...]
      │
      ▼
④(可选)Pyannote 进行说话人分离
   - 语音活动检测(VAD)
   - 提取说话人嵌入向量
   - 聚类,输出 [{start, end, speaker_id}, ...]
      │
      ▼
⑤(可选)翻译模块把结果翻译成目标语言
      │
      ▼
⑥ 格式化器处理换行、每行字数限制、语言特定规则
      │
      ▼
⑦ 结果通过 Tauri IPC 实时流式推回前端
      │
      ▼
⑧ 用户在编辑器里微调,导出 SRT / TXT / 或发送到 Resolve 时间线

这条链路有几个值得注意的设计:

识别和说话人分离是解耦的。识别模型只管"说了什么",说话人分离只管"谁在说"。两个结果最后在时间轴上做对齐融合,哪条文本属于哪个人,是靠比对两者的时间区间重叠度来决定的。这个设计的好处是灵活——你可以只要识别不要分角色,也可以两个都要,互不干扰。

处理是流式的。Rust 后端会在处理过程中不断地通过 IPC 事件把进度推给前端,所以用户能实时看到百分比、看到已经识别好的字幕一条一条往下滚。这个细节对用户体验非常重要。

预处理统一用 FFmpeg。这是一个非常务实的决定。因为音视频格式的碎片化问题 FFmpeg 已经解决了二十多年,AutoSubs 没必要自己造轮子。

4.3 为什么音频预处理这么关键

很多人对"音频预处理"这一步没什么概念,但它在整条链路里其实占了不小的比重,决定了最终识别的准确率。AutoSubs 在这一步做的事情大致有:

  • 解码:把 MP4、MOV、MKV、WebM 等等容器格式里的音轨抽出来
  • 重采样:几乎所有语音识别模型都要求 16kHz 的采样率(这是语音识别领域的默契,人声的主要信息集中在 8kHz 以下,16kHz 的采样率已经足够还原清晰度),原始音频经常是 44.1kHz 或 48kHz,需要降采样
  • 混音为单声道:语音识别模型只关心"说话内容",不关心"空间感",双声道反而增加计算量,所以要把立体声合并成单声道
  • 电平归一化:不同设备录出来的音频音量差异很大,如果不做归一化,小声录的内容模型可能直接当成静音忽略掉
  • 格式转换:最终输出成模型喜欢的 16-bit PCM 或者 Float32 格式

这一整套操作用 FFmpeg 一条命令就能搞定,AutoSubs 的 Rust 后端把 FFmpeg 作为 sidecar(附属程序)打包,不需要用户单独安装。

# 类似这样的命令在后台被执行
ffmpeg -i input.mp4 \
       -ar 16000 \          # 采样率降到 16kHz
       -ac 1 \              # 合并为单声道
       -af "loudnorm" \     # 电平归一化
       -f wav \             # 输出为 WAV 格式
       output.wav

这些细节用户完全不用关心,但正是这些细节决定了识别效果能不能稳定。莫潇羽早年自己折腾过 Whisper 命令行版本,最大的坑就是有时候直接喂原始 MP3 文件识别效果很差,后来才发现是采样率和电平的问题。AutoSubs 把这些坑全部填了,用户只需要关心"内容"本身。

4.4 模型的下载与管理

模型是整个应用的"大脑",但又不能打包进安装包(因为太大,Whisper Large 就 1.6GB,打包进去安装包就 2GB 起步了,这对下载和分发极其不友好)。AutoSubs 的做法是:

  • 安装包本身只有几十 MB(这是 Tauri 架构带来的优势之一)
  • 用户第一次选择某个模型时,从 HuggingFace Hub 按需下载
  • 下载好的模型缓存到本地,后续调用直接从本地加载
  • 支持预下载:用户可以在设置里提前把几个常用模型都下载好,后续切换零等待

这个"按需下载"的设计非常聪明:只用 Whisper base 的用户不用被迫下载 1.6GB 的 Large 模型;英文内容多的用户可以选择只下 Parakeet;实际上绝大多数用户最终会稳定在某两三个模型上。

模型文件的存储结构也值得一提:AutoSubs 沿用了 HuggingFace 的标准缓存目录,这意味着如果你原来就在用 Transformers 库,已经下好的模型不需要重复下载,AutoSubs 可以直接复用。


五、三大识别模型怎么选:Whisper、Parakeet、Moonshine 的差异

AutoSubs 最有意思的地方,就是它不是绑死一个模型,而是让用户根据场景自由切换。但切换的前提是你得知道这三个模型的差别是什么。这一节莫潇羽来帮你把这三家捋清楚。

5.1 Whisper:全能选手

Whisper 由 OpenAI 在 2022 年开源,至今仍然是语音识别领域的标杆作品。它的最大特点是:

  • 多语言覆盖极广,原版支持 99 种语言,中文、日文、粤语甚至闽南语都能识别
  • 有翻译能力,可以把非英语音频直接翻译成英文输出
  • 模型尺寸从 tiny 到 large-v3 多档可选,可以根据硬件取舍

Whisper 的底层是标准的 Transformer 编码器-解码器结构,编码器做全局自注意力,解码器自回归地生成 token。它把音频切成 30 秒一块的固定窗口处理,短音频要 padding 到 30 秒才能喂进去。

Whisper 的缺点也很明显:速度不快,尤其是 large 系列模型,在 CPU 上跑十分钟的音频可能要等几分钟;GPU 上会快很多但需要至少 6–10GB 的显存。后来社区出了 Whisper Large V3 Turbo、faster-whisper(基于 CTranslate2 加速)、MLX-Whisper(针对 Apple Silicon 优化)等一系列衍生项目来解决速度问题。

什么场景选 Whisper:识别非英语内容(尤其是中文)、需要翻译成英文、对精度要求高、时间不敏感。

5.2 Parakeet:英文速度王

Parakeet 是 NVIDIA 出品的模型家族,其中最广为人知的是 Parakeet-TDT 0.6B 和 V3 两个版本。它的架构基于 NVIDIA 自研的 FastConformer 编码器加 TDT(Token-and-Duration Transducer)解码器。

Parakeet 和 Whisper 最大的区别在"看音频的方式":Whisper 是逐帧地顺序读完所有音频,哪怕是静音段也不跳过;Parakeet 会把音频信号先做 8 倍压缩,然后模型一次预测"说了哪个词 + 这个词持续了多久",遇到静音或者长元音可以一次性跳过去。这个设计带来了惊人的速度提升。

在公开的基准测试里,Parakeet V3 以 6 亿参数的体量在 Hugging Face Open ASR Leaderboard 上取得了领先成绩,速度比 Whisper Large V3 Turbo 快约 10 倍,英文识别精度还更好。

但 Parakeet 有个硬伤:英文专精,对非英语支持有限。另一个小问题是输出数字的格式——它倾向于输出 "one, two, three" 而不是 "1, 2, 3",后处理时要注意。

什么场景选 Parakeet:英文内容、追求极致速度、设备性能一般、做英文 Podcast 或 YouTube 素材。

5.3 Moonshine:边缘设备小钢炮

Moonshine 来自 Moonshine AI(前身是 Useful Sensors),定位非常明确:面向边缘设备、面向实时场景。

它的技术路线比较特别:使用编码器-解码器 Transformer 架构,但通过 ONNX Runtime 推理,同时取消了 Whisper 那种"必须 padding 到 30 秒"的限制,你输入多长它就处理多长。这让短音频(1–10 秒)的延迟非常低。

Moonshine Base 模型只有 61M 参数,磁盘占用约 237MB,在一颗消费级桌面 CPU 上处理 4 秒音频只需约 0.09 秒。作为对比,Whisper Large V3 Turbo 在同样的 CPU 上处理同样的 4 秒音频要 17.7 秒——这是两个量级的差距。

Moonshine 也支持多种语言(日文、普通话、韩文、阿拉伯语等),不过多语言版本的成熟度和覆盖度不如 Whisper 全面。默认输出是小写且无标点,需要后处理加标点。

什么场景选 Moonshine:低配设备(老笔记本、一些嵌入式场景)、实时字幕、大量短音频批处理。

5.4 模型选择速查表

┌──────────────────────────────────────────────────────┐
│  场景                           │  推荐模型           │
├──────────────────────────────────────────────────────┤
│  中文 / 多语种视频              │  Whisper           │
│  英文 Podcast / YouTube        │  Parakeet          │
│  翻译成英文输出                 │  Whisper           │
│  老笔记本 / 集成显卡            │  Moonshine         │
│  实时字幕 / 短句批量识别        │  Moonshine         │
│  会议录音 / 多说话人对话        │  Whisper + Pyannote │
│  追求最高精度                   │  Whisper Large     │
│  追求最快速度(英文)           │  Parakeet          │
└──────────────────────────────────────────────────────┘

六、说话人识别:Pyannote 是怎么"听出谁在说话"的

这一节来聊 AutoSubs 的另一半魔法——说话人分离(Speaker Diarization)。这个技术要解决的问题叫 "who spoke when",翻译过来就是"谁在什么时候说话"。

6.1 说话人分离的典型流程

Pyannote.audio 是法国 INRIA 实验室的开源项目,目前是 speaker diarization 领域最成熟的方案之一,底层基于 PyTorch。它的处理流程通常是这样的:

  • 语音活动检测(VAD):先从音频里把"有人说话"的段落挑出来,去掉静音、噪声、背景音乐
  • 说话人嵌入提取:把每一段语音送进一个神经网络(常见的是基于 ResNet 或 ECAPA 结构的模型),输出一个高维向量(embedding),这个向量可以理解为"这个人声音的指纹"
  • 聚类:把所有片段的 embedding 拿去做聚类(常用的算法是谱聚类、层次聚类、AHC 等),同一个聚类里的片段就判定为同一个说话人
  • 重叠语音检测(可选):识别有哪些时段是两个人在同时说话
  • 输出结构化结果:[{start, end, speaker_id}, ...]

然后在和识别结果做对齐时,按时间重叠度把每条文本分配给最可能的 speaker。

6.2 为什么说它是"魔法"

AutoSubs 最让人惊艳的是它把这套复杂的流程完全封装了,用户在界面上只需要勾选"启用说话人识别",剩下的全部自动化完成。识别结果会自动给 SPEAKER_00、SPEAKER_01 这样的匿名标签,你可以在编辑器里把它们改成真实人名(比如"主持人"、"嘉宾A"),然后每个说话人可以设不同颜色、不同字体、不同轨道。

这意味着什么?对谈类、访谈类、播客类、会议纪要类的视频,过去需要你手动听辨、手动切分、手动染色的工作,现在一键完成。这是剪辑工作流上的一个质变。

6.3 对中文效果的诚实提醒

莫潇羽必须提醒一下:Pyannote 的预训练模型是基于英文数据集为主训练的,对中文普通话的分离效果虽然能用,但 EER(等错误率)比英文场景要高一些。实测下来,两人对谈的场景准确率通常不错,三人以上 + 口音重 + 背景嘈杂的情况下容易出现同一个人被识别成两个说话人,或者两个人被合并的问题。

遇到这种情况,一般的补救办法是:

  • 尽可能选择清晰、单声道的录音
  • 在设置里手动指定"预计说话人数量"(AutoSubs 支持这个参数)
  • 识别完后在编辑器里做人工合并 / 拆分

6.4 说话人嵌入向量:声音的"指纹"

聊到这里稍微再深入一点说。说话人识别背后的数学直觉其实很美妙:每个人的声音经过神经网络压缩后,可以得到一个高维向量(通常是 192 维、256 维或 512 维),这个向量就像是这个人声音的"指纹"。

判断两段语音是不是同一个人,就是判断这两段语音的向量在高维空间里的距离。距离近就是同一个人,距离远就是不同的人。具体用余弦相似度、欧氏距离还是其他度量方式,是不同模型的技术选择。

这套方法的牛逼之处在于:它不需要事先知道有哪些人。你只要给它一段音频,它就能自己发现这段音频里有几个不同的声纹、每个声纹对应哪些时段。在聚类算法的帮助下,这个过程是完全无监督的。

这也是为什么我们看到 Pyannote 输出的标签是 SPEAKER_00、SPEAKER_01 而不是真名——模型只能告诉你"这里有几个不同的人",至于这些人是谁,需要用户自己去打标签。AutoSubs 把这个打标签的交互做成了"编辑器里一键改名,所有同一人的字幕一起更新"的形式,是一个非常顺手的设计。


七、DaVinci Resolve 深度集成:和达芬奇的原生联动

DaVinci Resolve(简称 Resolve 或达芬奇)是目前独立创作者圈子里最受欢迎的专业剪辑软件,它有免费版,功能强大到足以做院线级调色。AutoSubs 对 Resolve 的集成是很多人选它的决定性原因。

7.1 集成方式

集成方式是通过一个 Lua 脚本。在 Resolve 里,你可以通过 Workspace → Scripts → AutoSubs 启动集成。背后的原理是:

  • AutoSubs 主程序暴露一个本地 IPC 服务
  • AutoSubs.lua 脚本驻留在 Resolve 的脚本目录,能调用 Resolve 的 Fusion/Timeline API
  • 用户在 AutoSubs 里点击"发送到 Resolve"时,Lua 脚本接收字幕数据,然后在当前时间线上按时间码自动插入字幕轨道

7.2 支持的能力

  • 直接生成到时间线:不用导出再导入,字幕以 Text+ 模板的形式出现在字幕轨道上
  • 每个说话人独立样式:可以给 SPEAKER_00 设红色描边白色填充,给 SPEAKER_01 设蓝色描边白色填充,字幕会按说话人自动套用对应样式
  • 每个说话人独立轨道:也可以把不同人的字幕放到不同的视频轨道上,方便后期调整
  • 填充颜色 / 描边颜色 / 边框颜色分别可调,并且有实时预览
  • 可选每条字幕显示的行数(1 行或 2 行)

7.3 一个小提醒

官方文档里明确指出:AutoSubs 不支持从 Mac App Store 下载的 DaVinci Resolve 版本。因为 Mac App Store 版本的沙箱限制导致外部脚本无法正常注入。如果你用的是 App Store 版,需要到 Blackmagic Design 官网 https://www.blackmagicdesign.com/products/davinciresolve/ 重新下载安装包版本才能正常使用。

7.4 集成工作流的实际体感

莫潇羽这里多说一句实际体感。在没有 AutoSubs 之前,Resolve 里做中文字幕是一件相当痛苦的事情。Resolve 自带的语音识别从 18 版开始加了进来,但对中文支持不算理想,而且要用它的识别必须先把项目做成最新版的 Studio 才能跑得动部分功能。

接入 AutoSubs 之后的工作流是这样的:

  • 在 Resolve 里把粗剪做完,敲定时间线
  • 切到 Edit 面板 → Workspace → Scripts → AutoSubs,一键启动
  • AutoSubs 自动读取当前时间线的音频,转录完毕后字幕直接落在时间线上
  • 回到 Resolve 里做调色、做包装、做最终导出

字幕和剪辑是两个并行的工作,互不干扰。对专业创作者来说,这种"字幕完全不用出工程"的体验,效率提升比任何单点优化都明显。


八、独立模式:不用达芬奇也能用

除了和 Resolve 对接,AutoSubs 还有一个 独立运行模式(Standalone Mode)。这个模式下它就是一个纯字幕生成工具,把文件拖进去、选参数、点转录,得到结果后在内置编辑器里微调,然后导出成 SRT、纯文本或者复制到剪贴板,拿到任何剪辑软件里都能用。

这个模式特别适合以下场景:

  • 用 Premiere Pro、Final Cut Pro、剪映专业版的用户
  • 只需要字幕文件,不需要直接上时间线
  • 做字幕翻译、做课程转写稿、做播客 Show Notes
  • 处理一批采访录音,只要文字稿

独立模式下的编辑器界面也做了很多优化:

  • 响应式布局,窗口大小变化时字幕预览区会跟着自适应
  • 桌面端有可拉伸的分栏,左边是字幕列表,右边是视频预览,可以一边听一边改
  • 每条字幕可以批量修改样式
  • 快捷键支持:上下箭头跳条目,空格播放/暂停,Enter 换行

8.1 字幕格式的那些门道

顺便讲讲字幕格式这个坑。做视频字幕的朋友多少都会接触到各种格式,它们之间的差异其实不小:

  • SRT(SubRip Subtitle):最通用的格式,几乎所有播放器和剪辑软件都支持。纯文本,一条字幕由编号、时间码、文本三部分组成。缺点是不支持样式(颜色、字体、位置都没法存)
  • VTT(WebVTT):Web 视频标准,和 SRT 很像但支持更多元数据,HTML5 <track> 标签原生支持。YouTube、B 站上传时都可以用这个格式
  • ASS / SSA(Advanced SubStation Alpha):字幕组的最爱,支持丰富的样式定义——字体、大小、颜色、描边、阴影、位置、动画都能存。文件结构相对复杂
  • TXT:纯文本,没时间戳。适合做文字稿、做后续翻译、做 SEO 用的内容素材

AutoSubs 默认导出 SRT,这是最通用最安全的选择。如果你有样式需求,建议在目标剪辑软件里重新设置,而不是依赖字幕文件本身携带样式。

一个小贴士:把 AutoSubs 导出的 SRT 文件用记事本打开,会看到标准的时间码 00:00:15,230 --> 00:00:18,450,其中逗号是 SRT 规范要求的毫秒分隔符。如果某些软件只认点号(比如 00:00:15.230),那是 VTT 格式,可以在导出时选择对应格式,或者自己用记事本批量替换。


九、详细安装教程:三大平台全覆盖

这一节给小白朋友准备了逐步的安装说明。以莫潇羽的经验,装桌面应用这件事对新手来说最容易卡住,所以这里会尽量讲细。

9.1 Windows 平台

步骤如下:

  • 打开浏览器,访问 https://github.com/tmoroney/auto-subs/releases/latest
  • 找到当前最新版本的资源列表,下载名字类似 AutoSubs-windows-x86_64.exe 的文件
  • 下载完成后双击运行,按照向导点"下一步"即可
  • 首次启动会提示下载模型,根据网络环境耐心等待几分钟
  • 建议提前安装好最新版 Microsoft Edge WebView2 Runtime(大多数 Windows 11 自带,Windows 10 可能需要手动装一下)

安装包现在都做了数字签名,Windows Defender 一般不会拦截。如果确实被拦,右键选择"仍要运行"即可。

9.2 macOS 平台

macOS 下要注意区分你的芯片:

  • Apple Silicon(M1/M2/M3/M4):下载 AutoSubs-Mac-ARM.pkg
  • Intel 芯片(2020 年前的 Mac):下载 AutoSubs-Mac-Intel.pkg

不确定自己是什么芯片的话,点击屏幕左上角苹果图标 → "关于本机",看"芯片"或"处理器"那一栏。

下载完后:

  • 双击 .pkg 安装包,走完引导
  • 第一次打开可能会提示"来自身份不明的开发者",这时候到"系统设置 → 隐私与安全性"里拉到最下面,点"仍要打开"
  • 首次运行同样会下载模型

9.3 Linux 平台(Debian / Ubuntu 系)

Linux 用户通常更熟悉终端操作,两行命令搞定:

# 下载最新版 .deb 安装包
wget https://github.com/tmoroney/auto-subs/releases/latest/download/AutoSubs-linux-x86_64.deb

# 安装
sudo apt install ./AutoSubs-linux-x86_64.deb

# 如果出现依赖错误,用下面这条命令补齐
sudo dpkg -i AutoSubs-linux-x86_64.deb && sudo apt -f install

装完之后在应用菜单里就能找到 AutoSubs 图标,或者在终端敲 autosubs 启动。

Arch 系和其他非 Debian 发行版暂时没有官方包,但可以通过源码自行编译(需要 Node.js 和 Rust 工具链)。

9.4 首次启动会做什么

第一次打开 AutoSubs,应用会:

  • 检测系统环境(WebView 版本、可用磁盘空间)
  • 提示你选择默认模型并下载(模型文件从 HuggingFace 拉取,一般 200MB – 1.6GB 不等)
  • 初始化本地数据库,用来保存你的历史任务和偏好设置
  • 如果检测到 DaVinci Resolve 安装路径,会提示你是否安装 Lua 脚本做集成

这一步做完之后,就可以开始用了。


十、实战使用:从零到一生成一条字幕

假设你手上有一个名为 interview.mp4 的访谈视频,里面有两个人对谈。下面是从零到一的完整流程。

10.1 第一步:导入文件

启动 AutoSubs,你会看到一个简洁的主界面。把 interview.mp4 直接拖进去,或者点"选择文件"按钮。

应用会解析文件,展示:

  • 文件总时长
  • 音频采样率 / 声道
  • 检测到的格式

10.2 第二步:选择模型与参数

主要参数有这么几个:

  • Model:选择 Whisper / Parakeet / Moonshine 之一。中文选 Whisper,英文视情况在 Whisper 和 Parakeet 之间选
  • Model Size:在 Whisper 下有 tiny / base / small / medium / large 五档,模型越大越准但越慢
  • Language:手动指定语言,或者选 Auto-detect 自动识别
  • Translate to English:如果需要翻译成英文字幕,勾上这个
  • Enable Speaker Diarization:启用说话人识别
  • Max Speakers:预估的说话人数量上限,两人访谈就填 2,多人会议就填对应人数
  • Max Words Per Line:每行字幕最大字数(中文场景建议 15–18,英文场景建议 8–12)
  • Max Lines:每条字幕最多几行(通常 1 或 2)

10.3 第三步:开始转录

点击 Transcribe 按钮,界面切换到进度视图。你会看到:

  • 顶部的进度条
  • 实时的阶段提示("正在预处理音频..." / "正在加载模型..." / "正在识别..." / "正在分离说话人..." / "正在格式化...")
  • 已识别好的字幕会在下方一条一条实时流出

等待时间取决于你的硬件和选择的模型。一段十分钟的双人访谈,M1 MacBook Pro + Whisper medium 一般在 1–2 分钟内完成。

10.4 第四步:微调字幕

转录完成后进入编辑器界面。你可以:

  • 点击任意字幕条目,在右侧面板里修改文本
  • 拖动字幕条目的边缘,调整起止时间
  • 点击某条字幕的说话人标签,把 SPEAKER_00 改成"李明",SPEAKER_01 改成"王芳"——修改会应用到所有同一说话人的条目
  • 给不同说话人设不同颜色
  • 合并两条字幕(选中相邻两条 → 右键 → Merge)
  • 拆分一条字幕(光标放到拆分点 → 右键 → Split)

编辑器有 撤销 / 重做,可以放心尝试。

10.5 第五步:导出或发送到 Resolve

如果是独立模式,点击 Export:

  • 选 SRT 格式可以直接导入任何剪辑软件
  • 选 TXT 格式只有纯文本
  • 可以复制到剪贴板
  • 可以导出"按说话人拆分的多个文件"(这对后期制作访谈稿非常有用)

如果是 Resolve 模式,直接点 Send to Resolve,然后切换到 Resolve 窗口,就能看到字幕已经按时间码铺在了时间线上。

10.6 字幕的"每秒字数":一个容易被忽略的专业细节

大多数工具生成的字幕看起来都差不多,但做过字幕翻译或者接过字幕外包的朋友都知道,字幕有一套职业规范。最核心的是一个叫 CPS(Characters Per Second,每秒字符数) 的指标。

Netflix 的字幕规范要求拉丁字母文字 CPS 不超过 17,中日韩(CJK)不超过 9;BBC 的规范是拉丁字母不超过 20。超过这个速度,观众在字幕消失前就来不及读完,会有"字幕跟不上"的糟糕体验。

AutoSubs 的格式化器内置了这条规则:

  • 识别模型输出的原始文本片段可能会非常长(一句话连续 20 秒的独白就是一个长片段)
  • 格式化器会根据你设置的 CPS 上限、每行字数、每条最多行数,把长片段自动切分成多条合适长度的字幕
  • 切分时会优先选择标点处、停顿处切,而不是硬切在词中间
  • 每条字幕的起止时间也会根据语音的实际节奏重新对齐

这就是为什么 AutoS

🔒
该内容仅对更高等级社区用户开放
请谨慎解锁时效性强且发布日期较早的文章
单篇解锁后若未显示全文请刷新页面
您当前:游客 · 可见 60% 内容 · 升级至 注册用户 可见 70%
👀
游客
可见 60%
✓ 当前
注册用户
注册用户
可见 70%
社区精英
社区精英
可见 100%
社区守护
社区守护
可见 100%
仅解锁本文,永久有效。如需PDF珍藏版,请联系站长获取。 当前单篇价格 ¥9.9
✏️ 发表评论

请先登录后发表评论

前往登录
📊 站点统计
今日发布0 篇
文章总数1107 篇
昨日发布1 篇
本月发布31 篇
建站时间456 天
🔍 搜索
站长微语

联系站长

QQ:2805463528
AIGC 技术社区
致力于解码 AI前沿技术 与经验分享
纯粹的技术应用社区

💡 欢迎您的建议与反馈,让社区变得更好

快速通道
联系站长
站长QQ二维码
AI交流群
AI交流群
仍在路上

那些寒夜里追赶过的方向

那些冷眼下没放弃的理想

一篇一篇写到现在

仍在路上

"不羁放纵爱自由"

—— 致敬 Beyond
持续创作中 莫潇羽 · 无忆研习社
▲