whisper是OpenAI公司出品的AI字幕神器,是目前最好的语音生成字幕工具之一,开源且支持本地部署,支持多种语言识别(英语识别准确率非常惊艳)。这篇文章应该是网上目前关于Windows系统部署whisper最全面的中文攻略。
whisper开源地址:https://github.com/openai/whisper
whisper是一个纯命令行工具,所以我再介绍whisper的两个衍生项目:whisper-webui(WebUI版whisper)和buzz(GUI版whisper)。
whisper-webui开源地址:https://huggingface.co/spaces/aadnk/whisper-webui
buzz开源地址:https://github.com/chidiwilliams/buzz
安装whisper
whisper基于python开发,需要用到较多的依赖环境,所以推荐搭建python虚拟环境来安装whisper。虚拟环境这步本教程略过,不影响whisper安装。
首先安装python3.10,既可以在python官网下载安装包,也可以在MicrosoftStore下载安装:

如果你的显卡支持CUDA,前往英伟达官网下载和显卡驱动版本对应的CUDA工具
https://developer.nvidia.com/rdp/cudnn-download
whisper既支持CPU运行也支持GPU运行,根据实际情况安装对应的torch。前往pytorch官网,根据实际情况设置安装参数,然后拷贝对应的命令安装torch:
https://pytorch.org/get-started/locally/

然后安装ffmpeg(下载ffmpeg,把bin目录添加到系列的path环境变量),确保在命令行输入ffmpeg即可正常调用:

准备工作完成就可以安装whisper了,官方提供两种安装方式,最简单方法是通过pip安装打包好的whisper,还可以通过github仓库部署whisper(对网络要求高):
pip install setuptools-rust #方式一打包安装 pip install -U openai-whisper #方式二github仓库安装 pip install git+https://github.com/openai/whisper.git #github仓库升级 pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
除了安装主程序,使用whisper还需要下载AI模型文件。官方提供了5个模型文件,默认使用small.pt。显卡性能较好可尝试medium.pt和large.pt模型,识别准确率更高,但速度更慢。

程序下载这几个模型很慢(主要是网络不稳定)。我建议去whisper的_int_.py文件源码里找到这几个文件下载地址,然后用下载软件下载到本地。然后放到路径:C:\Users\用户名\.cache\whisper

_MODELS = { "tiny.en": "https://openaipublic.azureedge.net/main/whisper/models/d3dd57d32accea0b295c96e26691aa14d8822fac7d9d27d5dc00b4ca2826dd03/tiny.en.pt", "tiny": "https://openaipublic.azureedge.net/main/whisper/models/65147644a518d12f04e32d6f3b26facc3f8dd46e5390956a9424a650c0ce22b9/tiny.pt", "base.en": "https://openaipublic.azureedge.net/main/whisper/models/25a8566e1d0c1e2231d1c762132cd20e0f96a85d16145c3a00adf5d1ac670ead/base.en.pt", "base": "https://openaipublic.azureedge.net/main/whisper/models/ed3a0b6b1c0edf879ad9b11b1af5a0e6ab5db9205f891f668f8b0e6c6326e34e/base.pt", "small.en": "https://openaipublic.azureedge.net/main/whisper/models/f953ad0fd29cacd07d5a9eda5624af0f6bcf2258be67c92b79389873d91e0872/small.en.pt", "small": "https://openaipublic.azureedge.net/main/whisper/models/9ecf779972d90ba49c06d968637d720dd632c55bbf19d441fb42bf17a411e794/small.pt", "medium.en": "https://openaipublic.azureedge.net/main/whisper/models/d7440d1dc186f76616474e0ff0b3b6b879abc9d1a4926b7adfa41db2d497ab4f/medium.en.pt", "medium": "https://openaipublic.azureedge.net/main/whisper/models/345ae4da62f9b3d59415adc60127b97c714f32e89e936602e85993674d08dcb1/medium.pt", "large-v1": "https://openaipublic.azureedge.net/main/whisper/models/e4b87e7e0bf463eb8e6956e646f1e277e901512310def2c24bf0e11bd3c28e9a/large-v1.pt", "large-v2": "https://openaipublic.azureedge.net/main/whisper/models/81f7c96c852ee8fc832187b0132e569d6c3065a3252ed18e56effd0b6a73e524/large-v2.pt", "large": "https://openaipublic.azureedge.net/main/whisper/models/81f7c96c852ee8fc832187b0132e569d6c3065a3252ed18e56effd0b6a73e524/large-v2.pt", }

使用whisper
安装完毕,如何使用whisper生成字幕文件呢?打开powershell,输入whisper就可以看到程序使用说明:

whisper japanese.wav --language Japanese --model medium
上面这个命令就是分析japanese.wav这个音频文件,指定日语生成字幕。如果需要翻译,还可以加上--task translate参数,但默认只能翻译成英文。
whisper的操作并不直观,所以有两个更加方便的选择whisper-webui和Buzz。Buzz是whisper的GUI版本功能和whisper完全一样。whisper-webui则属于升级版本,提供了生成速度更快的fast-whisper方案。
介绍一下buzz
去Buzz开源地址下载安装包,支持Windows、Linux、macOS,以Windows为例。

安装完成后打开buzz,buzz界面非常简单:话筒按钮直接调用录音软件录音生成字幕;+按钮选择语音或视频文件进行转换,设置选项里可以设置转换语言和调用模型。


使用效果和whisper一致,上手很简单。接下来重点介绍一下whisper-webui:
介绍一下whisper-webui
首先把whisper-webui的仓库git下来:
git clone https://huggingface.co/spaces/aadnk/whisper-webui
然后进入目录运行安装命令(安装时间取决于网络):
pip install -r requirements.txt pip install -r requirements-fasterWhisper.txt
已经安装了whisper的话,可以去掉下图这行:

新建一个bat文件,命名为webui.bat输入:
python app.py --whisper_implementation faster-whisper --input_audio_max_duration -1

以后双击bat文件即可运行whisper-webui,通过http://127.0.0.1:7860即可访问webui页面:

由于使用的是fast-whisper所以使用过程中需要重新下载模型文件。为什么要用fast-whisper呢?因为相比原版whisper,fast-whisper的生成速度更快需要的显存更小,对显卡的要求更低。官方的说法是显存占用减少一半以上,速度提升3-5倍。实测效果确实更好一点。

注意whisper-webui需要先将源文件上传至临时文件夹,在转换视频这样的大文件时,需要等待文件上传完毕开能点开始生成的按钮,不然程序会报错。
一个简单的方法
其实视频、音频转文字还有一个更简单的解决方案。现在的剪辑工具比如剪映、必剪都自带语音识别字幕功能。识别准确率不输whisper(汉语准确率更高),速度甚至更胜whisper,也算一个不错解决方案。

问题汇总
1.显卡支持CUDA,也安装了CUDA,但是whisper只调用CPU
一个简单的命令可以测试torch是否成功安装,以及torch是否支持调用CUDA:打开命令行输入python进入python命令行,逐行输入以下命令:
import torch torch.__version__ torch.cuda.is_available()
命令会分别输出torch版本和是否支持调用CUDA。如果你的显卡支持CUDA,但是下载的是CPU版本最好卸载torch重新安装。

2.使用whisper-webui转换视频文件提示ffmpeg报错
视频文件需要通过ffmpeg分离音频,而whisper-webui需要先将源文件上传至临时文件夹,在转换视频这样的大文件时,需要等待文件上传完毕开能点开始生成的按钮,不然程序会报错。