Whisper 是 OpenAI 发布的多模态语音识别网络,强大的功能实现了 99 种语言的语音识别转写及带有时间戳的字幕、歌词生成,并且支持 srt 文件在内的多种格式文件输出,是OpenAI 少有的开源产品。这里提供 Whisper 及 Whisper.cpp 项目的模型文件下载及简单使用,后附 Whisper.cpp 的模型转换工具及一些其他必要组件等。
Whisper的安装方法:
命令行安装,可以使用 pip 直接安装、更新:
(如果友友看不明白pip命令那么直接跳到Whisper.cpp吧,估计这个也用不明白)
pip install -U openai-whisper
也可以从github代码仓库pull安装(需要安装git)
pip install git+https://github.com/openai/whisper.git
使用以下命令强制更新到当前代码仓库的版本
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
模型文件度盘链接:
链接:https://pan.baidu.com/s/1fIU-KqHVyJIZKpHSH3uELQ?pwd=j06q
提取码:j06q
--来自百度网盘超级会员V9的分享
官方下载地址
"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", 全部模型文件:

全部模型文件
该模型为 OpenAI 的原始模型格式 .pt 格式。模型下载之后可放在任意位置 例如:
D:\WhisperModels\models_OpenAI 在命令行运行相关命令时,可以使用 --model_dir 命令 来指定模型文件路径 ,具体命令如下:
Whisper xxxx.wav --model large-v2 --model_dir D:\WhisperModels\models_OpenAI --language Chinese --devicce cuda 以上命令指定了处理某个音频文件,指定模型为large-v2,指定了模型文件所在的目录,指定了语言为 中文,并指定了处理设备为 英伟达GPU(cuda)。但是我们并未指定输出文件,所以该命令运行后程序会输出所有格式,包括:json、srt字幕、txt等等,输出目录将会在当前工作目录下。
不指定模型文件路径的时候,Whisper 会去下列路径寻找模型文件:
C:\user\xxxx\.cache\whisper 如果该路径下也没有模型文件,则 Whisper 将自行下载模型文件 (龟速警告)。
如果不会使用命令行工具那么可能上述版本模型对友友来说没啥用。
Whisper 网络的参数量已然很大,模型的大小本身也有 3G 上下,占用显存则更多,所以 10G 以下显存在运行 pytorch 版的 Whisper 时可能存在一定困难。下面介绍 Whisper 的 ggml 版本也就是 Whisper.cpp ,是 Whisper 的 C++ 实现,且进行了GUI封装,具备窗口界面(其实就是 WhisperDesktop 项目)。
模型选择使用也放在下面板块进行说明。
由于以上版本的 Whisper 基本依赖于命令行运行,所以有了各种封装软件,比如 Buzz 等。我使用的是 WhisperDesktop,是使用 Whisper.cpp 项目所提供的 ggml 格式模型运行的 Whisper 版本。
WhisperDesktop 主页:
https://github.com/Const-me/Whisper
WhisperDesktop v1.11 下载:
链接:https://pan.baidu.com/s/1pZdxZyk5oB2Bu0W5N8Dx8w?pwd=7m8s
提取码:7m8s
--来自百度网盘超级会员V9的分享
ggml格式模型下载:
链接:https://pan.baidu.com/s/1AcTRFJ3AhQCrHVolY_bSZw?pwd=r11f
提取码:r11f
--来自百度网盘超级会员V9的分享
官方下载地址:
https://huggingface.co/datasets/ggerganov/whisper.cpp/tree/main
该软件是 Whisper 的 ggml 版本。ggml 是一个用于机器学习的张量库,该机器学习库所使用的模型文件是 bin 格式的二进制文件,在 WhisperDesktop 软件中使用的模型直接由 OpenAI 的模型转换得到,故语音识别效果应当与 Whisper 相同。
使用:
解压、双击打开软件:

打开程序
选择模型文件:

在这里选择好从度盘下载下来的模型文件,模型文件后缀带有 “en” 的是纯英文模型,为单独英语模型,除英文外其余语言不应选用该种模型,而应该选择多模态模型(多模态模型也能处理英文)。
模型越大对显存要求就也越大,速度也越慢:

请根据自己的设备以及实际转换需求选择模型(Whisper.cpp 版本对显存的需求低得多,最大的 large 模型也只需要5个G左右显存,pytorch版本使用 large 模型则需要接近10G 显存!)。越大的模型加载越需要时间,一般一分钟左右即可。
如果有多块显卡可以在 Advance 选项中进行设置
选好模型之后点 ok 我们进入下一步

音频转写设置界面
点击 Transcript 之后就会开始自动进行转写,转写结束之前不可中断!
关于各种模型:
由于两种不同版本的 Whisper 只是实现不同,模型格式虽然不一样但是内容完全一样,因此在这里同一说明各种模型文件之间的差异。
OpenAI 官方给出的各种模型的大小和性能比较:

图片来自: https://sspai.com/post/75953#!
但事实上,官方没有对文档进行更新,目前的 large 模型已经达到了接近3GB 大小,其显存要求可能也会更高(原本的 large 模型预计的显存使用就已经达到10GB......),medium 模型的大小也已经达到 1.4GB。计算机性能有限的各位朋友还是优先考虑使用 Whisper.cpp 版本吧。
中文环境下的各种模型比较

对于新版 large-v2 模型的使用效果可以看这个

识别用时等如下:

用时00:04:01 emmmmm
效果还是可以的,因为这首中文音乐发音相对清楚,所以算是比较简单的识别内容了。
large-v2
1
00:00:00,000 --> 00:00:02,000
第十一集
2
00:00:02,000 --> 00:00:27,000
我爱你
3
00:00:27,000 --> 00:00:30,000
词曲:李宗盛
4
00:00:30,000 --> 00:00:35,000
月光把天空照亮
5
00:00:35,000 --> 00:00:41,000
洒下一片光芒点缀海洋
6
00:00:41,000 --> 00:00:47,000
每当流星从天而降
7
00:00:47,000 --> 00:00:53,000
心中的梦想都随风飘扬
8
00:00:53,000 --> 00:00:56,000
展开透明翅膀
9
00:00:56,000 --> 00:01:00,000
飞出天窗
10
00:01:00,000 --> 00:01:05,000
找寻一个最美丽的希望
11
00:01:05,000 --> 00:01:11,000
每当天空泛起彩色霞光
12
00:01:11,000 --> 00:01:21,000
带着回忆和梦想一起飞翔
13
00:01:21,000 --> 00:01:26,000
月光把天空照亮
14
00:01:26,000 --> 00:01:32,000
洒下一片光芒点缀海洋
15
00:01:32,000 --> 00:01:38,000
每当流星从天而降
16
00:01:38,000 --> 00:01:44,000
心中的梦想都随风飘扬
17
00:01:44,000 --> 00:01:47,000
展开透明翅膀
18
00:01:47,000 --> 00:01:49,000
飞出天窗
19
00:01:49,000 --> 00:01:55,000
找寻一个最美丽的希望
20
00:01:55,000 --> 00:02:01,000
每当天空泛起彩色霞光
21
00:02:01,000 --> 00:02:08,000
带着回忆和梦想一起飞翔
22
00:02:28,000 --> 00:02:33,000
啦啦 啦啦
23
00:02:34,000 --> 00:02:36,000
字幕:小玥
24
00:02:36,000 --> 00:02:41,000
【伦桑原创】Lun Sang 伦桑原创
开头的“第十一集 我爱你” 我估计是它幻听了......
成功识别出了音乐内容,并自动添加了 “词曲:李宗盛” 这样的音乐信息,虽然是错的。
其他模型的效果也一并放在下面
large-v1
1
00:00:00,000 --> 00:00:02,000
作曲:陈晓明
2
00:00:02,000 --> 00:00:04,000
作词:陈晓明
3
00:00:04,000 --> 00:00:06,000
作曲:陈晓明
4
00:00:06,000 --> 00:00:08,000
编曲:陈晓明
5
00:00:08,000 --> 00:00:10,000
和声:陈晓明
6
00:00:10,000 --> 00:00:12,000
混音:陈晓明
7
00:00:12,000 --> 00:00:14,000
母带:陈晓明
8
00:00:14,000 --> 00:00:16,000
和声:陈晓明
9
00:00:16,000 --> 00:00:18,000
和声:陈晓明
10
00:00:18,000 --> 00:00:20,000
和声:陈晓明
11
00:00:20,000 --> 00:00:22,000
和声:陈晓明
12
00:00:22,000 --> 00:00:24,000
和声:陈晓明
13
00:00:24,000 --> 00:00:26,000
和声:陈晓明
14
00:00:26,000 --> 00:00:28,000
和声:陈晓明
15
00:00:28,000 --> 00:00:30,000
和声:陈晓明
16
00:00:30,000 --> 00:00:35,000
月光把天空照亮
17
00:00:35,000 --> 00:00:41,000
洒下一片光芒点缀海洋
18
00:00:41,000 --> 00:00:47,000
每当流星从天而降
19
00:00:47,000 --> 00:00:53,000
心中的梦想都随风飘扬
20
00:00:53,000 --> 00:00:58,000
展开透明翅膀的终点中
21
00:00:58,000 --> 00:01:04,000
找寻一个最美丽的希望
22
00:01:04,000 --> 00:01:10,000
每当天空泛起彩色下光
23
00:01:10,000 --> 00:01:21,000
带着回忆和梦想一起飞翔
24
00:01:21,000 --> 00:01:26,000
月光把天空照亮
25
00:01:26,000 --> 00:01:32,000
洒下一片光芒点缀海洋
26
00:01:32,000 --> 00:01:38,000
每当流星从天而降
27
00:01:38,000 --> 00:01:44,000
心中的梦想都随风飘扬
28
00:01:44,000 --> 00:01:49,000
展开透明翅膀的终点中
29
00:01:49,000 --> 00:01:55,000
找寻一个最美丽的希望
30
00:01:55,000 --> 00:02:01,000
每当天空泛起彩色下光
31
00:02:01,000 --> 00:02:08,000
带着回忆和梦想一起飞翔
32
00:02:15,000 --> 00:02:33,000
啦……
33
00:02:33,000 --> 00:02:39,000
啦……
34
00:02:39,000 --> 00:02:43,000
啦……
陈晓明又是谁。。。。
medium 中等模型转写效果如下:
medium
1
00:00:00,000 --> 00:00:05,000
作词:李宗盛 作曲:李宗盛
2
00:00:05,000 --> 00:00:30,000
编曲:李宗盛
3
00:00:30,000 --> 00:00:36,000
月光把天空照亮
4
00:00:36,000 --> 00:00:42,000
洒下一片光芒点缀海涯
5
00:00:42,000 --> 00:00:47,000
每当流星从天而降
6
00:00:47,000 --> 00:00:53,000
心中的梦想都随风飘扬
7
00:00:53,000 --> 00:00:59,000
展开透明翅膀的中天窗
8
00:00:59,000 --> 00:01:05,000
找寻一个最美丽的希望
9
00:01:05,000 --> 00:01:10,000
每把天空翻起再洒下光
10
00:01:10,000 --> 00:01:21,000
带着回忆和梦想一起飞翔
11
00:01:21,000 --> 00:01:26,000
月光把天空照亮
12
00:01:26,000 --> 00:01:32,000
洒下一片光芒点缀海涯
13
00:01:32,000 --> 00:01:38,000
每当流星从天而降
14
00:01:38,000 --> 00:01:43,000
心中的梦想都随风飘扬
15
00:01:43,000 --> 00:01:49,000
展开透明翅膀的中天窗
16
00:01:49,000 --> 00:01:55,000
找寻一个最美丽的希望
17
00:01:55,000 --> 00:02:01,000
每把天空翻起再洒下光
18
00:02:01,000 --> 00:02:07,000
带着回忆和梦想一起飞翔
19
00:02:08,000 --> 00:02:12,000
啦啦啦啦啦啦啦啦
20
00:02:12,000 --> 00:02:18,000
啦啦啦啦啦啦啦啦
21
00:02:18,000 --> 00:02:24,000
啦啦啦啦啦啦啦啦啦
22
00:02:24,000 --> 00:02:29,000
啦啦啦啦啦啦啦啦
23
00:02:29,000 --> 00:02:33,000
啦啦啦啦啦
24
00:02:33,000 --> 00:02:38,000
啦啦啦啦啦啦
25
00:02:40,000 --> 00:02:45,000
作词:李宗盛 作曲:李宗盛
同样成功识别出了音乐场景,并添加了相关信息,虽然还是瞎编的,错别字逐渐增多,但是却成功识别出了所以的 “啦啦啦”.....甚至 larger-v2 模型都没做到。。。。。。

用时23秒,相当的快了
接下来是 small 模型
small
1
00:00:00,000 --> 00:00:02,000
(字幕制作:贝尔)
2
00:00:02,000 --> 00:00:14,000
(字幕制作:贝尔)
3
00:00:30,000 --> 00:00:35,000
月光把天空照亮
4
00:00:35,000 --> 00:00:41,000
撒下一片光 盲点坠海洋
5
00:00:41,000 --> 00:00:47,000
美的流 心从天而降
6
00:00:47,000 --> 00:00:53,000
心中的梦想都随风飘扬
7
00:00:53,000 --> 00:00:59,000
展开透明翅膀的重点场
8
00:00:59,000 --> 00:01:05,000
找寻一个最美丽的希望
9
00:01:05,000 --> 00:01:10,000
美吧 天空翻起彩色下光
10
00:01:10,000 --> 00:01:18,000
带着回忆梦想一起悲伤
11
00:01:18,000 --> 00:01:26,000
月光把天空照亮
12
00:01:26,000 --> 00:01:32,000
撒下一片光 盲点坠海洋
13
00:01:32,000 --> 00:01:38,000
美的流 心从天而降
14
00:01:38,000 --> 00:01:44,000
心中的梦想都随风飘扬
15
00:01:44,000 --> 00:01:49,000
展开透明翅膀的重点场
16
00:01:49,000 --> 00:01:55,000
找寻一个最美丽的希望
17
00:01:55,000 --> 00:02:00,000
美吧 天空翻起彩色下光
18
00:02:00,000 --> 00:02:07,000
带着回忆梦想一起悲伤
19
00:02:14,000 --> 00:02:34,000
(字幕制作:贝尔)
20
00:02:34,000 --> 00:02:43,000
(字幕制作:贝尔) 没有添加音频信息,说明已经不再对场景和语义做考虑,质量逐渐粗糙。可能针对纯英文内容效果会好很多。
时间居然和 medium 模型差不多

时间 22秒
然后是base模型:
base
1
00:00:00,000 --> 00:00:02,000
作词:李宇作曲:李宇
2
00:00:03,000 --> 00:00:04,000
作词:李宇
3
00:00:04,000 --> 00:00:06,000
作词:李宇
4
00:00:30,000 --> 00:00:35,000
月光把天空照亮
5
00:00:35,000 --> 00:00:41,000
撒下一片光 忙点 追海洋
6
00:00:41,000 --> 00:00:47,000
泪灯流 心从天而降
7
00:00:47,000 --> 00:00:53,000
心中的梦想 都随风表扬
8
00:00:53,000 --> 00:00:58,000
展开 透明翅膀的窗
9
00:00:58,000 --> 00:01:05,000
照须一个最美丁的希望 美丽
10
00:01:05,000 --> 00:01:10,000
包 天空翻起彩色 下光
11
00:01:10,000 --> 00:01:18,000
待着回忆 梦想 也去背下
12
00:01:21,000 --> 00:01:26,000
月光把天空照亮
13
00:01:26,000 --> 00:01:32,000
撒下一片光 忙点 追海洋
14
00:01:32,000 --> 00:01:38,000
泪灯流 心从天而降
15
00:01:38,000 --> 00:01:45,000
心中的梦想 都随风表扬
16
00:01:45,000 --> 00:01:53,000
发明翅膀的窗 照须一个最美丽
17
00:01:53,000 --> 00:02:00,000
包 天空翻起彩色 下光
18
00:02:00,000 --> 00:02:08,000
待着回忆 梦想 也去背下
19
00:02:09,000 --> 00:02:33,000
Lalala
20
00:02:33,000 --> 00:02:40,000
Lalala
21
00:02:40,000 --> 00:02:47,000
Lalala 用时:

用时 4.5秒
最后是 tiny 模型:
emmm tiny 模型在 WhisperDesktop 上的运行未输出结果,我们去命令行进行识别:
tiny
[00:30.000 --> 00:35.700] 愿光 把天空照亮
[00:35.700 --> 00:41.600] 撒下一片光 黄天 却海洋
[00:41.600 --> 00:47.300] 每等流 心痛天而降
[00:47.300 --> 00:53.100] 心中的梦想到随风飘阳
[00:53.100 --> 00:58.900] 展开 靠命直播 打出天窗
[00:58.900 --> 01:04.700] 招续一个最美的幸福
[01:04.700 --> 01:09.100] 美后 天空烦起海锁
[01:09.100 --> 01:12.900] 下光 带着回忆
[01:12.900 --> 01:21.000] 我想一 起飞沙
[01:21.000 --> 01:26.200] 愿光 把天空照亮
[01:26.200 --> 01:32.000] 撒下一片光 黄天 却海洋
[01:32.000 --> 01:37.800] 每等流 心痛天而降
[01:37.800 --> 01:43.600] 心中的梦想到随风飘阳
[01:43.600 --> 01:49.300] 展开 靠命直播 打出天窗
[01:49.300 --> 01:54.900] 招续一个最美的幸福
[01:54.900 --> 01:59.300] 美后 天空烦起海锁
[01:59.300 --> 02:03.100] 下光 带着回忆
[02:03.100 --> 02:08.200] 我想一 起飞沙
[02:08.200 --> 02:15.200] 下光 带着回忆
[02:15.200 --> 02:23.200] 下光 带着回忆
[02:23.200 --> 02:32.200] 下光 带着回忆
[02:38.200 --> 02:45.200] 下光 带着回忆
总之质量一言难尽。用时4秒。
首先,不论是 Whisper 还是 WhisperDesktop 都需要 ffmpeg 。
链接:https://pan.baidu.com/s/10SWo1iRiViPg3Q40duKWfw?pwd=ljhm
提取码:ljhm
--来自百度网盘超级会员V9的分享 这里提供一个 ffmpeg 的文件,不需要安装,解压之后将 ffmpeg 文件夹放到某个路径下,然后将 “XXXX\ffmpeg\bin” 目录添加到系统环境变量中去即可。
在控制台输入:
ffmpeg -version 看到以下信息,即表示成功:

ffmpeg 版本信息
音视频转换工具:
这里面还包含一个可以用来进行视频音频格式转换的工具,可以使用这个工具将视频中的音频提取出来然后再放进 Whisper 中进行识别转写,从而实现字幕制作。这个工具也是依赖于 ffmpeg 的。
OpenAI 和 Whisper.cpp 的模型格式转换工具:
该工具被提供在 Whisper.cpp 的项目源码中,是 python 脚本
https://github.com/ggerganov/whisper.cpp/blob/master/models/convert-pt-to-ggml.py
这里再提供封装版本:
链接:https://pan.baidu.com/s/13XUxrTSC2sRrMSHxqvIOCQ?pwd=b652
提取码:b652
--来自百度网盘超级会员V9的分享
https://github.com/CheshireCC/convert_pt_to_ggml_GUI
修正了一些原始代码中的命名逻辑,使之更方便。并添加了GUI

GUI版转换工具
简繁体转换工具
复制这段内容后打开百度网盘APP,操作更方便哦。 链接:https://pan.baidu.com/s/10vjWtdUytWqcnvOZdfZ7KA?pwd=162j
提取码:162j--来自百度网盘超级会员V9的分享
最后再扯一点,在使用中我发现, WhisperDesktop 可能是没有加参数而直接默认方式调用 Whisper , 在处理部分非英语音频时,模型往往出现严重的幻听,常用语言中尤其是日语最为严重,这个时候往往需要引入 VAD 或者修改模型参数,但很遗憾,在 WhisperDesktop 中似乎并没有提供修改运行参数的方式。。。。。(也可能是我没有发现而已)