在 MacBook Pro M2 Max 上测试 Whisper
类别: Whisper 标签: ffmpeg MacBookProM2Max目录
准备音频文件
macOS 上打开 QuickTimePlayer
- [文件] -> [新建音频录制]
- 录制
- 朗读:荷兰发布了一份主题为“宣布即将对先进半导体制造设备采取的出口管制措施”的公告表示,鉴于技术的发展和地缘政治的背景,政府已经得出结论,有必要扩大现有的特定半导体制造设备的出口管制。
- 停止
- 保存(test.m4a)
m4a 转换 wav
ffmpeg -i test.m4a -ar 16000 -ac 1 -c:a pcm_s16le test.wav
OpenAI Whisper
创建虚拟环境
conda create --name whisper python
conda activate whisper
安装
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
wget https://raw.githubusercontent.com/openai/whisper/main/requirements.txt
pip install -r requirements.txt
测试
模型默认保存在 ~/.cache/whisper
ls ~/.cache/whisper
base.pt large-v2.pt medium.pt small.pt tiny.pt
转录(X->X)
whisper test.wav --model small
翻译(X->English)
whisper test.wav --model small --task translate
测试不同模型的使用情况
测试脚本
for type in 'tiny' 'base' 'small' 'medium' 'large'
do
echo '>> ' $type
time whisper --language zh --model $type test.wav
print
done
使用 time 命令测试使用资源详情和度量
model | user(s) | system(s) | cpu | total(s) | 内存 |
---|---|---|---|---|---|
tiny | 7.13 | 6.01 | 358% | 3.664 | 370M |
base | 12.21 | 10.29 | 362% | 6.211 | 430M |
small | 39.15 | 23.90 | 380% | 16.569 | 1.2G |
medium | 117.27 | 68.43 | 377% | 49.172 | 3.2G |
large | 184.13 | 114.85 | 361% | 1:22.73 | 6.3G |
- tiny
[00:00.000 --> 00:04.000] 荷蘭发布了一份主题为 [00:04.000 --> 00:09.500] 宣布即将对先进半道体知道设备采取的 [00:09.500 --> 00:13.000] 出口管制措施的公告表示 [00:13.000 --> 00:17.000] 坚于技术的发展和地缘政治的背景 [00:17.000 --> 00:20.000] 政府已经得出结论 [00:20.000 --> 00:24.000] 有必要扩大现有的特定半道体 [00:24.000 --> 00:27.000] 知道设备的出口管制
- base
[00:00.000 --> 00:12.800] 格蘭發布了一份主題為宣布即將對先進半導體製造設備採取的出口管制措施的公告表示 [00:12.800 --> 00:17.140] 監獄技術的發展和地緣政治的背景 [00:17.140 --> 00:26.880] 政府已經得出結論有必要擴大現有的特定半導體製造設備的出口管制
- small
[00:00.000 --> 00:13.000] 格兰发布了一份主题为,宣布即将对先进半导体制造设备采取的出口管制措施的公告表示, [00:13.000 --> 00:27.000] 监狱技术的发展和地缘政治的背景,政府已经得出结论有必要扩大现有的特定半导体制造设备的出口管制。
- medium
[00:00.000 --> 00:03.840] 格兰发布了一份主题为 [00:03.840 --> 00:08.440] 宣布即将对先进半导体制造设备 [00:08.440 --> 00:12.800] 采取的出口管制措施的公告表示 [00:12.800 --> 00:17.040] 坚于技术的发展和地缘政治的背景 [00:17.040 --> 00:19.840] 政府已经得出结论 [00:19.840 --> 00:24.080] 有必要扩大现有的特定半导体 [00:24.080 --> 00:26.880] 制造设备的出口管制
- large
[00:00.000 --> 00:04.000] 格兰发布了一份主题为 [00:04.000 --> 00:13.000] 宣布即将对先进半导体制造设备采取的出口管制措施的公告表示 [00:13.000 --> 00:17.000] 鉴于技术的发展和地缘政治的背景 [00:17.000 --> 00:20.000] 政府已经得出结论 [00:20.000 --> 00:27.000] 有必要扩大现有的特定半导体制造设备的出口管制
whisper.cpp
克隆
git clone https://github.com/ggerganov/whisper.cpp
编译
cd whisper.cpp
make
下载模型
bash ./models/download-ggml-model.sh base.en
bash ./models/download-ggml-model.sh tiny
bash ./models/download-ggml-model.sh base
bash ./models/download-ggml-model.sh small
bash ./models/download-ggml-model.sh medium
bash ./models/download-ggml-model.sh large
测试
./main -f samples/jfk.wav
whisper_init_from_file_no_state: loading model from 'models/ggml-base.en.bin'
whisper_model_load: loading model
whisper_model_load: n_vocab = 51864
whisper_model_load: n_audio_ctx = 1500
whisper_model_load: n_audio_state = 512
whisper_model_load: n_audio_head = 8
whisper_model_load: n_audio_layer = 6
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 512
whisper_model_load: n_text_head = 8
whisper_model_load: n_text_layer = 6
whisper_model_load: n_mels = 80
whisper_model_load: f16 = 1
whisper_model_load: type = 2
whisper_model_load: mem required = 215.00 MB (+ 6.00 MB per decoder)
whisper_model_load: adding 1607 extra tokens
whisper_model_load: model ctx = 140.60 MB
whisper_model_load: model size = 140.54 MB
whisper_init_state: kv self size = 5.25 MB
whisper_init_state: kv cross size = 17.58 MB
system_info: n_threads = 4 / 12 | AVX = 0 | AVX2 = 0 | AVX512 = 0 | FMA = 0 | NEON = 1 | ARM_FMA = 1 | F16C = 0 | FP16_VA = 1 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 0 | VSX = 0 |
main: processing 'samples/jfk.wav' (176000 samples, 11.0 sec), 4 threads, 1 processors, lang = en, task = transcribe, timestamps = 1 ...
[00:00:00.000 --> 00:00:11.000] And so my fellow Americans, ask not what your country can do for you, ask what you can do for your country.
whisper_print_timings: load time = 64.96 ms
whisper_print_timings: fallbacks = 0 p / 0 h
whisper_print_timings: mel time = 14.07 ms
whisper_print_timings: sample time = 10.42 ms / 27 runs ( 0.39 ms per run)
whisper_print_timings: encode time = 217.08 ms / 1 runs ( 217.08 ms per run)
whisper_print_timings: decode time = 62.48 ms / 27 runs ( 2.31 ms per run)
whisper_print_timings: total time = 378.26 ms
测试不同模型的使用情况
测试脚本
for type in 'tiny' 'base' 'small' 'medium' 'large'
do
echo '>> ' $type
time ./main -m models/ggml-$type.bin -f test.wav -l auto
print
done
使用 time 命令测试使用资源详情和度量
model | user(s) | system(s) | cpu | total(s) | 内存 |
---|---|---|---|---|---|
tiny | 1.67 | 0.05 | 334% | 0.514 | 130M |
base | 2.93 | 0.08 | 355% | 0.848 | 220M |
small | 9.16 | 0.20 | 377% | 2.475 | 620M |
medium | 23.74 | 0.60 | 381% | 6.383 | 1.8G |
large | 43.18 | 1.07 | 384% | 11.512 | 3.4G |
- tiny
[00:00:00.000 --> 00:00:12.760] 荷蘭發布了一份主題為宣布即將對先進半導體知道社會採取的出口管制措施的公告表示 [00:00:12.760 --> 00:00:17.080] 間於技術的發展和地緣政治的背景 [00:00:17.080 --> 00:00:24.120] 政府已經得出結論有必要擴大現有的特定半導體 [00:00:24.120 --> 00:00:26.760] 知道社會的出口管制
- base
[00:00:00.000 --> 00:00:12.800] 隔然发布了一份主题为宣布即将对先进半导体制到设备采取的出口管制措施的公告表示 [00:00:12.800 --> 00:00:17.140] 监与技术的发展和地缘政治的背景 [00:00:17.140 --> 00:00:26.880] 政府已经得出结论有必要扩大现有的特定半导体制到设备的出口管制
- small
[00:00:00.000 --> 00:00:12.360] 荷兰发布了一份主题为,宣布即将对先进半导体制造设备采取的出口管制措施的公告表示, [00:00:12.360 --> 00:00:26.560] 监狱技术的发展和地缘政治的背景,政府已经得出结论有必要扩大现有的特定半导体制造设备的出口管制。
- medium
[00:00:00.000 --> 00:00:03.760] 格兰发布了一份主题为 [00:00:03.760 --> 00:00:08.440] 宣布即将对先进半导体制造设备 [00:00:08.440 --> 00:00:12.680] 采取的出口管制措施的公告表示 [00:00:12.680 --> 00:00:16.920] 兼于技术的发展和地缘政治的背景 [00:00:16.920 --> 00:00:19.720] 政府已经得出结论 [00:00:19.720 --> 00:00:26.600] 有必要扩大现有的特定半导体制造设备的出口管制
- large
[00:00:00.000 --> 00:00:04.000] 格兰发布了一份主题为 [00:00:04.000 --> 00:00:13.000] 宣布即将对先进半导体制造设备采取的出口管制措施的公告表示 [00:00:13.000 --> 00:00:17.000] 鉴于技术的发展和地缘政治的背景 [00:00:17.000 --> 00:00:20.000] 政府已经得出结论 [00:00:20.000 --> 00:00:27.000] 有必要扩大现有的特定半导体制造设备的出口管制
OpenAI Whisper & Whisper.cpp
model | OpenAI Whisper Total(s) | Whisper.cpp Total(s) | 🚀(x) | OpenAI Whisper Memory | Whisper.cpp Memory | 🚀(x) |
---|---|---|---|---|---|---|
tiny | 3.664 | 0.514 | 6.1 | 370M | 130M | 1.8 |
base | 6.211 | 0.848 | 6.3 | 430M | 220M | 1.0 |
small | 16.569 | 2.475 | 5.7 | 1.2G | 620M | 0.9 |
medium | 49.172 | 6.383 | 6.7 | 3.2G | 1.8G | 0.8 |
large | 1:22.73 | 11.512 | 6.2 | 6.3G | 3.4G | 0.9 |