whisper.cpp
纯C/C++实现的Whisper推理引擎,零依赖可在任意平台本地运行
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
纯C/C++实现的Whisper推理引擎,零依赖可在任意平台本地运行
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:whisper.cpp 架构概览

想象这样一个场景:你坐在咖啡馆里,笔记本没有网络连接,但需要将一段长达两小时的会议录音转成文字。传统方案要么依赖云端 API(需要网络),要么运行笨重的 PyTorch 模型(需要 GPU + 复杂环境)。whisper.cpp 打破了这个困局——只需一个几百 MB 的二进制文件,无需任何外部依赖,即可在你的笔记本上离线完成高精度语音转文字。这就是 ggerganov(Georgi Gerganov)用纯 C/C++ 重写的 whisper.cpp 给开发者带来的变革。
2022 年 11 月,OpenAI 发布 Whisper 语音识别模型,以其强大的多语言识别能力和鲁棒性惊艳业界。然而原始 PyTorch 实现体积庞大,对运行环境要求严苛——需要 Python、CUDA 驱动、一整套 PyTorch 依赖库。这让在边缘设备(Raspberry Pi、旧款笔记本)或特定平台(iOS 应用、WebAssembly)上部署变得困难重重。
Georgi Gerganov 是知名的开源多面手,此前已在 llama.cpp 项目中验证了"用纯 C/C++ 重写大模型"这条路的可行性。llama.cpp 的成功经验促使他将同样思路应用到 Whisper 上。2022 年 12 月,whisper.cpp 以"Show HN"形式登陆 Hacker News,迅速获得 399 个 upvotes,评论区涌入了大量开发者的积极反馈。
whisper.cpp 的核心设计哲学是:最小化依赖、最优化性能、最大程度可移植。Gerganov 不仅重写了 Whisper 的推理逻辑,还同步开发了配套的张量库 ggml(GGML Machine Learning Library),两者共同构成了一个自包含的 ML 推理生态。如今 ggml-org 组织托管着包括 llama.cpp、whisper.cpp 在内的众多高效推理项目。
图2:ggml-org 团队

whisper.cpp 的技术实现可以分为三个层次:模型层、推理层和硬件加速层。
Whisper 原始模型基于 Transformer encoder-decoder 架构,包含三个核心组件:音频梅尔频谱(Mel Spectrogram)特征提取、多层 Transformer 编码器、以及基于语言模型的解码器。whisper.cpp 在 src/whisper.cpp 和 include/whisper.h 中完整实现了这三部分,核心代码量约 5000 行(不含 ggml 底层)。
模型文件采用自定义的 ggml 格式(.bin 后缀),通过 whisper_model_loader 接口加载。项目提供了完整的模型转换脚本,可将官方 HuggingFace 格式的 Whisper 模型转换为 ggml 格式。支持的模型尺寸覆盖 Tiny、Base、Small、Medium、Large-v1/v2/v3 共 7 个档位,参数规模从 39M 到 1550M 不等。
whisper.cpp 实现了原始 Whisper 的所有推理模式,包括:
值得特别强调的是**零内存分配(Zero Memory Allocations)**设计:整个推理过程中,所有张量操作的中间结果都复用预分配缓冲区,不调用 malloc。这对于嵌入式系统和实时应用至关重要——避免了内存碎片和分配延迟,确保推理时间可精确预测。
图3:矩阵运算性能优化

whisper.cpp 的性能优势来源于多层次的硬件加速支持:
| 加速方案 | 支持平台 | 说明 |
|---|---|---|
| ARM NEON | Apple Silicon (M1/M2/M3) | 苹果自研芯片矢量指令 |
| Metal | macOS Apple Silicon | GPU 推理,全速运行在 NPU/GPU |
| AVX/AVX2 | x86 Linux/Windows | 消费级 Intel/AMD CPU |
| AVX-512 | 高端 x86 | 志强/酷睿 i9 等高端 CPU |
| CUDA | NVIDIA GPU | 完整的 cuBLAS/cuSOLVER 支持 |
| Vulkan | 跨平台 | AMD/Intel/NVIDIA 通用 GPU |
| ROCm | AMD GPU | AMD 显卡专用 |
| OpenVINO | Intel 处理器/NPU | Intel 生态集成 |
| WebAssembly + SIMD | 浏览器 | 纯前端运行,可通过 WebGPU 加速 |
| Core ML | iOS/macOS | 苹果生态内最高效的推理方式 |
Apple Silicon 上的 Metal 加速是 whisper.cpp 的标杆场景。实测在 MacBook M1 Pro 上运行 base.en 模型,推理速度比 PyTorch 原版快 2-3 倍,同时功耗更低。
whisper.cpp 支持整数量化(Integer Quantization),可以将 FP32 模型权重量化为 INT8 或 INT16。量化后模型体积缩小 2-4 倍,内存占用相应降低。以 large-v3 模型为例:FP32(原始)约 3.1 GB,INT16(Q8)约 1.6 GB,INT8(Q5)约 800 MB。量化精度损失通常在可接受范围内(Word Error Rate 增幅 < 5%),对于边缘部署场景这是极具吸引力的权衡。
whisper.cpp 的目录结构体现了清晰的功能划分:
whisper.cpp/
├── include/whisper.h # 公共 C API 头文件,唯一对外接口
├── src/whisper.cpp # Whisper 推理核心逻辑
├── ggml/ # ggml 张量库(作为 submodule 或内嵌)
├── examples/ # 丰富示例代码
│ ├── cli/ # 命令行工具(最常用)
│ ├── whisper.objc/ # iOS/macOS 示例(Objective-C)
│ ├── whisper.android/ # Android 示例
│ ├── bench/ # 性能基准测试
│ ├── bench.wasm/ # WASM 基准测试
│ └── command/ # 流式语音命令示例
├── bindings/ # 多语言绑定(Go/Java/JavaScript/Ruby)
├── tests/ # 完整的测试数据集(LibriSpeech 等)
├── models/ # 预转换模型下载脚本
└── samples/ # 测试音频样本(JFK 演讲等)
这个结构的精妙之处在于:核心推理逻辑与用户交互层完全解耦。include/whisper.h 定义的 C API 极其简洁(< 100 个函数),任何语言都可以通过 FFI 调用。这意味着新语言绑定的开发成本极低——目前已有 Go、Java、JavaScript、Ruby 四种官方绑定,社区还贡献了 Python、Rust、Swift 等数十种非官方绑定。
# 克隆仓库
git clone https://github.com/ggerganov/whisper.cpp
cd whisper.cpp
# 下载 tiny.en 模型并编译运行(一条命令)
make base.en
make base.en 会自动下载 ggml 格式的 base.en 模型(约 140MB),编译项目,然后用该模型转录 samples 目录下的所有测试音频。JFK 演讲录音的转录只需几秒即可完成。
# 下载 large-v3 模型
./models/download-ggml-model.sh large-v3
# 编译
make
# 转录(英文自动检测语言)
./build/release/bin/main -m models/ggml-large-v3.bin -f samples/jfk.wav
# 转录(指定语言为中文)
./build/release/bin/main -m models/ggml-large-v3.bin -f your_audio.mp3 -l zh
# 实时流式识别(需要麦克风)
./build/release/bin/main -m models/ggml-large-v3.bin -t 8 --dtw
whisper.cpp 为移动端提供了开箱即用的示例项目:iOS(examples/whisper.objc)包含完整应用可离线运行;Android(examples/whisper.android)是完整的 Android Studio 项目,支持录音和实时转录。
whisper.cpp 的代码质量在开源项目中属于较高水准:
tests/ 目录下包含 LibriSpeech 等标准语音测试集,可验证转录准确率whisper.h 维护了良好的 API 兼容性,废弃 API 有明确的 deprecated 宏标记尽管 whisper.cpp 取得了巨大成功,但在使用中也需要注意以下局限:
1. 模型精度略低于 PyTorch 原版:由于从头移植和量化过程,whisper.cpp 的 Word Error Rate(WER)比原始 PyTorch 版本略高约 0.5-2%,对于对精度要求极高的医疗、法律等专业场景需谨慎评估。
2. 不支持 Whisper 的全部功能:原始 Whisper 的一些高级特性(如说话人分离、关键词时间戳精调等)在 whisper.cpp 中尚未完全支持,或需要额外的后处理步骤。
3. 仅支持 16-bit WAV 格式:命令行工具默认仅接受 16-bit WAV 文件,输入 MP3/FLAC 等格式需要预先用 ffmpeg 转换。
4. 社区维护风险:项目核心贡献者相对集中(主要依赖 Gerganov 个人和少数活跃维护者),长期维护的可持续性取决于社区活跃度。
whisper.cpp 的出现标志着语音识别领域的一个转折点:它证明了强大的 AI 模型完全可以在消费级硬件上运行,无需云端、不依赖网络、不需要昂贵的 GPU 服务器。这意味着隐私敏感场景(医疗对话、企业会议)可以在本地完成转录,数据不出本地网络。
whisper.cpp 与 llama.cpp 共同构建了一套"纯 C/C++ 重写 AI 模型"的工程范式,影响了 llama.cpp、Mistral.cpp、Phi.cpp 等数十个后续项目。这套范式的核心价值在于:将 AI 能力从"云端集中式"推向"终端分布式"。
ggml-org 组织目前管理着超过 20 个 C/C++ AI 推理项目,形成了以 ggml 为核心的统一生态。2024 年底,ggml 新增了 DNN(Deep Neural Network)后端支持,开始从 LLM 扩展到更广泛的 AI 任务。这预示着一个以"高效本地推理"为核心的统一框架正在成型。
目前 whisper.cpp 已被集成到众多主流应用中:FFmpeg 通过社区补丁支持 whisper 加速、各大音乐平台的歌词同步功能、部分智能手机的语音备忘录应用,以及多个开源笔记软件(如 Obsidian)的语音输入插件。
| 维度 | 详情 |
|---|---|
| 开发语言 | C/C++(核心)+ 各语言绑定 |
| 许可协议 | MIT |
| GitHub Stars | 51,000+ |
| 最新稳定版本 | v1.9.1 |
| 支持模型 | Whisper Tiny/Base/Small/Medium/Large (v1-v3) |
| 量化精度 | FP32 / FP16 / INT16 / INT8 / INT4 |
| 最低内存 | |
| 仓库地址 | ggml-org/whisper.cpp(ggerganov/whisper.cpp 已归档) |