whisper.cpp 是 OpenAI Whisper 模型的纯 C/C 实现,无需 Python 或 PyTorch 即可运行 Whisper 语音识别模型。
也算是跟前一个 stable-diffusion.cpp 的原因同时发现的吧,这个才真真切切的是 llama.cpp 同个ggml-org项目下的仓库,当时我不知道怎么地就是没有想到下载已经编译好的二进制可执行文件,反倒是花费一二的时间将其编译后才使用的,可惜的是当时却是因为配置过低差70多MB的“内存”才能正常启动。
就这样又是搁置许久之后才再次着手“研究”起来,主要就是前不久的时候再折腾私有AI语音助手的时候接触了faster-whisper,随后就再次拾起之前搁置的whisper.cpp研究一番。
一开始是用自己编译后的版本成功启动的,后来觉得可能自己编译的不如直接在 GitHub 下载编译好的二进制可执行版本,遂将其切换成仓库编译好的版本来做如下的内容了。
核心功能
- 🎤 实时录音转文字 – 支持流式识别
- 📁 音频文件转文字 – 支持多种格式
- 🌐 多语言支持 – 99 种语言识别
- 📝 说话人识别 – 支持多说话人标注
- 🔧 beam search & greedy – 两种解码模式
- 💬 SRT/VTT 字幕生成 – 自动输出时间戳
适用场景
- 📱 移动端语音识别应用
- 🖥️ 桌面应用集成
- 🔌 服务器端批量处理
- 🤖 嵌入式设备部署
- 🎮 游戏本地化
- 📺 视频字幕自动生成
下载
可以编译亦可以下载编译好的版本,这里还是用 GitHub 编译好的版本吧。
- 下载:
curl -LO https://github.com/ggml-org/whisper.cpp/releases/download/v1.9.1/whisper-bin-ubuntu-x64.tar.gz
- 解压:
tar -zxvf whisper-bin-ubuntu-x64.tar.gz
- 运行:
./whisper-server -m models/ggml-base.bin --host 0.0.0.0 --language zh
模型选择
| Model | Disk | SHA |
|---|---|---|
| tiny | 75 MiB | bd577a113a864445d4c299885e0cb97d4ba92b5f |
| tiny-q5_1 | 31 MiB | 2827a03e495b1ed3048ef28a6a4620537db4ee51 |
| tiny-q8_0 | 42 MiB | 19e8118f6652a650569f5a949d962154e01571d9 |
| tiny.en | 75 MiB | c78c86eb1a8faa21b369bcd33207cc90d64ae9df |
| tiny.en-q5_1 | 31 MiB | 3fb92ec865cbbc769f08137f22470d6b66e071b6 |
| tiny.en-q8_0 | 42 MiB | 802d6668e7d411123e672abe4cb6c18f12306abb |
| base | 142 MiB | 465707469ff3a37a2b9b8d8f89f2f99de7299dac |
| base-q5_1 | 57 MiB | a3733eda680ef76256db5fc5dd9de8629e62c5e7 |
| base-q8_0 | 78 MiB | 7bb89bb49ed6955013b166f1b6a6c04584a20fbe |
| base.en | 142 MiB | 137c40403d78fd54d454da0f9bd998f78703390c |
| base.en-q5_1 | 57 MiB | d26d7ce5a1b6e57bea5d0431b9c20ae49423c94a |
| base.en-q8_0 | 78 MiB | bb1574182e9b924452bf0cd1510ac034d323e948 |
| small | 466 MiB | 55356645c2b361a969dfd0ef2c5a50d530afd8d5 |
| small-q5_1 | 181 MiB | 6fe57ddcfdd1c6b07cdcc73aaf620810ce5fc771 |
| small-q8_0 | 252 MiB | bcad8a2083f4e53d648d586b7dbc0cd673d8afad |
| small.en | 466 MiB | db8a495a91d927739e50b3fc1cc4c6b8f6c2d022 |
| small.en-q5_1 | 181 MiB | 20f54878d608f94e4a8ee3ae56016571d47cba34 |
| small.en-q8_0 | 252 MiB | 9d75ff4ccfa0a8217870d7405cf8cef0a5579852 |
| small.en-tdrz | 465 MiB | b6c6e7e89af1a35c08e6de56b66ca6a02a2fdfa1 |
| medium | 1.5 GiB | fd9727b6e1217c2f614f9b698455c4ffd82463b4 |
| medium-q5_0 | 514 MiB | 7718d4c1ec62ca96998f058114db98236937490e |
| medium-q8_0 | 785 MiB | e66645948aff4bebbec71b3485c576f3d63af5d6 |
| medium.en | 1.5 GiB | 8c30f0e44ce9560643ebd10bbe50cd20eafd3723 |
| medium.en-q5_0 | 514 MiB | bb3b5281bddd61605d6fc76bc5b92d8f20284c3b |
| medium.en-q8_0 | 785 MiB | b1cf48c12c807e14881f634fb7b6c6ca867f6b38 |
| large-v1 | 2.9 GiB | b1caaf735c4cc1429223d5a74f0f4d0b9b59a299 |
| large-v2 | 2.9 GiB | 0f4c8e34f21cf1a914c59d8b3ce882345ad349d6 |
| large-v2-q5_0 | 1.1 GiB | 00e39f2196344e901b3a2bd5814807a769bd1630 |
| large-v2-q8_0 | 1.5 GiB | da97d6ca8f8ffbeeb5fd147f79010eeea194ba38 |
| large-v3 | 2.9 GiB | ad82bf6a9043ceed055076d0fd39f5f186ff8062 |
| large-v3-q5_0 | 1.1 GiB | e6e2ed78495d403bef4b7cff42ef4aaadcfea8de |
| large-v3-turbo | 1.5 GiB | 4af2b29d7ec73d781377bfd1758ca957a807e941 |
| large-v3-turbo-q5_0 | 547 MiB | e050f7970618a659205450ad97eb95a18d69c9ee |
| large-v3-turbo-q8_0 | 834 MiB | 01bf15bedffe9f39d65c1b6ff9b687ea91f59e0e |
使用
这一次也是以Web的方式启动的,这样一来就可以对外提供API接口了,当然对于本地运行的可以使用whisper-cli以命令行的方式运行。其中也可以编译WASM后用浏览器的方式来运行。
curl 127.0.0.1:8080/inference \
-H "Content-Type: multipart/form-data" \
-F file="@<file-path>" \
-F temperature="0.0" \
-F temperature_inc="0.2" \
-F no_speech_thold="0.6" \
-F response_format="json"
参考
- Port of OpenAI’s Whisper model in C/C++
https://github.com/ggml-org/whisper.cpp - ggerganov/whisper.cpp
https://huggingface.co/ggerganov/whisper.cpp
ChiuYut
2026年07月20日