whisper.cpp:高性能 C/C++ 语音识别引擎入门指南
whisper.cpp 是 OpenAI Whisper 模型的轻量级 C/C++ 移植版,支持在各类设备上本地高效运行语音转写。本文介绍其核心特性、硬件加速与上手指南。
是什么
whisper.cpp 是一个开源、高性能的 OpenAI Whisper 自动语音识别(ASR)架构移植项目,完全基于原生 C 和 C++ 编写。所谓自动语音识别,是指将音频录音中的人类语音转换为书面文字的技术。现代机器学习工具往往依赖庞大的运行时环境和众多外部依赖库,而 whisper.cpp 则特意设计为不依赖任何第三方库,提供了独立且紧凑的高效实现。
whisper.cpp 的架构划分清晰分明。模型的高层业务逻辑主要封装在两个文件中:whisper.h 提供了直观简便的 C 风格应用程序编程接口(API),而 whisper.cpp 则实现了完整的语音识别处理流程。底层的张量计算与数值操作由 ggml 负责,这是一个专为高效本地模型推理而量身打造的机器学习计算库。
运行时效率是 whisper.cpp 的核心设计重点。该软件在架构上实现了运行期“零内存分配”,确保在连续进行音频转写期间,内存占用始终平稳,并将运行时开销降至最低。凭借轻量级的代码库以及无外部框架依赖的特性,whisper.cpp 让软件工程师能够轻松将语音识别功能直接嵌入到桌面程序、移动端应用、网页浏览器和嵌入式系统中。
能做什么
whisper.cpp 能够将音频文件中的语音转换为文本内容,并提供了广泛的功能特性和丰富的硬件加速选项:
- 广泛的模型支持: 该引擎支持转换为自定义
ggml格式的语音模型。所支持的模型规格涵盖tiny、base、small、medium以及large各版本(包含large-v1、large-v2、large-v3和large-v3-turbo)。针对仅需英文转写的任务,开发者也可以选择专门的纯英文模型,例如tiny.en、base.en、small.en和medium.en。 - 语音活动检测(VAD): 项目内置了语音活动检测功能,有助于应用程序识别并隔离输入音频流中的有效语音片段。
- 精度模式与模型量化: 系统支持使用 16 位浮点(F16)和 32 位浮点(F32)的混合精度计算。此外,它还支持整型量化(如 Q5_0 格式)。量化是将高精度浮点模型权重转换为占用空间更小的整型数值的过程,能够显著降低加载和运行模型所需的磁盘存储与运行内存。
- 硬件加速选项:
- Apple Silicon: 针对 Apple 硬件进行了深度优化,视其为一等公民,支持 ARM NEON 矢量指令集、Accelerate 框架以及基于 Metal 的 GPU 加速。同时支持通过 Core ML 或 ANEForge 将编码器部署在 Apple 神经引擎(ANE)上运行。根据项目 README 的说明,与纯 CPU 相比,Core ML 可以带来 3 倍以上的显著提速;而 ANEForge 能直接与 ANE 通信,对于 tiny 到 medium 模型,其编码器速度据称约为 Core ML 的 2 倍。
- x86 与 POWER 处理器: 兼容的 x86 系统可以利用 AVX 矢量指令加速计算。在 POWER 架构上,程序支持 VSX 指令集;根据项目 README 介绍,该优化显著加快了在运行 Linux 的 POWER9 或 POWER10 硬件上的执行速度,甚至能让降频的 Raptor Talos II 系统实现快于实时的语音转写。
- 图形处理器(GPU): 跨多个硬件生态实现了 GPU 加速。支持通过 cuBLAS 和自定义 CUDA 内核加速 NVIDIA 显卡,通过 HIP 和 ROCm 加速 AMD GPU,通过 muBLAS 和自定义 MUSA 内核加速摩尔线程显卡(Moore Threads),并通过 Vulkan 图形 API 提供跨硬件厂商的 GPU 支持。
- 神经处理单元(NPU)与专用计算框架: whisper.cpp 支持 OpenVINO,可在 Intel CPU 以及 Intel 集成或独立显卡上运行,据项目 README 称能显著提升编码器性能;在配备专用 NPU 的 AMD Ryzen AI 300 和 400 系列处理器上,可通过 VitisAI 卸载编码器计算,据项目 README 称相比纯 CPU 推理可获得显著提速;此外,还通过 CANN 工具包支持了华为昇腾(Ascend)NPU。
- 多样化的示例实现: 项目提供了实用的演示范例,包括在 iPhone 13 上实现完全离线的端侧转写、离线语音指令助手,以及开箱即用的 Docker 容器化配置。
怎么开始
上手使用 whisper.cpp 的完整流程包括:克隆官方代码仓库、下载预转换的模型文件、使用 CMake 编译项目,并对音频样本运行转写测试。
首先,从 GitHub 克隆项目代码仓库:
git clone https://github.com/ggml-org/whisper.cpp.git
进入刚刚创建的项目目录:
cd whisper.cpp
接着,下载转换好的 ggml 模型。例如,可以使用项目内置的脚本下载基础英文模型:
sh ./models/download-ggml-model.sh base.en
模型下载完成后,编译项目并使用命令行工具转写音频文件:
# build the project
cmake -B build
cmake --build build -j --config Release
# transcribe an audio file
./build/bin/whisper-cli -f samples/jfk.wav
如果想要快速体验自动化演示,可以直接运行 make base.en,该命令会自动拉取 base.en 模型并对 samples 目录下的所有音频样本依次执行转写。
默认情况下,whisper-cli 示例工具要求输入的音频文件为 16 位 WAV 格式。若音频为 MP3 等其他格式,可以使用 ffmpeg 预先进行格式转换:
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
如果你希望通过整型量化来进一步降低资源消耗,可以编译量化工具并测试体积更小的模型文件:
# quantize a model with Q5_0 method
cmake -B build
cmake --build build -j --config Release
./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0
# run the examples as usual, specifying the quantized model file
./build/bin/whisper-cli -m models/ggml-base.en-q5_0.bin ./samples/gb0.wav
价格与门槛
whisper.cpp 采用宽松友好的 MIT 许可证作为开源项目发布。具体的商业安排、方案以及官方定价条款,均以项目官方仓库主页 whisper.cpp 为准。
该软件支持极其丰富的运行平台:
- macOS(包含 Intel 与 Apple Silicon)
- iOS
- Android
- Java 运行时环境
- Linux 与 FreeBSD
- WebAssembly(支持在网页浏览器中运行)
- Windows(支持 MSVC 和 MinGW 工具链)
- 树莓派(Raspberry Pi)
- Docker 容器
硬件资源开销主要取决于所选用的模型规格。根据项目 README 的说明,标准模型的磁盘空间与运行时内存需求如下:
- tiny: 需要 75 MiB 磁盘存储空间及约 273 MB 运行内存。
- base: 需要 142 MiB 磁盘存储空间及约 388 MB 运行内存。
- small: 需要 466 MiB 磁盘存储空间及约 852 MB 运行内存。
- medium: 需要 1.5 GiB 磁盘存储空间及约 2.1 GB 运行内存。
- large: 需要 2.9 GiB 磁盘存储空间及约 3.9 GB 运行内存。
常规编译构建需要可用的 C/C++ 编译器以及 CMake。示例程序中的音频解码默认依赖内置的 miniaudio 库,同时也提供了可选的编译选项以调用系统的 FFmpeg 开发库(libavcodec-dev、libavformat-dev 和 libavutil-dev)。若要启用特定硬件加速,需要安装对应厂商的依赖组件,例如 CUDA 编译需要 NVIDIA CUDA 工具包,AMD GPU 需要 ROCm,Intel 加速需要 OpenVINO 软件包,macOS 上生成 Core ML 模型需要 Python 与 Xcode,AMD Ryzen AI NPU 需要 XRT 与 FlexML 运行时,华为昇腾 NPU 则需要 CANN 工具包。
适合谁
whisper.cpp 专为需要独立、本地化语音识别引擎的开发者、系统工程师及技术创作者而设计:
- 软件开发人员: 希望通过轻量级 C 风格接口在现有桌面软件、服务端或企业应用中集成端侧语音转写功能,且无需引入沉重运行时环境的工程师。
- 移动端与嵌入式开发者: 在计算资源受限的设备上构建语音工具的程序员,涵盖搭载 iOS 或 Android 的智能手机、树莓派等单板计算机,或是通过 WebAssembly 在浏览器内运行的网页应用。
- 注重隐私的产品团队: 正在开发应用程序、语音助手或语音听写工具,并严格要求音频数据完全停留在本地设备上、绝不跨网络上传到云端 API 的团队。
- 基础设施运维人员: 需要在多样化的硬件环境(从标准 CPU 服务器到专用 GPU 与 NPU 加速硬件)中,通过 Docker 部署容器化转写服务的平台与运维团队。
替代品
OpenAI Whisper 是由 OpenAI 开发的开源语音识别模型。
faster-whisper 是 Whisper 语音识别模型的另一个开源替代实现。
来源
同类推荐
Ollama 简介与入门指南:在本地轻松运行开源 AI 模型
介绍开源平台 Ollama,带你了解如何在保障隐私的前提下在本地或云端运行开源 AI 模型,并掌握其开发者 API 与丰富的第三方生态集成。
Cline:开源 AI 编程智能体详解、核心功能与上手指南
全面介绍开源 AI 编程智能体 Cline,它支持 IDE、命令行与桌面端,能够跨多文件协调修改代码,并自主执行终端工作流以解决开发问题。
NotebookLM 指南:认识这款 AI 研究助手与使用方法
了解 NotebookLM 作为 AI 研究助手的工作原理,探索其基于来源资料的特色功能,并掌握使用 Google 账号快速上手的方法。