公司动态
3 分钟跑通 Whisper.cpp:本地离线语音识别,音频不出你的机器
3 分钟跑通 Whisper.cpp本地离线语音识别音频不出你的机器【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp上周我要把一批 40 分钟的会议录音转成文字按分钟计费、还得把录音上传到第三方平台两件事都让我犹豫。最后装了 Whisper.cpp全程离线跑完一条音频都没离开过电脑。这个项目把 OpenAI 的 Whisper 语音识别模型做成了纯 C/C 实现你在本地对音频文件跑一遍推理就拿到带时间戳的文本支持离线识别、本地转文字和轻量部署不碰任何在线服务。先看它是什么再决定要不要装这一节用一小段话和一张表帮你判断它是不是你要找的东西。whisper.cpp 是 OpenAI Whisper 模型的 C/C 推理移植。运行时没有 Python、没有 pip 依赖CMake 构建完拿到whisper-cli这类可执行文件就能干活。整块核心推理代码集中在 include/whisper.h 和 src/whisper.cpp方便嵌进你自己的程序。项目情况语言与依赖C/C推理路径零第三方依赖平台macOS、Linux、Windows、iOS、Android、WebAssembly树莓派和 Docker 也验证过模型档位tiny75 MiB到 large2.9 GiB另有 large-v3-turbo1.5 GiB内存占用tiny 约 273 MBbase 约 388 MBlarge 约 3.9 GB加速Metal、Core ML、CUDA、Vulkan、OpenBLAS、OpenVINO哪四种人适合用它先对号入座如果你的场景不在这四类里也可以继续往下看只是收益没那么大。手头有一批音频要转文字。播客、访谈、课程录音逐个丢给 whisper-cli 批处理输出就是带时间戳的文本。录音里有隐私内容。病历、法务访谈、内部会议数据出不了内网本地离线推理正好对应转文字不出门的诉求。要做实时字幕。stream 示例 每半秒采一次麦克风持续转写command 示例 则把麦克风变成语音指令入口。在端侧或脚本里嵌入转写能力。bindings/go、bindings/java 提供了语言级封装server 示例 则给出一个仿 OpenAI 接口的 HTTP 转写服务内部仍是本地推理。从克隆到第一条识别结果这一节解决怎么从零跑起来。下面四步是仓库 README 里的最小复现路径按顺序执行即可。1️⃣ 克隆仓库git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp把项目源码拉到你本地并进入目录。下载base.en模型约 142 MiB纯英文场景的默认选择sh ./models/download-ggml-model.sh base.en这条脚本把转换好的 ggml 权重文件放到 models 目录之后运行时就靠它。构建项目cmake -B build cmake --build build --config ReleaseCMake 会生成构建目录和可执行文件默认只依赖 CPU无需额外配置。用仓库自带的 11 秒样本跑第一条识别./build/bin/whisper-cli -f samples/jfk.wav跑完你会在终端看到逐段的识别文本和时间戳-f指定音频模型默认读models/ggml-base.en.bin也可以再用-m显式指定。跑通之后最常用的三件事下面三个动作覆盖了绝大多数日常用法。把 mp3、m4a 先转成工具能吃的格式场景whisper-cli 只认 16 位单声道 16kHz 的 WAV手头的却是 mp3 或手机录的 m4a。操作ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav再用-f output.wav送去识别。效果任何来源的音频都能进流水线不用换工具。用线程数把长音频压快场景1 小时录音用默认线程跑得太慢。操作./build/bin/whisper-cli -f meeting.wav -t 8效果-t设置参与推理的 CPU 线程数核多的机器上总耗时明显下降跑多份任务时用-p控制并行份数。生成 SRT 字幕和量化模型场景要给视频挂字幕或者机器内存有限。操作识别时加-osrt参数会在音频旁产出.srt文件可直接导入剪辑软件内存吃紧时用 quantize 工具给模型瘦身./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0之后-m指向量化后的文件即可。效果字幕制作少一道手工工序量化后磁盘和内存占用都降下来识别质量基本可接受。更快、更小、更准的设置怎么选这一节把选哪个加速、用哪个档位合成两张表照着硬件对号入座就行。按硬件选加速构建时加对应开关硬件环境构建参数说明Apple Silicon-DWHISPER_COREML1编码器跑在 ANE 上官方数据比纯 CPU 快 3 倍以上NVIDIA 显卡-DGGML_CUDA1cuBLAS 加自研 CUDA 核需先装好 CUDA各厂商独显-DGGML_VULKAN1跨厂商通用方案前提是驱动支持 Vulkan普通 x86 CPU-DGGML_BLAS1依赖 OpenBLAS只加速编码器参数只写在 CMake 那一行构建完照常运行示例。按机器选模型档位档位磁盘内存约tiny / tiny.en75 MiB273 MBbase / base.en142 MiB388 MBsmall / small.en466 MiB852 MBmedium1.5 GiB2.1 GBlarge-v3-turbo1.5 GiB偏大large-v32.9 GiB3.9 GB经验值小机器或嵌入式选 tiny.en 起步追求精度上限且内存够上 large-v3-turbo 或 large-v3。多语种音频别选带.en的版本。想量化对比各档位速度仓库里有现成的压测脚本 scripts/bench.py 和 whisper-bench。五个高频坑的排查清单症状、原因、解法各占一行遇到报错直接对号入座。症状喂 mp3 或 48kHz 采样率的文件直接报错退出。 原因工具只解析 16 位单声道 16kHz 的 WAV。 解法先用前面那条 ffmpeg 命令转码再提交识别。症状长音频转写慢得离谱。 原因默认线程数是 4 与物理核数的较小值多核机器没跑满。 解法加-t 8之类的参数数值取自己机器的物理核数。症状加载 large 级别模型时内存吃紧甚至崩溃。 原因large 的内存占用接近 4 GB。 解法换量化模型q5_0档 large 只有约 1.1 GiB或改用 base / small 档。症状开了 Core ML 后第一次运行特别慢。 原因ANE 首次运行要把模型编译成设备专属格式官方也注明了这一行为。 解法不用管第二次起速度就正常了。症状非英文录音识别出来的是乱码英文。 原因不传语言参数时默认按英语解码。 解法用-l zh指定语言或者加--detect-language让模型自己判断。写在最后Whisper.cpp 是一个用纯 C/C 实现的 Whisper 本地推理工具把音频变文字这件事从云端搬回了你自己的机器。它最适合批量转写、隐私敏感数据、实时字幕这三类需求。下一步可以从 examples 目录里挑一个示例改起来比如给 stream 加你自己的指令词表或把 server 示例接进内部系统。【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考