☰
Whisper.cpp 从零到可用:离线语音识别本地转写完整指南
2026/10/27 0:50:24 网站建设 项目流程

Whisper.cpp 从零到可用:离线语音识别本地转写完整指南

【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp

手上有 10 条会议录音想一次性转成文字,又不想把音频传到云服务。whisper.cpp 就是干这个的——它是 OpenAI Whisper 语音识别模型的 C/C++ 移植版,整个转写过程在本地离线完成,纯 C++ 实现、无第三方依赖。

五分钟出第一条转录结果

环境要求很低:一台装了 C++ 编译器(C++11 及以上)和 CMake 的机器,内存 2GB 起步。Linux 直接装编译工具链即可:

sudo apt install build-essential cmake

然后依次执行:拉代码、下模型、编译、跑示例音频。仓库里自带一条 JFK 演讲的样例samples/jfk.wav,可以直接用:

git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp bash models/download-ggml-model.sh base.en
cmake -B build cmake --build build --config Release
./build/bin/whisper-cli -f samples/jfk.wav

跑完会在终端看到带时间戳的英文转写结果。模型文件默认找models/ggml-base.en.bin,所以上面不需要-m参数。嫌麻烦的话,make base.en一条命令可以完成"下载模型 + 构建 + 转写全部示例音频"。

工具装好了,接下来看几个日常会用到的玩法。

换语言、出字幕、批量跑

非英语音频:默认按英语识别,中文音频要加-l zh,日语-l ja。不确定语种就传-l auto让它自动判断,或者只加-dl让它检测完语种直接退出。注意.en后缀的模型只认英语,多语种场景要下不带.en的模型。

生成字幕文件:命令行工具能直接输出多种格式。加-osrt得到 SRT 字幕、-otxt纯文本、-ovttVTT、-ojJSON,文件会放在音频同目录。做字幕工作流的话基本-osrt就够了。

批量处理:-f参数可以出现多次,一条命令处理多个文件:

./build/bin/whisper-cli -f a.wav -f b.wav -f c.wav -osrt

有个坑先说在前面:它目前只吃16 位单声道 16kHz 的 WAV。mp3、m4a 之类的先用 ffmpeg 转一下:

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

按硬件选对模型尺寸

五个档位的内存和磁盘占用如下,选型基本就是拿这个数字跟你的机器对一下:

模型磁盘内存占用适用场景
tiny75 MiB~273 MB快速验证流程
base142 MiB~388 MB日常使用,默认推荐
small466 MiB~852 MB精度要求更高
medium1.5 GiB~2.1 GB专业场景
large2.9 GiB~3.9 GB精度优先

内存不够可以下量化版(如large-v3-q5_0,2.9 GiB 压到 1.1 GiB),精度损失很小。

有加速硬件的话,构建时加对应参数即可,运行时自动走 GPU:

  • NVIDIA:cmake -B build -DGGML_CUDA=1
  • 各品牌显卡(Vulkan):cmake -B build -DGGML_VULKAN=1
  • CPU 用 OpenBLAS 加速:cmake -B build -DGGML_BLAS=1
  • Apple Silicon 默认走 Metal,无需额外配置

线程数默认取核心数的一半,可以用-t手动指定。改完参数重新cmake --build build就行。

几个高频坑

Q:报错或者转写出来是空的?九成是音频格式问题。确认是 16 位 16kHz 单声道 WAV,不是用-f直接传了 mp3。

Q:识别不准怎么办?先升一档模型(base → small → medium);再确认语种参数和模型类型匹配——中文音频配.en模型必然拉胯。

Q:模型下载脚本失败?手动下载ggml-xxx.bin文件放进models/目录即可,模型清单和下载地址见 models/ 的说明。

Q:第一次用 GPU 特别慢?首次运行要把模型编译成设备专属缓存,第二次开始就快了,属正常现象。

Q:想在局域网里给别的程序调用?仓库自带一个 HTTP 服务示例,接口风格模仿 OpenAI 的 API,位置在 examples/server/。

转写逻辑本身集中在 src/whisper.cpp,想改采样或解码策略的话从这里入手。

【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询