7.2 Whisper.cpp
Whisper.cpp 是 OpenAI Whisper 模型的纯 C++ 实现,极其轻量、高效,但需要命令行操作。
快速概览
| 项目 | 信息 |
|---|---|
| GitHub | https://github.com/ggml-org/whisper.cpp |
| 支持平台 | Linux / Windows / macOS / iOS / Android |
| 价格 | 完全开源免费 |
| 难度 | ⭐⭐⭐⭐⭐(纯命令行) |
为什么有 Whisper.cpp
优势
- 极快: C++ 实现,无 Python 开销
- 极小: 单个二进制文件
- 跨平台: 几乎所有平台都能跑
- 量化模型: 可大幅减小模型体积
- 可移植: 嵌入式设备都能跑
局限
- 纯命令行: 没有 GUI
- 配置复杂: 需要技术能力
- 精度略低: 量化版本牺牲少量精度
- 没有翻译: 仅 ASR
适用人群
推荐
- ✅ 嵌入式开发者
- ✅ 移动端开发者
- ✅ 极致优化用户
- ✅ 服务器部署
不推荐
- ❌ 普通用户(用 Buzz)
- ❌ 不会命令行(放弃)
编译与安装
Linux/macOS
# 克隆项目
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
# 编译
make
# 下载模型
bash ./models/download-ggml-model.sh large-v3
Windows
# 需要 Visual Studio 编译
# 或下载 release 版本
Apple Silicon Mac
特别优化,使用 Metal GPU 加速:
# 启用 Metal 加速
make WHISPER_METAL=1
基础使用
单文件转写
# 转写音频
./main -m models/ggml-large-v3.bin -f input.wav
# 输出到 SRT
./main -m models/ggml-large-v3.bin -f input.wav -osrt
流式处理
# 实时麦克风
./stream -m models/ggml-large-v3.bin
使用量化模型
# 8-bit 量化(模型大小减半)
./main -m models/ggml-large-v3-q8_0.bin -f input.wav
# 4-bit 量化(模型大小变 1/4)
./main -m models/ggml-large-v3-q4_0.bin -f input.wav
性能对比
模型大小
| 模型 | 原始大小 | q8_0 | q4_0 |
|---|---|---|---|
| large-v3 | 3 GB | 1.5 GB | 750 MB |
| medium | 1.5 GB | 750 MB | 380 MB |
速度对比
在 M2 Mac 上跑 60 秒英文音频:
| 模型 | Python Whisper | Whisper.cpp |
|---|---|---|
| large-v3 | 30 秒 | 8 秒 |
| medium | 15 秒 | 4 秒 |
Whisper.cpp 通常快 3-4 倍。
高级功能
1. 实时流处理
./stream -m models/ggml-large-v3.bin --step 1000 --length 10000
参数:
--step: 处理步长(毫秒)--length: 处理窗口长度
2. 多语言支持
# 自动检测语言
./main -m models/ggml-large-v3.bin -f input.wav --language auto
# 锁定语言
./main -m models/ggml-large-v3.bin -f input.wav --language en
3. 翻译为英文
# Whisper 原生支持翻译为英文
./main -m models/ggml-large-v3.bin -f chinese.wav --task translate
4. 输出多种格式
# SRT 字幕
./main -m models/ggml-large-v3.bin -f input.wav --output-srt
# VTT 字幕
./main -m models/ggml-large-v3.bin -f input.wav --output-vtt
# JSON
./main -m models/ggml-large-v3.bin -f input.wav --output-json
# 文本
./main -m models/ggml-large-v3.bin -f input.wav --output-txt
移动端使用
iOS
GitHub 提供 iOS 示例项目:
whisper.cpp/examples/whisper.objc/
可以集成到自己的 iOS App。
Android
类似 iOS,有 Android 示例:
whisper.cpp/examples/whisper.android/
嵌入式使用
Whisper.cpp 可以跑在:
- Raspberry Pi
- Jetson Nano
- 各种嵌入式 Linux 设备
适合:
- 离线智能音箱
- 智能助手
- IoT 设备
与 Faster Whisper 对比
| 维度 | Whisper.cpp | Faster Whisper |
|---|---|---|
| 语言 | C++ | Python |
| 速度 | 极快 | 快 |
| 精度 | 略低(量化) | 高 |
| 易用 | 命令行 | Python API |
| 部署 | 二进制文件 | Python 环境 |
| GPU | Metal/CUDA | CUDA |
适用场景
1. 服务器部署
需要轻量、快速:
# 服务器端持续监听
./stream-server -m models/ggml-large-v3-q8_0.bin --port 8080
2. 嵌入式设备
资源受限的设备:
# 量化模型 + CPU
./main -m models/ggml-tiny.bin --threads 4
3. 集成到 App
iOS/Android App:
- 离线 ASR
- 无需联网
- 用户隐私好
4. 命令行批处理
# 批量处理目录下所有音频
for f in *.mp3; do
./main -m models/ggml-large-v3.bin -f "$f" --output-srt
done
寻求技术支持
1. GitHub Issues
https://github.com/ggml-org/whisper.cpp/issues
2. 让 Buzz 帮你
普通用户直接用 Buzz:
- Buzz 内置了 Whisper.cpp
- 图形界面操作
- 功能完整
设置 → Models → 选择 "Whisper.cpp" 后端
本节小结
- Whisper.cpp 是 Whisper 的极致优化版
- 适合开发者集成到自己的项目
- 普通用户用 Buzz 即可享受 Whisper.cpp 的功能
- C++ 实现,跨平台
第七章结束
恭喜!完成第七章后,你已经了解了:
- ✅ WhisperLive(实时服务)
- ✅ Whisper.cpp(C++ 优化版)
这些工具适合技术用户,普通用户用 Buzz/MacWhisper 即可。
下一步: 第八章 - 实战案例 学习真实场景的应用。
💬 技术咨询: 加微信 15600871059(【专业译员工具社群】) 获取 Whisper.cpp 集成的实战经验。