如何快速为竖屏短视频生成字幕
短视频大多是静音观看的——据不同统计,多达四分之三的播放没有声音。没有字幕的片子,观众一秒就划走。下面讲怎么自动生成字幕,并用一条命令把它烧进画面。
直接拿现成的字幕文件
最短的路径是直接请求字幕格式,时间轴已经排好:
from openai import OpenAI
client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="your key")
with open("reel.mp4", "rb") as f:
srt = client.audio.transcriptions.create(
model="whisper-1", file=f, response_format="srt")
open("reel.srt", "w", encoding="utf-8").write(srt)
只要不超体积上限,视频文件可以直接发。片子较长时先抽音轨,体积能小二十倍。
默认的行为什么太长
默认字幕是按横屏设计的,一行 40–50 个字符。放到竖屏上占掉半个画面,很难读。短视频需要三到五个词一组、快速切换的短句。
请求分段格式,自己重排断行:
r = client.audio.transcriptions.create(
model="whisper-1", file=f, response_format="verbose_json")
for seg in r.segments:
words = seg["text"].split()
step = (seg["end"] - seg["start"]) / max(len(words), 1)
for i in range(0, len(words), 4):
chunk = " ".join(words[i:i+4])
print(round(seg["start"] + i * step, 2), chunk)
结果是一串带各自显示时间的短句,正是竖屏需要的形态。
把字幕烧进画面
平台不一定会渲染你上传的字幕文件,烧进画面更保险:
ffmpeg -i reel.mp4 -vf "subtitles=reel.srt:force_style='FontSize=16,Bold=1,Alignment=2,MarginV=90,Outline=2'" -c:a copy reel-sub.mp4
Alignment=2 让文字底部居中,MarginV 把它抬到播放器控件之上,Outline 给出描边,任何背景上都能看清。
发布前检查什么
- 人名和品牌。提前用提示词传进去,比事后手改省事。
- 安全区域。字幕不能压在平台界面下面,底部要留出余量。
- 切换速度。一行至少停留一秒,否则根本来不及读。
- 语言。片子里混了两种语言,就分成两条字幕轨。
用你自己的录音试一试。 注册只需一分钟,免费额度足够判断识别质量。
免费获取 API 密钥常见问题
可以直接上传视频而不是音频吗?
只要不超过体积上限就可以。抽出音轨能省上传时间,转录结果完全一样。
srt 和 vtt 有什么区别?
两种字幕格式结构几乎相同。srt 在剪辑软件里更通用,vtt 是网页播放器的原生格式。
怎么做逐词跳动的字幕?
请求分段格式,把文本切成三到五个词一组,按词数在段内均分时间。
一分钟的片子多少钱?
按音频分钟计费,一分钟片子就是一分钟。新账号的免费分钟够做几十条。
相关阅读
- 从视频和网络研讨会自动生成 SRT 与 VTT 字幕 — 如何从录播视频或网络研讨会得到带时间轴的现成字幕:提取音轨、SRT 与 VTT 的区别、代码示例,以及常见问题的解决办法。
- 把 YouTube 视频转成文字的三种办法 — 把 YouTube 视频变成文字的三种方法:平台自动字幕、下载音轨自己转录、批量处理整个频道——附代码以及各自的边界。
- 网站上的视频转录:为什么 SEO 需要它 — 视频转录如何带来搜索流量:页面结构、结构化标记、时间戳链接,以及让文本白白浪费的常见错误。