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 上查看代码 全部文件与版本说明
怎样给视频做字幕
-
下载 MediaChef
macOS、Windows、Linux 各一个文件。FFmpeg 和 Whisper 运行器都随安装包一起来:不用单独装,也不用往 PATH 里加东西。
-
下载一次模型
第一次转写会要一个语音模型。默认是 488 MB 的 small,下面所有实测都用它;tiny 是 78 MB,base 是 148 MB,large-v3-turbo 是 1.62 GB。只下载一次,留在硬盘上,之后这道菜谱就再也不碰网络了。
-
把视频拖进来,选菜谱
「为视频生成 SRT 字幕」直接接收视频——不用先把音频抽出来。MediaChef 会在一个你永远看不到的临时目录里,把音轨解码成 Whisper 要求的 16 kHz 单声道。
-
运行,然后打开 .srt
文件会以 clip.subs.srt 的名字落在视频旁边,带编号的字幕和时间轴都在里面。播放器、剪辑软件和视频平台都能直接读;因为它是纯文本,人名或术语在任何编辑器里都能改。
该选哪个模型
四个模型,同一段 2 分 43 秒的语音,同一台机器:16 GB 的 M5 笔记本,每个模型先预热,取两次运行里较好的一次。
| 模型 | 下载体积 | 耗时 | 相对实时 | 认错的词 |
|---|---|---|---|---|
| tiny | 78 MB | 2.1 秒 | ×78 | 540 里错 5 个 |
| base | 148 MB | 2.6 秒 | ×63 | 540 里错 3 个 |
| small——默认 | 488 MB | 6.2 秒 | ×26 | 540 里错 0 个 |
| large-v3-turbo | 1.62 GB | 11.5 秒 | ×14 | 540 里错 1 个 |
最后一列请谨慎地读,因为测试音频是合成语音朗读事先写好的稿子:没有口音、没有背景噪音、也没有人抢话。正因如此,这里连最小的模型都近乎全对,而真实会议录音根本不是这个样子——音频一难,这几个模型之间的差距就会明显拉开。反倒是耗时那一列可以原样搬到你的场景里。还有一件被粗略对比掩盖掉的事:绝大多数不一致其实是数字写成了阿拉伯数字而非汉字——稿子里念的是完整读法,large-v3-turbo 却写成「70」「10」「50」「30」。那是格式问题,不是听错。
字幕每条有多长
技术上完全正确的字幕,如果一次往屏幕上砸二十个词,照样没法用。同一段话,几个模型切得很不一样——这是同一次运行里测的。
| 模型 | 字幕条数 | 平均时长 | 平均字符数 | 最长一条 |
|---|---|---|---|---|
| tiny | 35 | 4.7 秒 | 83 | 97 个字符 |
| base | 35 | 4.7 秒 | 83 | 100 个字符 |
| small——默认 | 73 | 2.2 秒 | 39 | 58 个字符 |
| large-v3-turbo | 30 | 5.4 秒 | 97 | 112 个字符 |
通行的播出规范大约是每行 42 个字符、最多两行,也就是同屏约 84 个字符。按这把尺子量,四个里只有 small 装得下且有余裕:平均 39 个字符,最长 58 个;而 large-v3-turbo 连一条普通字幕都已经越线。所以默认模型不只是准确度上的均衡之选——它把话切成的段落也最好读。
SRT、VTT、纯文本还是 JSON
同一份转写稿的四种写法。体积都来自同一段 2 分 43 秒的语音,因此可以直接横向比较。
| 格式 | 体积 | 里面装了什么 | 什么时候用 |
|---|---|---|---|
| SRT | 5.5 KB | 带编号的字幕,时间用逗号:00:00:00,000 | 绝大多数时候。播放器、剪辑软件和平台都收 |
| VTT | 5.3 KB | WEBVTT 头部,时间用点号:00:00:00.000 | 给网页播放器用的字幕,浏览器里的那条轨 |
| TXT | 3.0 KB | 一段连着一段的文字,完全没有时间轴 | 你要的是文字,不是字幕 |
| JSON | 15.2 KB | 每条字幕,外加所用的模型和参数 | 读它的将是程序,不是人 |
SRT 和 VTT 主要差在秒与毫秒之间的那个符号上,所以某个播放器不认其中一种时,换成另一种只是换道菜谱,而不是重新转写一遍。JSON 大约是 SRT 的三倍重,因为它在文字旁边还捎带了这次运行的各项信息。
什么情况用哪道菜谱
字幕不是一道菜谱,而是好几道,挑对了能省一步。它们全都在 17 道菜谱的目录里。
| 你手上有什么 | 你想要什么 | 菜谱 |
|---|---|---|
| 一个视频 | 旁边配一份字幕 | 为视频生成 SRT 字幕 |
| 一个音频文件 | 字幕 | 把音频转成 SRT 字幕 |
| 外语语音 | 一遍出英文字幕 | 把语音翻译成英文字幕 |
| 任何带语音的东西 | 只要文字 | 把音频转成文字 |
| 任何带语音的东西 | 给网页播放器的一条轨 | 把音频转成 WebVTT |
翻译那道菜谱是从外语语音直接到带时间轴的英文字幕,一遍完成——不需要先转写再翻译。不过它只能译成英文:这是模型的限制,不是软件的。
为什么在自己电脑上做字幕
语音不离开你的硬盘。 会议、访谈和通话的录音,是大多数人手里最敏感的一类文件;而在线转写,按定义就是把那段对话复制一份到别人的服务器上。这里根本没有上传这回事需要你去掂量。
没有按分钟计费。 转写服务按音频分钟数收钱,一批长录音就是一张实打实的账单。模型只下载一次,之后两小时的录音和两分钟的录音花费一样:零。
断网也能跑。 模型文件一旦落在硬盘上,这道菜谱就完全不碰互联网。它在飞机上能用,在封闭的机器上能用,在无线网是全场最不靠谱那件东西的房间里也能用。
没有长度上限。 免费的网页转写工具通常每个文件只给你几分钟——而一段录音之所以值得转写,恰恰就是因为它长。这里没有上限。
一次一整个文件夹。 把一个录音目录拖进来,队列会一个一个处理,并告诉你每份字幕文件写到了哪里。
什么时候它不是合适的工具
这道菜谱写的是一个字幕文件。这比「给视频加字幕」要窄,而这个区别在下面几种情况下很要紧。
-
你要把字幕烧进画面里。
这里产出的是一个独立的 .srt,由播放器在视频旁边加载。把文字永久印进画面是另一回事:那要重新编码视频,而且之后这些字既关不掉也改不了。
-
你需要播出级的准确度。
即使在上面那段干净音频上,几个模型也都在个别词上绊了一下,而真实录音更难。凡是在无障碍法规要求下发布的内容,出街前都要经人校对——不管初稿是什么做出来的。
-
音频确实很糟。
严重的抢话、用手机录的一整间屋子,或者音乐盖过人声,会把这四个模型全部放倒。先把音频修一修——哪怕只是抽出一条更干净的轨——比往上换一档模型管用得多。
-
你需要译成英文以外的语言。
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