MediaChef

MediaChef 视频转 SRT

把视频转成 SRT 字幕

把视频拖进 MediaChef,选「为视频生成 SRT 字幕」,模型保持 small、语言保持自动,然后运行。视频旁边就会出现一个 .srt 文件,时间轴已经写好。一切都在你的电脑上完成:语音不会离开硬盘,而且模型下载完之后,这道菜谱断网也照跑。在一台 M5 笔记本上,2 分 43 秒的语音用默认模型花了 6.2 秒——大约是实时速度的 26 倍——并生成了 73 条字幕,平均每条 39 个字符,短到足以从容读完。

需要什么
MediaChef 0.8.5,外加一次性的模型下载
默认模型
small——488 MB,下载一次就留在本地
速度
默认模型约为实时的 26 倍(M5 实测)
离线可用
可以,只要模型已经在硬盘上
格式
SRT、VTT、纯 TXT 和 JSON——各有一道菜谱
得到什么
视频旁边的 clip.subs.srt,原视频不动

免费且开源—— 在 GitHub 上查看代码 全部文件与版本说明

怎样给视频做字幕

  1. 下载 MediaChef

    macOS、Windows、Linux 各一个文件。FFmpeg 和 Whisper 运行器都随安装包一起来:不用单独装,也不用往 PATH 里加东西。

  2. 下载一次模型

    第一次转写会要一个语音模型。默认是 488 MB 的 small,下面所有实测都用它;tiny 是 78 MB,base 是 148 MB,large-v3-turbo 是 1.62 GB。只下载一次,留在硬盘上,之后这道菜谱就再也不碰网络了。

  3. 把视频拖进来,选菜谱

    「为视频生成 SRT 字幕」直接接收视频——不用先把音频抽出来。MediaChef 会在一个你永远看不到的临时目录里,把音轨解码成 Whisper 要求的 16 kHz 单声道。

  4. 运行,然后打开 .srt

    文件会以 clip.subs.srt 的名字落在视频旁边,带编号的字幕和时间轴都在里面。播放器、剪辑软件和视频平台都能直接读;因为它是纯文本,人名或术语在任何编辑器里都能改。

MediaChef 准备转换:操作台等待视频文件,任务队列在右侧。
视频落在这块操作台上。MediaChef 读完文件后,菜谱就会出现。

该选哪个模型

四个模型,同一段 2 分 43 秒的语音,同一台机器:16 GB 的 M5 笔记本,每个模型先预热,取两次运行里较好的一次。

模型下载体积耗时相对实时认错的词
tiny78 MB2.1 秒×78540 里错 5 个
base148 MB2.6 秒×63540 里错 3 个
small——默认488 MB6.2 秒×26540 里错 0 个
large-v3-turbo1.62 GB11.5 秒×14540 里错 1 个

最后一列请谨慎地读,因为测试音频是合成语音朗读事先写好的稿子:没有口音、没有背景噪音、也没有人抢话。正因如此,这里连最小的模型都近乎全对,而真实会议录音根本不是这个样子——音频一难,这几个模型之间的差距就会明显拉开。反倒是耗时那一列可以原样搬到你的场景里。还有一件被粗略对比掩盖掉的事:绝大多数不一致其实是数字写成了阿拉伯数字而非汉字——稿子里念的是完整读法,large-v3-turbo 却写成「70」「10」「50」「30」。那是格式问题,不是听错。

字幕每条有多长

技术上完全正确的字幕,如果一次往屏幕上砸二十个词,照样没法用。同一段话,几个模型切得很不一样——这是同一次运行里测的。

模型字幕条数平均时长平均字符数最长一条
tiny354.7 秒8397 个字符
base354.7 秒83100 个字符
small——默认732.2 秒3958 个字符
large-v3-turbo305.4 秒97112 个字符

通行的播出规范大约是每行 42 个字符、最多两行,也就是同屏约 84 个字符。按这把尺子量,四个里只有 small 装得下且有余裕:平均 39 个字符,最长 58 个;而 large-v3-turbo 连一条普通字幕都已经越线。所以默认模型不只是准确度上的均衡之选——它把话切成的段落也最好读。

SRT、VTT、纯文本还是 JSON

同一份转写稿的四种写法。体积都来自同一段 2 分 43 秒的语音,因此可以直接横向比较。

格式体积里面装了什么什么时候用
SRT5.5 KB带编号的字幕,时间用逗号:00:00:00,000绝大多数时候。播放器、剪辑软件和平台都收
VTT5.3 KBWEBVTT 头部,时间用点号:00:00:00.000给网页播放器用的字幕,浏览器里的那条轨
TXT3.0 KB一段连着一段的文字,完全没有时间轴你要的是文字,不是字幕
JSON15.2 KB每条字幕,外加所用的模型和参数读它的将是程序,不是人

SRT 和 VTT 主要差在秒与毫秒之间的那个符号上,所以某个播放器不认其中一种时,换成另一种只是换道菜谱,而不是重新转写一遍。JSON 大约是 SRT 的三倍重,因为它在文字旁边还捎带了这次运行的各项信息。

什么情况用哪道菜谱

字幕不是一道菜谱,而是好几道,挑对了能省一步。它们全都在 17 道菜谱的目录里。

你手上有什么你想要什么菜谱
一个视频旁边配一份字幕为视频生成 SRT 字幕
一个音频文件字幕把音频转成 SRT 字幕
外语语音一遍出英文字幕把语音翻译成英文字幕
任何带语音的东西只要文字把音频转成文字
任何带语音的东西给网页播放器的一条轨把音频转成 WebVTT

翻译那道菜谱是从外语语音直接到带时间轴的英文字幕,一遍完成——不需要先转写再翻译。不过它只能译成英文:这是模型的限制,不是软件的。

为什么在自己电脑上做字幕

语音不离开你的硬盘。 会议、访谈和通话的录音,是大多数人手里最敏感的一类文件;而在线转写,按定义就是把那段对话复制一份到别人的服务器上。这里根本没有上传这回事需要你去掂量。

没有按分钟计费。 转写服务按音频分钟数收钱,一批长录音就是一张实打实的账单。模型只下载一次,之后两小时的录音和两分钟的录音花费一样:零。

断网也能跑。 模型文件一旦落在硬盘上,这道菜谱就完全不碰互联网。它在飞机上能用,在封闭的机器上能用,在无线网是全场最不靠谱那件东西的房间里也能用。

没有长度上限。 免费的网页转写工具通常每个文件只给你几分钟——而一段录音之所以值得转写,恰恰就是因为它长。这里没有上限。

一次一整个文件夹。 把一个录音目录拖进来,队列会一个一个处理,并告诉你每份字幕文件写到了哪里。

什么时候它不是合适的工具

这道菜谱写的是一个字幕文件。这比「给视频加字幕」要窄,而这个区别在下面几种情况下很要紧。

  1. 你要把字幕烧进画面里。

    这里产出的是一个独立的 .srt,由播放器在视频旁边加载。把文字永久印进画面是另一回事:那要重新编码视频,而且之后这些字既关不掉也改不了。

  2. 你需要播出级的准确度。

    即使在上面那段干净音频上,几个模型也都在个别词上绊了一下,而真实录音更难。凡是在无障碍法规要求下发布的内容,出街前都要经人校对——不管初稿是什么做出来的。

  3. 音频确实很糟。

    严重的抢话、用手机录的一整间屋子,或者音乐盖过人声,会把这四个模型全部放倒。先把音频修一修——哪怕只是抽出一条更干净的轨——比往上换一档模型管用得多。

  4. 你需要译成英文以外的语言。

    Whisper 只能译成英文,也只有英文。要译成其他任何语言,请先按原语言转写,再用为此而做的工具去翻译那份文字。

常见问题

这是免费的吗?

是,全部免费。MediaChef 是 GPL-3.0 下的开源软件:没有付费版,不按分钟收费,也不限制文件长度。模型同样是免费下载。当前版本是 0.8.5。

我的视频会被上传到哪里吗?

不会。处理语音的是一个躺在你自己硬盘上的模型文件。唯一经过网络的只有那次一次性的模型下载,之后这道菜谱断网照跑。

要花多长时间?

默认模型大约是实时速度的 26 倍:我们在一台 M5 笔记本上,测得 2 分 43 秒的语音用时 6.2 秒。按这个比例,一小时的录音两三分钟就完事。同一段音频上,tiny 是 ×78,large-v3-turbo 是 ×14。

我该选哪个模型?

从默认的 small 开始。在我们的实测里,它把测试音频的每个词都听对了,而且给出的字幕最好读——平均 39 个字符,而 large-v3-turbo 是 97 个。只有当你的音频很难时才往上换;想要几秒钟出个草稿,就往下换 tiny 或 base。

模型有多大?

tiny 78 MB,base 148 MB,small 488 MB,large-v3-turbo 1.62 GB。下载是一次性的。之后文件就留在硬盘上,后续每次运行都会默默取用。

我需要告诉它说的是什么语言吗?

不需要。语言默认是自动,模型会从音频里自己判断。当然你也可以明确指定,如果录音开头有几句是另一种语言,这么做很值得。

它能把字幕翻译成英文吗?

能,用「把语音翻译成英文字幕」这道菜谱:进去是外语语音,出来是带时间轴的英文 SRT,一遍完成,而不是先转写再翻译。英文是模型支持的唯一目标语言。

SRT 和 VTT 有什么区别?

主要是时间轴里的标点:SRT 写成 00:00:00,000,用逗号,而且给每条字幕编号;VTT 写成 00:00:00.000,用点号,开头是一行 WEBVTT。播放器和剪辑软件预期的是 SRT;网页播放器给自己的字幕轨要的是 VTT。它们是两道不同的菜谱,所以换格式是重跑一次,而不是改写文件。

字幕之后能改吗?

能——.srt 就是纯文本。用任何编辑器打开,改掉一个专名、一个术语或一处时间。这本来就是正常的工作方式:模型做掉九十几个百分点,剩下的你手工补齐。

为什么我的字幕有几条太长了?

因为在哪儿断句是模型定的,而越大的模型断得越少。同一段音频上,我们测得 small 平均每条 39 个字符,large-v3-turbo 是 97 个。如果你的字幕越拖越长,换回 small 通常就能解决——而且在干净语音上,这不会让准确度有任何损失。

它能区分说话人吗?

不能。Whisper 写的是说了什么,不是谁说的。如果你需要「说话人 1/说话人 2」这样的标注,得自己手工加,或者用专门为此而做的工具。

如果文件里根本没有人说话会怎样?

这次运行会停下并告诉你它没听到任何可辨识的内容,而不是悄悄写出一个空文件。静音不产出字幕,这是有意为之。

Windows 和 Linux 上能用吗?

三个平台都能用。语音识别在所有平台上都跑在 CPU 上,在 Apple Silicon 上还会额外用到 GPU——上面那些快速的数字就是这么来的。同样的菜谱在一台普通的 Windows 笔记本上会慢一些,但仍然比把录音听一遍快。

能一次给多个文件做字幕吗?

可以。拖进一整个文件夹,加上菜谱,队列就会一个接一个地处理。每份字幕文件都写在它自己那个源文件旁边。

视频文件会被改动吗?

不会。旁边会写出一个独立的 .srt——clip.subs.srt——视频本身不会被修改、改名或重新编码。这道菜谱完全不碰画面。

给那个视频做字幕

MediaChef 0.8.5——免费、开源,macOS · Windows · Linux。

免费且开源—— 在 GitHub 上查看代码 全部文件与版本说明

MediaChef 还很年轻:安装包尚未由 Apple 或 Microsoft 签名,因此首次启动会要求确认——每个下载包里都附有纯文本说明。

有问题,或者少了什么?给我们写信: hello@mediachef.app