Openai-Whisper识别生成语音/视频字幕文件(支持自动翻译)
本文将介绍如何使用 Openai-Whisper 为视频自动生成字幕文件。对比使用kdenlive加载VOSK Model的方法,使用Openai-Whisper更快更准确。
演示视频:点击观看演示视频
程序演示
笔记本配置如下:
显卡:NVIDIA GeForce GTX 1660 Ti 6GB版
CPU:Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz
内存:16GB
运行结果:
视频时长 2 分钟 58 秒,生成字幕耗时 36 秒。
正确率:本次总共 307 个汉字,识别错误 27 个,本次正确率为 91.21%。
点击箭头所指位置即可保存字幕文件。

一、操作系统要求
关于支持的操作系统,Whisper 是跨平台兼容的,包括:Windows、macOS、Linux。本文是基于 Windows 系统的。
二、安装 Python
Whisper官方声明最好使用 Python 3.7 或更高版本。本文使用 Python 3.10.7。

三、安装 CUDA 和 cuDNN
本文使用的是cuda_11.8.0_522.06和cudnn-windows-x86_64-8.5.0.96_cuda11-archive,本文一些具体安装步骤细节比较繁琐,以及有些安装的东西需要版本对应,关于此,我确信我发现一种美妙的方法,可惜这里的空白处太小,写不下。
注意将cudnn解压至同名文件夹后重命名为cudnn,然后移动到目录C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8下。
将这两个添加到系统环境变量中:

四、安装 GPU 版本的 PyTorch
如果之前安装 CPU 版本的 PyTorch,请先删除 CPU 版本的 PyTorch。
在网页https://pytorch.org/get-started/locally/中进行选择然后复制指令
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
运行。如果下载慢,可以使用dev-sidecar代理进行加速。

安装完成之后检查 PyTorch 的运行情况。
指令如下:
import torch
print(torch.__version__)
print(torch.cuda.is_available())

五、安装FFmpeg
由于 Whisper 使用 FFmpeg 处理视频和音频文件。所以必须安装 FFmpeg。FFmpeg 官方下载页面:
https://www.ffmpeg.org/download.html
选择 Windows、选择“Windows builds by BtbN”。

下载最新稳定版本

解压缩下载的压缩包,然后把其中的bin目录添加到系统环境变量中。

检查 ffmpeg 命令是否可用,启动命令提示符或 PowerShell。运行以下指令:
ffmpeg -version

六、安装 Whisper
运行以下指令:
pip install git+https://github.com/openai/whisper.git
注意:Whisper第一次使用需要下载模型。
七、使用 Whisper Webui
Whisper Webui 程序地址如下:
https://huggingface.co/spaces/aadnk/whisper-webui/tree/main
本文使用huggingface_hub来获得Whisper Webui,该方法方便快捷。
huggingface_hub 的安装指令如下:
pip install huggingface-hub
安装完成之后运行以下指令:
from huggingface_hub import snapshot_download
YOUR_TOKEN = "1"
snapshot_download(
repo_id="aadnk/whisper-webui",
repo_type="space",
revision="main",
use_auth_token=YOUR_TOKEN,
cache_dir="./")
指令运行之后可以得到文件夹

文件夹名1217d8b2d6382b65395e1bdd2532a6c76bd12eeb为存储库版本。该文件夹下有:

八、使用说明
双击运行app-local.py

运行结果

复制URL粘贴到浏览器,按回车

具体每一选项的说明,可以查看docs下的options文件,打开查看方式为右键-打开方式-记事本。一些比较重要的列举如下:
1、对于较长的音频文件(>10 分钟),建议在 VAD 选项中选择 Silero VAD(Voice Activity Detector)。
2、选择语言,或将其留空,以便 Whisper 自动检测它。请注意,如果所选语言与音频中的语言不同,Whisper 可能会开始将音频翻译为所选语言语。例如,如果音频是英文但您选择了日文,则模型可能会将音频翻译成日文。
3、Vad 选项:
* none:在整个音频输入上运行Whisper
* silero-vad:使用 Silero VAD 检测包含语音的部分,并在每个部分上独立运行Whisper。Whisper 也在运行关于每个语音部分之间的间隙。
* silero-vad-skip-gaps:同上,但不包含根据 Silero 的语音的部分将被跳过。这会稍微快一些,但是可能会导致对话被跳过。
* periodic-vad:“VAD - 最大合并大小”创建语音部分。这是非常快速和简单的,但可能会中断一个句子或单词一分为二。
4、VAD - Merge Window 选项:如果设置,任何相隔最多此秒数的相邻语音部分将被自动合并。
5、VAD - Max Merge Size (s) 选项:如果相邻语音部分的长度达到此秒数,则禁用它们的合并。
6、VAD - Padding (s) 选项:
添加到每个语音部分的开头和结尾的秒数(浮点数)。将此设置为一个数字,大于零确保 Whisper 更有可能正确转录句子开头的句子演讲部分。但是,这也增加了 Whisper 分配错误时间戳的概率到每个转录的行。默认值为 1 秒。
九、总结
使用Openai-Whisper自动生成语音/视频字幕,优点是:识别正确率高、使用方便快捷。
而且,很重要的一点是:免费!!!
对比讯飞听见字幕的收费如下:

另外,虽然剪映可以免费生成字幕,但是!对比本文所介绍的方法,剪映实在是太慢了。
而且,本方法是在电脑端本地运行,不需要上传任何数据,所以在个人隐私数据上有保障。