AI · AI短视频创作
AI字幕怎么加:给视频自动生成字幕的完整流程
简短回答
要自动生成字幕,先用 Whisper 这类语音识别模型转写音频,校对人名和数字,把文字拆成每行最多约 42 个字符(中文约 16 个字)的短句,阅读速度控制在每秒 20 个字符以内(中文每秒约 9 个字),再导出 SRT 或 WebVTT 文件。上传时可以作为外挂字幕,也可以直接压制进画面。
打开语音转文字AI 字幕生成器到底做了什么
自动字幕来自自动语音识别(ASR)。模型听音轨,把说出的话写成文字,并给每一句标上起止时间。Whisper 是一个有名的开源例子,其论文介绍它用 68 万小时的多语言音频训练,所以一个模型就能转写多种语言,还能把它们翻译成英文。想了解模型内部是怎么工作的,可以看我们的语音转文字原理指南。
ASR 的输出只是草稿,不是成品字幕。YouTube 官方帮助页在介绍自动字幕时就说,质量可能参差不齐,请创作者务必检查,并修正转写不正确的地方。好字幕在原始转写之外还要三步:纠正错误、把文字拆成易读的短行、给每一行设好时间让观众来得及看完。
从视频生成字幕,常见有三种方式:用平台自带功能(YouTube、TikTok、Instagram 都有某种形式的自动字幕);用剪辑软件(剪映、Premiere Pro、DaVinci Resolve、Descript);或者用单独的转写工具导出字幕文件。单独的文件最可控,也能在所有平台复用。例如 cv.cm 的语音转文字工具直接在浏览器里运行 Whisper,可导出 TXT、SRT 或 VTT,音频不会上传。
完整流程,一步一步来
- 从最终剪辑版本导出干净的音轨。字幕必须和要发布的成片一致,所以转写放在最后,等画面定稿之后再做。
- 用 Whisper 类模型转写。如果知道语言,就手动指定;短视频或以音乐开头的视频,自动识别语言可能会猜错。
- 边听边读转写稿。改正人名、品牌名、数字、专业词汇和同音词。
- 把文字拆成字幕卡片:每张一到两行短句,在自然的语义停顿处断开。
- 检查时间轴:每张卡片在话音开始时出现,停留的时间足够读完。
- 设置适合屏幕的样式:字号、描边或底框,以及放在安全区内的位置。
- 输出:把 SRT 或 VTT 作为字幕轨上传,或者把字幕压制进视频,也可以两者都做。
每行字数与阅读速度的标准
专业字幕规范会定下明确的上限,让观众既能读完字幕,又不错过画面。Netflix 为各语言发布了时间文本(timed text)风格指南,下面这些数字可查证,适合作为起点:
| 语言(Netflix 指南) | 每行字符数 | 每张卡片行数 | 成人阅读速度 | 儿童阅读速度 |
|---|---|---|---|---|
| 英语(美国) | 42 | 最多 2 行 | 最高每秒 20 个字符 | 最高每秒 17 个字符 |
| 中文(简体) | 16 | 最多 2 行 | 最高每秒 9 个字 | 最高每秒 7 个字 |
英文指南还说明了怎么断行:在标点之后、连词之前、介词之前断开;冠词要和名词放在一起,形容词和名词放在一起,名和姓放在一起。
阅读速度规则在实际中是这样用的。一张写着 Three things nobody tells you about captions 的卡片含空格共 44 个字符,按每秒 20 个字符算,至少要在屏幕上停留 2.2 秒。如果说话人 1.5 秒就说完了,要么让卡片多停一会儿,要么缩短文字,比如改成 Three things nobody tells you(29 个字符,约 1.5 秒)。
竖屏短视频的限制要比电视屏幕更严。1080 像素宽的手机画面配上大号粗体字,每行能放的字符远少于 42 个。实际中,一行约 20 到 30 个拉丁字符,或 8 到 12 个汉字,在手机上读起来最舒服。很多创作者每张卡片只放一小句,并且频繁切换。
SRT 与 WebVTT:两种字幕文件格式
几乎所有平台和剪辑软件都支持 SRT。WebVTT(VTT)是 W3C 制定的网页字幕格式,用于 HTML 的 video 元素。两者看起来几乎一样:
SRT (file: captions.srt)
1
00:00:00,000 --> 00:00:01,600
Three things nobody tells you
2
00:00:01,600 --> 00:00:03,400
about auto captions.
WebVTT (file: captions.vtt)
WEBVTT
00:00:00.000 --> 00:00:01.600
Three things nobody tells you
00:00:01.600 --> 00:00:03.400 line:70%
about auto captions.- SRT 给每张卡片编号,毫秒前面用逗号:
00:00:01,600。 - WebVTT 以
WEBVTT这一行开头,毫秒前面用句点:00:00:01.600,不需要卡片编号。 - WebVTT 可以在时间码后面附带
line、position、align等提示设置来指定字幕在屏幕上的位置,但并非所有播放器都支持。 - 两种文件都存成 UTF-8 文本,这样重音字母和中日韩文字才不会乱码。
硬字幕还是外挂字幕
| 类型 | 是什么 | 适合 | 缺点 |
|---|---|---|---|
| 外挂字幕(字幕轨) | 播放器叠加显示的单独 SRT 或 VTT 文件 | YouTube 上传、多语言、无障碍、可被搜索的文本 | 不是所有短视频 App 都支持上传字幕文件;样式由播放器决定 |
| 硬字幕(内嵌字幕) | 文字直接画进视频像素里 | 抖音、TikTok、Reels 和 Shorts,很多人静音观看;样式完全可控 | 无法关闭或翻译;有错就得重新导出 |
很多创作者两种都做:给短视频 App 用带样式的硬字幕,给 YouTube 用干净的 SRT。下面的 ffmpeg 命令分别演示这两种方式。subtitles 滤镜需要带 libass 的 ffmpeg 版本。
# Burn captions into a 1080x1920 video (white text, black outline, raised above the bottom UI)
ffmpeg -i final.mp4 \
-vf "subtitles=captions.srt:force_style='FontName=Arial,FontSize=12,Bold=1,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Alignment=2,MarginV=100'" \
-c:v libx264 -crf 18 -pix_fmt yuv420p -c:a copy captioned.mp4
# Add a soft caption track to an MP4 without re-encoding the video
ffmpeg -i final.mp4 -i captions.srt -map 0 -map 1 -c copy -c:s mov_text \
-metadata:s:s:0 language=eng soft_captions.mp4压制命令里,SRT 字幕画在一块高 288 个单位的虚拟画布上,所以在 1920 像素高的画面上 FontSize=12 大约是 80 像素,MarginV=100 会把文字从底部抬高大约三分之一。先拿一小段视频试一下,再调整。
竖屏视频的字幕样式
- 位置:字幕要避开底部三分之一,那里是 App 显示账号名、文案和按钮的地方。安全区的具体像素见我们的短视频尺寸指南。
- 大小:在手机上,剪辑软件里看着偏大的字往往刚好。请在真机上、拿到手臂长度的距离检查。
- 对比度:白色或黄色文字配深色描边或半透明底框,在任何背景上都清楚。
- 别挡住脸。如果说话人的脸在画面中间,字幕放在下巴下方,不要盖在嘴上。
- 一条视频一种样式。字体和颜色在卡片之间换来换去,观众会去看样式而不是看内容。
逐字或卡拉 OK 式字幕每次显示一到三个字,并高亮正在说的那个字。它需要词级时间戳,Whisper 类工具可以生成。这种字幕在节奏快的口播里能让视线一直停在屏幕上,但长篇讲解看起来会累。用在开头钩子和金句上,其余部分用普通的两行卡片。
翻译字幕
要翻译的是校对好的源语言字幕,不是原始转写稿。保持卡片的时间码不变,一张一张地翻译,这样每一行译文仍然对应它被说出的那一刻。
翻译会改变长度。同样的意思,西班牙语和德语通常比英语需要更多字符,而中文和日语字符更少,但阅读速度上限也低得多。翻译完之后,要对照目标语言的每行字数和阅读速度限制逐张检查,需要的话就删减。机器翻译出的字幕文件可以作为快速初稿,发布前最好让懂这门语言的人通读一遍。
自动字幕常见错误与局限
- 人名和新词:模型会写成最接近的常见词。准备一份人名和品牌拼写清单,并在转写稿里搜索核对。
- 数字:每个价格、日期和数值都要对照原话检查。字幕里的数字错了,比没有字幕还糟。
- 音乐和噪音:背景音乐、人群噪音和多人同时说话都会降低准确率。如果可以,转写时用降低音乐音量的版本。
- 静音处出字:实际中,ASR 模型有时会在长时间静音或纯音乐段落里写出文字。要删掉出现在没人说话处的卡片。
- 多语言混杂:中途切换语言的视频,可能只会按其中一种语言转写。把它拆开,每一段手动指定语言再转写。
- 无障碍:给听障观众看的字幕还应标注重要的声音,比如[关门声],ASR 不会自动加上这些。
常见问题
怎么免费给视频自动生成字幕?
用基于 Whisper 的转写工具,或者剪辑软件自带的自动字幕,再导出 SRT 文件。发布前一定要检查并修改文字。
YouTube 的自动字幕准吗?
通常能用,但人名、数字和嘈杂的音频不太可靠。YouTube 自己也表示质量可能参差不齐,请创作者检查并编辑。
SRT 和 VTT 有什么区别?
两者都列出字幕文字和起止时间。SRT 在毫秒前用逗号并给卡片编号;WebVTT 以 WEBVTT 开头,用句点,还能附带位置设置。
字幕每行多少个字合适?
Netflix 英文指南允许每行最多 42 个字符、两行;简体中文指南允许每行 16 个字。竖屏短视频的行还要更短,读起来更舒服。
字幕该压制进视频还是上传 SRT?
发抖音、TikTok、Reels 和 Shorts 时压制进视频,样式固定,也方便静音观看的人。发 YouTube 和其他语言版本时上传 SRT,观众可以自己开关字幕。