尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

本地语音转文字:3 步在离线环境跑通 Whisper.cpp

本地语音转文字:3 步在离线环境跑通 Whisper.cpp 本地语音转文字3 步在离线环境跑通 Whisper.cpp【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp如果你的产品里有语音备忘录功能音频通常要先传到云端才能转成文字——隐私和网络可用性都是风险点。Whisper.cpp 是 OpenAI Whisper 语音识别模型的 C/C 移植版用一份.bin模型文件加上少量代码就能在本地设备跑通离线语音识别。项目核心实现只有两个文件include/whisper.h 和 src/whisper.cpp其余部分属于 ggml 张量库为推理优化、运行时零内存分配的底层计算库。输入侧有一个硬性约束16kHz、单声道、16-bit PCM WAV。其他格式需要先转换。4 步得到第一个识别结果克隆仓库并进入目录git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp源码、构建脚本和示例音频都在仓库里不需要额外准备依赖。下载预转换的base.en模型bash models/download-ggml-model.sh base.en脚本会把 ggml 格式的现成模型存到models/目录免去自己转换 PyTorch 权重的步骤。base.en体积与精度平衡较好适合起步。编译cmake -B build cmake --build build --config Release一条命令同时产出库文件和whisper-cli命令行工具。用仓库自带样本跑一次识别./build/bin/whisper-cli -f samples/jfk.wav -m models/ggml-base.en.bin-f指定输入 WAV-m指定模型路径。运行后终端会打印带时间戳的转录文本。模型规模怎么选模型磁盘占用推理内存适用场景tiny75 MiB~273 MB实时、低配设备base142 MiB~388 MB通用场景推荐起步small466 MiB~852 MB英文高精度场景medium1.5 GiB~2.1 GB专业转录large2.9 GiB~3.9 GB多语言、最高精度带.en后缀的是仅英语模型不带后缀的模型支持多语言识别--language auto可自动检测语种再加--translate能把任意语言语音直接翻译成英文文本。输出格式与解码约束whisper-cli支持直接把识别结果导出成多种格式-otxt纯文本、-osrt/-ovtt字幕、-ojJSON、-ocsvCSV、-owts词级卡拉OK脚本。--offset-t和--duration参数可以只处理音频的某个时间区间。需要把输出限制在固定词表内时--grammar参数接受 GBNF 语法文件约束解码器只能生成符合语法的 token示例语法在 grammars/ 目录。跨平台与硬件加速CPU 路径ARM NEON、x86 AVX 指令集在编译时自动启用无需额外配置。Apple Siliconcmake -B build -DGGML_METAL1让推理完全跑在 GPU 上Core ML 支持可把 encoder 部分交给 Neural Engine。NVIDIA GPU / Vulkan / Intel OpenVINO各自对应一个 CMake 开关。浏览器examples/whisper.wasm/ 提供完整的 WebAssembly 移植示例Whisper.cpp 离线部署不必局限于桌面端。把离线语音识别嵌进自己的产品核心 API 是一条四步调用链初始化上下文 → 配置参数 → 执行识别 → 遍历分段取文本。#include whisper.h int main() { whisper_context_params cp whisper_context_default_params(); struct whisper_context * ctx whisper_init_from_file_with_params(models/ggml-base.en.bin, cp); struct whisper_full_params fp whisper_full_default_params(WHISPER_SAMPLING_GREEDY); fp.language en; fp.n_threads 4; std::vectorfloat pcm load_wav_f32(audio.wav); // 16kHz 单声道 float whisper_full(ctx, fp, pcm.data(), (int) pcm.size()); for (int i 0; i whisper_full_n_segments(ctx); i) printf(%s\n, whisper_full_get_segment_text(ctx, i)); whisper_free(ctx); return 0; }pcm是 float32 原始采样完整函数签名都在头文件 include/whisper.h 里。不想直接写 C 可以看 bindings/go/、bindings/java/ 或 examples/python/想暴露网络服务的话examples/server/ 是一个现成的 HTTP 服务实现。性能调优线程数最直接的杠杆按物理核心数设置./build/bin/whisper-cli -t 8 -f audio.wav -m models/ggml-base.en.bin模型量化用整数量化压缩模型减小磁盘和内存占用速度可能同时提升./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0GPU 后端编译期选择对应后端Apple Silicon 用 Metalcmake -B build -DGGML_METAL1 # NVIDIA 用 -DGGML_CUDA1高频问题速查识别报错或无输出→ 先确认输入是 16-bit WAV其他格式转换ffmpeg -i in.mp3 -ar 16000 -ac 1 -c:a pcm_s16le out.wav。准确率不及预期→ 英文音频换.en模型或把 base 升到 small/medium长音频注意分段处理。模型下载慢或中断→ 手动下载对应ggml-名字.bin文件放入models/目录文件名与模型名一致即可被脚本和命令行直接使用。下一步跑make samples批量获取测试音频对比 tiny 和 base 在同一素材上的差异。用自己的音频接入whisper-cli熟悉-t、--language、--translate等参数。通读 include/whisper.h把 C API 接进自己的项目。语音数据全程不出设备这是本地语音转文字部署与云端方案最本质的区别。【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表