whisper是一个由openai开发的通用语言识别模型,我们可以使用它来为视频自动创建字幕。
环境安装
为了加速,我们需要使用GPU来进行计算,因此需要安装基于CUDA的pytorch。首先我们需要安装Miniconda,这里安装的时候直接点击下一步即可。
安装完毕之后,我们需要创建一个新的环境,这里我们创建一个名为whisper
的环境:
conda create -n whisper python=3.8conda activate whisper
1. 安装CUDA
安装好了Miniconda之后,我们需要安装CUDA,执行nvidia-smi
$ nvidia-smiThu Jan 2 11:49:53 2025+-----------------------------------------------------------------------------------------+| NVIDIA-SMI 560.94 Driver Version: 560.94 CUDA Version: 12.6 ||-----------------------------------------+------------------------+----------------------+| GPU Name Driver-Model | Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. || | | MIG M. ||=========================================+========================+======================|| 0 NVIDIA GeForce GTX 1060 6GB WDDM | 00000000:01:00.0 On | N/A || 0% 39C P8 10W / 120W | 505MiB / 6144MiB | 0% Default || | | N/A |+-----------------------------------------+------------------------+----------------------+
通过这个命令可以看到Driver Version: 560.94
和CUDA Version: 12.6
,因此我们需要安装12.6版本的CUDA,更加详细的版本对照表在这里。在安装的时候可以选择自定义安装选项,一般来说只要勾选CUDA下的 Development和Runtime即可。
安装完毕之后执行命令nvcc -V
查看CUDA版本:
$ nvcc -Vnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2024 NVIDIA CorporationBuilt on Thu_Sep_12_02:55:00_Pacific_Daylight_Time_2024Cuda compilation tools, release 12.6, V12.6.77Build cuda_12.6.r12.6/compiler.34841621_0
2. 安装cuDNN
根据自己下载的CUDA来选择对应版本的cuDNN,下载地址在这里。下载完毕之后解压到CUDA的安装目录下,一般来说是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA{版本号}
,如果有重名的文件直接替换即可。
之后进入extras\demo_suite
目录,执行如下命令:
bandwidthTest.exedeviceQuery.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-whisperpip 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视频合并、格式转换、截图