利用 whisper 为视频自动生成字幕
whisper 是一个由 openai 开发的通用语言识别模型,我们可以使用它来为视频自动创建字幕。
环境安装
为了加速,我们需要使用 GPU 来进行计算,因此需要安装基于 CUDA 的 pytorch。首先我们需要安装 Miniconda,这里安装的时候直接点击下一步即可。
安装完毕之后,我们需要创建一个新的环境,这里我们创建一个名为 whisper 的环境:
conda create -n whisper python=3.8
conda activate whisper
1. 安装 CUDA
安装好了 Miniconda 之后,我们需要安装 CUDA,执行 nvidia-smi
1 | $ nvidia-smi |
通过这个命令可以看到 Driver Version: 560.94 和 CUDA Version: 12.6,因此我们需要安装 12.6 版本的 CUDA,更加详细的版本对照表在 这里。在安装的时候可以选择自定义安装选项,一般来说只要勾选 CUDA 下的 Development 和 Runtime 即可。
安装完毕之后执行命令 nvcc -V 查看 CUDA 版本:
1 | $ nvcc -V |
2. 安装 cuDNN
根据自己下载的 CUDA 来选择对应版本的 cuDNN,下载地址在 这里。下载完毕之后解压到 CUDA 的安装目录下,一般来说是 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA{版本号},如果有重名的文件直接替换即可。
之后进入 extras\demo_suite 目录,执行如下命令:
bandwidthTest.exe
deviceQuery.exe
如果出现了 PASS 的字样,说明安装成功。
3. 安装 pytorch
切换到我们之前创建的 whisper 环境,使用如下命令安装 CUDA 版本的 pytorch:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
安装之后执行 python 命令进入 python 环境,执行如下代码:
1 | import torch |
如果显示 True 则说明 CUDA 版本的 pytorch 安装成功。
4. 安装 whisper
切换到我们之前创建的 whisper 环境,执行如下命令安装 whisper:
pip install -U openai-whisper
pip install setuptools-rust
安装完毕之后执行如下命令就可以使用 whisper 了:
whisper 'C:/Users/raymond/Desktop/voice.aac' --language zh --model turbo
如上命令表示对 C:/Users/raymond/Desktop/voice.aac 文件进行中文语言的识别,使用 turbo 模型。第一次执行该命令会下载模型文件,模型文件较大,下载时请确保网络通畅。执行结果如下
[00:00.000 --> 00:03.060] 提到肉毒毒素
[00:03.060 --> 00:04.540] 你会想到什么
[00:04.540 --> 00:10.820] 你真的了解它吗
[00:10.820 --> 00:12.540] 2017 年
[00:12.540 --> 00:14.180] 肉毒毒素以万能药标签
[00:14.180 --> 00:15.500] 登上时代周刊方面
[00:15.500 --> 00:17.280] 目前它在全球
[00:17.280 --> 00:18.960] 已被应用于几十种适应症
[00:18.960 --> 00:20.560] 仅在 2019 年
[00:20.560 --> 00:23.000] 接受注射的就已超过 620 万例
[00:23.000 --> 00:24.880] 但不要忘了
[00:24.880 --> 00:26.780] 肉毒毒素更是一种神经毒素
[00:26.780 --> 00:29.000] 还曾被当作生化武器使用
... 省略 ...
生成字幕
我们可以使用 ffmpeg 将音频从视频中提取出来,然后使用 whisper 生成字幕,最后使用 ffmpeg 将字幕添加到视频中。
使用如下命令提取音频:
ffmpeg -i input.mp4 -vn -acodec copy output.aac
然后使用 whisper 生成字幕,我们先在 pycharm 中创建一个 test-whisper 项目,并且把 python 解释器设置为 Miniconda 创建的 whisper 环境。创建一个 main.py 文件,写入如下代码:
1 | import whisper |
如上代码表示使用 turbo 模型,识别中文,打印详细信息,并且保存字幕文件。执行完毕之后我们可以在 E:/ 目录下看到生成的字幕文件。
最后我们使用 ffmpeg 将字幕添加到视频中:
ffmpeg -i input.mp4 -i output.srt -c:s mov_text -c:v copy -c:a copy output.mp4
之后我们在播放这个视频的时候就会有字幕了。
参考
video-subtitle-generator
基于 Anaconda 的 pytorch-cuda
CUDA 与 cuDNN 的安装与配置
ffmpeg 视频合并、格式转换、截图