让我们比较一下当前的whisper、whisper.cpp和faster-whisper。
OpenAI / Whisper 自发布以来,似乎在各个方面都发生了变化,例如在 2022 年 12 月增加了 large-v2 模型和各种版本升级。
whisper.cpp是用 CPU 的 C/C++ 编写的。 它似乎是Core ML支持,所以它对于Mac用户有强烈的感觉。
而 faster-whisper是基于 CTranslate2 重写了 Whisper 模型,似乎它的速度比原版的快 4 倍,精度也相同,并且使用的内存更少。
以下是测试音频 (WAV)(48 秒)的测试示例。
结果
Faster-whisper 的 GPU 和传闻中的一样快。
Faster-whisper CPU运算速度更快,GPU的速度也从85.62秒→23.9秒加快。
whisper.cpp 效果反而不是很好。 可能真正的价值体现在支持Mac CoreML加速上。
Implementation | Device | Time | 结果 |
---|---|---|---|
openai/whisper | CPU | 3分1秒 | 上午和今天的东京股市,日经平均指数小幅走高,收于11.72日元,比昨天上涨22.72日元。 是088.58日元,最初价格上涨的股票数量为1146只,而下跌的股票数量为368只,保持不变的股票数量为104只股票,以下是礼物的公告: 在这个节目中,将抽签选出10人来接收每月出版的月报4月号,申请在东京通过电话03-0107-837303-0107-8373 |
openai/whisper | GPU | 23.9秒 | 上午和今天的东京股市,日经平均指数小幅走高,收于11.72日元,比昨天上涨22.72日元。 是088.58日元,最初价格上涨的股票数量为1146只,而下跌的股票数量为368只,保持不变的股票数量为104只股票,以下是礼物的公告: 在这个节目中,将抽签选出10人来接收每月出版的月报4月号,申请在东京通过电话03-0107-837303-0107-8373 |
whisper.cpp | CPU | 7分13秒 | 上午和今天的东京股市,日经平均指数小幅走高,收于11.72日元,比昨天上涨22.72日元。 是088.58日元,最初价格上涨的股票数量为1146只,但价格下跌了368只,104只股票保持不变,这是礼物公告该计划将通过抽签将月度报告4月号赠送给10人申请,请致电东京03-0107-8373,03-0107-8373 |
faster-whisper | CPU(Float32) | 4分 18秒 | 我是浅野智美 今天东京股市的日经平均指数略高 收盘价为11,088.58日元,比昨天上涨22.72日元 最初价格上涨的股票数量为1146只,而价格下跌的股票数量为368只股票保持不变 104只股票 以下是礼物的公告: 在本节目中,出版了月度报告4月号。 我们将通过抽签将其赠送给 10 人 申请,请致电东京 03-0107-8373 03-0107-8373 以上是该计划的公告 |
faster-whisper | CPU(int8) | 2分 27秒 | 我是浅野智美 今天东京股市的日经平均指数略高 收盘价为11,088.58日元,比昨天上涨22.72日元 最初价格上涨的股票数量为1146只,而价格下跌的股票数量为368只股票保持不变 104只股票 以下是礼物的公告: 在本节目中,出版了月度报告4月号。 我们将通过抽签将其赠送给 10 人 申请时,请致电东京0301078373 0301078373 以上是该计划的公告。 |
faster-whisper | GPU(Float16) | 5.22 秒 | 我是浅野智美 今天东京股市的日经平均指数略高 收盘价为11,088.58日元,比昨天上涨22.72日元 最初价格上涨的股票数量为1146只,而价格下跌的股票数量为368只股票保持不变 104只股票 以下是礼物的公告: 在本节目中,出版了月度报告4月号。 我们将通过抽签将其赠送给 10 人 申请,请致电东京 03-0107-8373 03-0107-8373 以上是该计划的公告 |
faster-whisper | GPU(int8_float16) | 4.73 秒 | 我是浅野智美 今天东京股市的日经平均指数略高 收盘价为11,088.58日元,比昨天上涨22.72日元 最初价格上涨的股票数量为1146只,而价格下跌的股票数量为368只股票保持不变 104只股票 以下是礼物的公告: 在本节目中,出版了月度报告4月号。 我们将通过抽签将其赠送给 10 人 申请时,请致电东京0301078373 0301078373 以上是该计划的公告。 |
Whisper
安装
!pip install -U openai-whisper
- 1
模型加载
import whisper
model = whisper.load_model("large", device="cpu")
- 1
- 2
执行
%%time
result = model.transcribe("sampleTokyo.WAV")
print(result["text"])
- 1
- 2
- 3
whisper.cpp
安装
!git clone https://github.com/ggerganov/whisper.cpp.git
%cd whisper.cpp
!bash ./models/download-ggml-model.sh large
!make
- 1
- 2
- 3
- 4
转换为 16kHz 的 WAV
!ffmpeg -i ../sampleTokyo.WAV -ar 16000 sampleTokyo.wav
- 1
执行
%%time
!./main -f ./sampleTokyo.wav -nt -l ja -m models/ggml-large.bin
- 1
- 2
faster-whisper
安装
!pip install faster-whisper
- 1
模型加载
from faster_whisper import WhisperModel
model_size = "large-v2"
model = WhisperModel(model_size, device=“cpu”, compute_type=“float32”)
#model = WhisperModel(model_size, device=“cpu”, compute_type=“int8”)
#model = WhisperModel(model_size, device=“cuda”, compute_type=“float16”)
#model = WhisperModel(model_size, device=“cuda”, compute_type=“int8_float16”)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
%%time
segments, info = model.transcribe("sampleTokyo.WAV", beam_size=5, language='ja')
results = list(segments)
print(' '.join([result.text for result in results]))
- 1
- 2
- 3
- 4