首页博客 → 从视频和网络研讨会自动生成 SRT 与 VTT 字幕

从视频和网络研讨会自动生成 SRT 与 VTT 字幕

发布于 2026-08-05 · 5 分钟阅读

字幕能提高完播率,让内容在静音状态下也可用,还能帮搜索引擎理解视频讲了什么。手工打字幕要花好几个小时——下面讲如何自动拿到现成的 SRT 和 VTT 文件。

SRT 和 VTT 的区别

两者都是带时间轴的文本,差别很小:

规则很简单:上传到视频平台用 SRT,自己网站上的播放器用 VTT。

第一步:从视频里提取音轨

没必要上传整个视频文件——只要音轨就够,体积小几十倍。一条命令搞定:

ffmpeg -i webinar.mp4 -vn -acodec libmp3lame -q:a 5 webinar.mp3

转换之后,一小时的网络研讨会大约 25 MB,正好在请求体积限制之内。

第二步:一个请求拿到字幕

格式由 response_format 指定。服务返回的就是现成文件,不需要你自己把文本切成字幕条:

from openai import OpenAI

client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="your key")

with open("webinar.mp3", "rb") as f:
    srt = client.audio.transcriptions.create(
        model="whisper-1", file=f, response_format="srt",
    )

open("webinar.srt", "w", encoding="utf-8").write(srt)

要用在网页上,只改一个词:

vtt = client.audio.transcriptions.create(
    model="whisper-1", file=f, response_format="vtt",
)

在终端里同样简单:

curl https://voicesscribe.com/v1/audio/transcriptions \
  -H "Authorization: Bearer your key" \
  -F file=@webinar.mp3 -F model=whisper-1 -F response_format=srt \
  -o webinar.srt

第三步:把字幕挂到播放器上

在 HTML5 里,视频标签内加一行就够:

<video controls src="webinar.mp4">
  <track kind="subtitles" src="webinar.vtt" srclang="zh" label="中文" default>
</video>

视频平台则在单个视频的字幕栏里上传 SRT 文件——剩下的只是校对识别出来的文字。

长录音:如何绕开体积限制

如果录音放不进 25 MB,就切开处理,再按时间偏移把字幕拼回去:

ffmpeg -i long.mp3 -f segment -segment_time 1800 -c copy part%03d.mp3

每一段单独提交,合并时给时间轴加上该段的起始偏移。半小时一段的话,这只是几行代码,限制也就不再碍事了。

如何让字幕更好读

用你自己的录音试一试。 注册只需一分钟,免费额度足够判断识别质量。

免费获取 API 密钥

常见问题

可以直接上传视频文件吗?

更实际的做法是先提取音轨:体积小几十倍,上传也快得多。一条 ffmpeg 命令就能完成。

生成的字幕能用在视频平台上吗?

可以,SRT 格式无需转换即可上传到主流视频平台。

超过一小时的录音怎么办?

切成 20 到 30 分钟一段,分别转录,再按时间偏移把字幕合并起来。

时间轴准不准?

对观看来说足够准:字幕条与语音对得上。剪辑中要求逐帧精确时,通常还需要手工微调。

支持其他语种的字幕吗?

支持,可识别 99 种语言且自动判定语种。双语录音建议分段分别处理。

相关阅读