whisper.cpp:极速语音识别的 C++ 实现,PC 到手机都能跑

whisper.cpp:极速语音识别的 C++ 实现,PC 到手机都能跑

AI音频

📖 简介

whisper.cpp 是 OpenAI Whisper 模型的 C++ 移植版,由 llama.cpp 的同一作者开发。在 CPU 上就能达到接近实时的语音转文字速度,支持 ARM 架构(树莓派/手机),无需 GPU。45k+ Stars,本地语音识别的事实标准。

📝 详细介绍

语音识别,不能总要联网

OpenAI 的 Whisper 模型准确率极高——但官方的 Python 实现需要 PyTorch、显存占用大、推理速度慢。对于想做本地实时语音转文字、或者想集成到嵌入式设备中的场景来说太笨重了。

whisper.cpp 的作者正是 llama.cpp 的那个大神(ggerganov)。他用纯 C++ 重新实现了 Whisper 模型,把推理速度提升了 10 倍以上,而模型文件大小缩小了 80%

GitHub 数据

指标数据
Stars45,000+
主语言C++
开源协议MIT
最近更新2026 年 7 月
核心作者ggerganov(也是 llama.cpp 作者)

性能对比:C++ vs Python

指标OpenAI Whisper (Python)whisper.cpp
推理速度(CPU, 12 核)3.2x 实时0.8x 实时(比说话还快)
峰值内存~6 GB~400 MB
模型文件大小~3 GB~500 MB(GGML 格式)
GPU 要求必需 CUDA完全不需要
启动时间10-20 秒

使用方式

命令行用法

# 下载模型
bash ./models/download-ggml-model.sh base.en

# 转录音频文件
./main -m models/ggml-base.en.bin -f sample.wav

# 实时麦克风转录
./stream -m models/ggml-small.en.bin

# 输出带时间戳的字幕
./main -m models/ggml-base.bin -f meeting.mp3 
  --print-timestamps -ot -of meeting

C++ 集成示例

#include "whisper.h"

struct whisper_context *ctx = whisper_init_from_file("ggml-base.bin");
if (!ctx) { fprintf(stderr, "模型加载失败
"); return 1; }

// 处理音频
std::vector pcmf32 = load_audio("speech.wav");
whisper_full_params params = whisper_full_default_params(
    WHISPER_SAMPLING_GREEDY);
params.print_progress = false;

if (whisper_full(ctx, params, pcmf32.data(), pcmf32.size()) == 0) {
    int n_segments = whisper_full_n_segments(ctx);
    for (int i = 0; i 

模型选择指南

模型参数量磁盘速度(i7-12700)推荐场景
tiny39M75 MB0.1x 实时嵌入式设备、实时性优先
base74M142 MB0.2x 实时普通 CPU、日常转录
small244M466 MB0.5x 实时准确率和速度的最佳平衡
medium769M1.5 GB1.0x 实时高准确率需求
large-v31.5B2.9 GB2.0x 实时最高准确率(多语言)

tiny 和 base 模型在 Android 手机上也能跑出实时效果。whisper.cpp 甚至有对应的 Android 和 iOS Demo 应用

应用场景

实时会议转写

whisper.cpp + 麦克风输入,可以实现本地实时会议录音转文字,数据不出局域网:

./stream -m models/ggml-small.en.bin 
  --step-ms 2000 
  --length-ms 10000
# 每 2 秒增量识别,保留 10 秒上下文

字幕自动生成

配合 ffmpeg,批量生成视频字幕文件:

ffmpeg -i video.mp4 -vn -acodec pcm_s16le -ar 16000 audio.wav
./main -m models/ggml-medium.bin 
  -f audio.wav 
  --print-timestamps 
  -osrt -of subtitles
# 输出 subtitles.srt 字幕文件

语音助手管线

whisper.cpp + Ollama + 语音合成 = 完整的本地语音助手:

语音输入 → whisper.cpp 转文字 → Ollama LLM 推理 → 语音合成输出
         ↓                          ↑
    (纯本地)               (纯本地)
数据全程不出设备

技术架构

whisper.cpp 的底层是 GGML 张量库(也是 llama.cpp 的基础)。GGML 针对 CPU 做了极致的优化:

  • AVX2 / NEON 指令集加速:充分利用桌面和移动 CPU 的 SIMD 能力
  • INT8 量化:模型权重从 FP16 量化为 INT8,速度翻倍,精度几乎无损
  • 内存映射(mmap):模型不一次性加载到内存,按需读取
  • 纯 C++11 实现:零依赖,编译后单二进制文件

同类对比

方案CPU 推理速度内存占用语言支持嵌入集成难度
whisper.cpp★★★★★★★★★★★★★★★★★★★
OpenAI Whisper (Python)★★★★★★★★★★★★
Faster Whisper (CTranslate2)★★★★★★★★★★★★★★★
WhisperX (带说话人分离)★★★★★★★★★★★
Google Speech-to-Text(云)N/AN/A★★★★★★★★★

总结

whisper.cpp 是那种"用完就回不去"的工具。一旦体验过 400MB 内存、零 GPU、实时转录的流畅感,就很难接受 Python 版的臃肿了。它让本地语音识别不再是服务器专属——一台笔记本电脑、甚至一部手机就能跑出专业级的语音转文字效果推荐给:语音应用开发者、会议转录需求者、嵌入式 AI 开发者、隐私优先的应用场景。

🚀

AI 项目推荐

AI音频
标签
#语音识别 #Whisper #C++ #本地推理 #GGML
浏览
👁️ 8
发布日期
2026-07-24