Post

使用 OpenAI Whisper 提取字幕,并用 FFmpeg 添加字幕到视频

使用 OpenAI Whisper 提取字幕,并用 FFmpeg 添加字幕到视频

在这篇博客中,我将分享一个完整的流程: 如何使用 OpenAI 的 Whisper 从视频中提取字幕,并使用 FFmpeg 将字幕添加回视频中。

起因是每次在 X、油管上下载的视频,都是没有字幕的,想要分享给别人看或者自己看的时候不太方便。

今天重新鼓捣了一下 python 环境,吃瘪了 1 小时,最后重新开了个 conda 的新环境,python 和 pytorch 全部重装就好了…

另外结点也要换来换去找最快的结点,保证下载速度。

前置条件

在开始之前,请阅读 whisper 的官方 github,并确保已安装以下工具:

  1. Python(建议版本 3.8-3.11 )
  2. FFmpeg(选一个你喜欢的 package manager 装)
  3. Whisper(安装在你的 Python 环境中)
  4. 视频文件(例如:example.mp4

步骤 1:安装必要的库

首先,我们需要安装 Whisper 和其他相关依赖:

1
2
3
4
5
6
pip install -U openai-whisper
# 或者
pip install git+https://github.com/openai/whisper.git

# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg

确保你的环境中已经安装好 Whisper 和 ffmpeg:

1
2
whisper --help
ffmpeg -version

步骤 2:使用 Whisper 提取字幕(命令行版)

硬字幕与软字幕

视频上的字幕可分为 硬字幕 或 软字幕 。

硬字幕是硬编码到视频中的字幕,只要支持视频格式,就可以在任何媒体播放器上显示。这些字幕会刻录到视频中,一旦添加就无法删除。

软字幕不会刻录到视频中,是放到视频播放器里的。它们可以在视频播放过程中启用或禁用。这为用户提供了更大的灵活性,并让他们可以更好地控制如何观看视频。

在这里,仅介绍硬字幕的方法。

tips:如果你的视频文件较大,可能需要提取音频之后,对音频生成字幕文件。

生成 SRT 字幕文件

运行以下命令,将音频或视频直接转为字幕文件:

1
whisper input_video.mp4 --model base --language English --output_format srt

参数说明: input_video.mp4:输入的视频文件。 --model base:指定使用的模型(tiny, base, small, medium, large,模型越大效果越好,但需要更多资源)。 --language English:input 视频语言为英语。 --output_format srt:输出 .srt 格式的字幕文件。

这些参数的更多信息,可以查阅官方 GitHub。

完成后,你会在当前目录下得到一个名为 output.srt 的字幕文件。

文件内容类似:

1
2
3
4
5
6
7
8
9
1
00:00:00,000 --> 00:00:04,840
As we're in already a festive mood, I'd love to like get the visual intelligence part


2
00:00:04,840 --> 00:00:06,640
of this rolling.

步骤 3:用 FFmpeg 添加字幕到视频

使用 FFmpeg 将生成的字幕文件嵌入到视频中。

1
ffmpeg -i imput.mp4 -vf subtitles=output.srt output_video_subtitles.mp4

imput.mp4output_video_subtitles.mp4分别代表要加字幕的视频和加好字幕的输出视频,可以替换成具体的文件路径。

subtitles=output.srt这一块,我试了很多次路径,都会报错。好在上一步生成的字幕文件,也是在同一目录,直接拿来就可以用。这个有待后续研究。

可选参数

srt 字幕文件风格较少,ass 较丰富,具体可查阅这个博客

步骤 4:检查结果

播放 output_with_subtitles.mp4,确认字幕已正确显示并同步。

如果字幕显示有问题,请确保:

  1. 字幕文件编码为 UTF-8。
  2. 视频和字幕的时间戳匹配。

结束

这样就好了,模型是开源的好像也不记次数吧,加字幕啥的挺方便,不用再去剪影里面一个个点了。

This post is licensed under CC BY 4.0 by the author.

Trending Tags