十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

语音识别命令行工具从零到一:whisper-cli 实战全攻略

语音识别命令行工具从零到一:whisper-cli 实战全攻略 语音识别命令行工具从零到一whisper-cli 实战全攻略【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp凌晨两点你还在为一个小时的会议录音逐句补字幕。拖动进度条、听一句、敲一行——这种语音识别靠人肉的工作方式试过一次的人都不想来第二次。市面上语音识别工具不少但能真正离线运行、不依赖网络、转换速度还快得离谱的whisper.cpp 是绕不开的名字。它把 OpenAI 的 Whisper 模型用纯 C/C 重写打包成一个简洁的命令行工具 whisper-cli一条命令就能把音频变成带时间戳的文字。这篇文章不打算按安装-基础-高级-排错的老套路写我们直接从一个真实场景出发带你把这条命令行工具链真正用起来。一句话说清它是什么whisper.cpp 是 Whisper 模型的 C/C 移植版。原版 Whisper 是 OpenAI 开源的语音识别模型跑起来要 Python 环境、要 GPU 显存、加载还慢whisper.cpp 则把整个模型推理塞进一个几十兆的可执行文件里CPU 就能跑内存占用可控还能通过 Metal、CUDA、Vulkan 等后端调用 GPU。它赢在三个字轻、快、省。能力说明适用人群离线转录音频转文字全程本地推理无需联网隐私敏感、网络不稳的场景多语言识别支持 90 语言可自动检测或手动指定中英混杂、多语言素材多格式输出SRT/VTT 字幕、JSON/CSV 结构化数据、词级时间戳字幕组、数据分析、内容运营实时流式识别麦克风实时转写边说话边出字会议纪要、语音助手、直播字幕说话人标记配合 tdrz 模型标注发言轮次多人对话、访谈整理语法约束GBNF 语法文件限制识别结果范围语音命令、结构化指令识别5分钟跑通第一个识别关键是要先拿到一次成功的结果成就感比什么都重要。整个过程只需要三步。第一步克隆并编译。git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp cmake -B build cmake --build build --config Release预期效果build/bin/目录下出现whisper-cli、stream、quantize、bench等可执行文件。编译过程需要几分钟取决于你的机器。第二步下载模型。仓库里带了下载脚本直接指定模型名即可./models/download-ggml-model.sh base.en预期效果models/目录下多出一个约 142 MiB 的ggml-base.en.bin文件。这个base.en是英文模型体积适中最适合第一次跑通。第三步转录仓库自带的示例音频。./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav预期效果终端逐行打印出带时间戳的英文转写你会看到那句著名的Ask not what your country can do for you...。从命令敲下去到出结果通常只要几秒钟。到这里你已经完成了第一次端到端语音识别。剩下的事情都是在这条命令上做文章。小贴士仓库还提供了make base.en一条命令自动完成下载模型并对 samples/ 下所有 wav 文件跑推理。想快速验证环境用它最快。从会用到好用模型与参数怎么选跑通之后你多半会问为什么我的中文录音识别出来是乱码为什么这么慢答案藏在两个选择里模型和参数。模型选型。whisper.cpp 的模型从 tiny 到 large 共五档还有带.en后缀的纯英文版和-q5_0量化版。选型本质是精度和资源的交换模型磁盘占用特点推荐场景tiny / tiny.en75 MiB极快精度一般嵌入式设备、实时转写、快速验证base / base.en142 MiB速度与精度均衡通用入门、日常短录音small / small.en466 MiB精度明显上一个台阶会议记录、播客转写medium1.5 GiB高精度多语言表现好专业转写、中文等非英语内容large-v3 / turbo2.9 / 1.5 GiB最强精度turbo 版更快字幕制作、对质量要求最高的场景两个容易忽略的细节识别中文务必用不带.en的多语言模型如medium纯英文模型对中文几乎无能为力-q5_0量化版体积缩水约 60%精度损失很小是资源紧张时的首选。量化也很简单一条命令./build/bin/quantize models/ggml-medium.bin models/ggml-medium-q5_0.bin q5_0预期效果生成体积约 600 MiB 的量化模型文件后续用-m指向它即可。参数取舍。whisper-cli 的-h会列出几十个参数但日常真正用得上的就那几个。我按调参目的给你拆开参数作用付出的代价推荐场景-t 8指定线程数加快推理CPU 占用和功耗上升多核机器上处理长音频-l zh指定识别语言语言判断错了会全错明确知道音频语种时-l auto自动检测语言开头几秒可能误判多语种混杂素材-tr把结果翻译成英文丢失原文速度略降只想快速了解内容大意-ml 64限制每段最长字符数分段变碎字幕对齐、逐句校对-tdrz启用说话人轮次标记必须搭配 tdrz 专用模型多人会议、访谈--prompt ...给模型提供上下文提示几乎无专业术语多的领域-fa开启 Flash Attention 加速需要硬件与后端支持GPU 推理时举个实际组合一段 40 分钟的中文访谈用 medium 模型、8 线程、自动语言检测./build/bin/whisper-cli -m models/ggml-medium.bin -t 8 -l auto -f interview.wav --print-progress预期效果终端显示进度百分比逐段打印中文转写最终完整输出全文。这里--print-progress很重要——长音频没有进度反馈你会以为程序卡死了。把单次命令变成生产力能出结果只是起点真正有价值的是把它沉淀成可复用的脚本。你会发现语音识别这类工具最值钱的能力不是跑一次而是反复跑、批量跑、无人值守地跑。批量转写一个文件夹。用一条简单的 for 循环就能把整个目录的 wav 一次性处理完并统一输出 SRT 字幕for f in wavs/*.wav; do ./build/bin/whisper-cli -m models/ggml-base.en.bin -f $f -osrt -of out/${f%.wav} done预期效果out/目录下每个音频对应一个同名.srt字幕文件。-of参数指定输出文件前缀是很多人第一次会漏掉的关键点——不指定时输出文件会以音频名加后缀的形式散落在当前目录。一条命令完成格式转换。whisper-cli 只认 16-bit PCM WAV而现实中的素材大多是 mp3、m4a 甚至视频。把 ffmpeg 和 whisper-cli 串起来一步到位ffmpeg -i meeting.mp3 -ar 16000 -ac 1 -c:a pcm_s16le -f wav - | ./build/bin/whisper-cli -m models/ggml-base.en.bin -预期效果mp3 被实时转成 16kHz 单声道 WAV通过管道直接喂给 whisper-cli转录结果打印在终端。注意最后的-它告诉 whisper-cli 从标准输入读音频——这是它隐藏的管道能力。接入其他工具链。输出 JSON 格式后几乎任何脚本语言都能接手处理./build/bin/whisper-cli -m models/ggml-medium.bin -l zh -f lecture.wav -oj -of lecture jq -r .segments[].text lecture.json预期效果第一条命令生成lecture.json第二条用 jq 把每段文字提取出来拼接成纯文本。这样转录结果就变成了可搜索、可统计、可喂给任何下游系统的数据。你会注意到JSON 里除了文本还有每段的起止时间和置信度做字数统计、时间轴分析都顺手。新手最容易踩的5个坑这些坑我几乎在每一个第一次用 whisper-cli 的人身上都见过提前排掉能省你半天。坑一音频格式不支持。现象是报错或直接闪退。原因是输入不是 16-bit PCM WAV。解决办法一句话任何格式先过一遍ffmpeg -i input -ar 16000 -ac 1 -c:a pcm_s16le output.wav。坑二没下载模型就运行。现象是提示找不到models/ggml-base.en.bin。原因很简单——模型不会自己出现。先跑./models/download-ggml-model.sh 模型名再谈其他。坑三中文识别一塌糊涂。现象是输出英文或乱码。原因是你用了.en后缀的英文专用模型。换成small、medium这类多语言模型并加-l zh。坑四长音频卡住不动。现象是运行后长时间无输出。原因不是卡死而是默认只在处理完才打印。加--print-progress看进度或者先用-d 30000只处理前 30 秒验证效果。坑五输出文件找不到。现象是明明加了-osrt却没看到 srt 文件。原因是不指定-of时输出名由输入音频名推导。明确用-of 你的前缀指定路径文件去向一目了然。实战把一场会议录音变成可交付成果现在把前面所有知识点串成一个能直接照跑的工作流。目标一段 20 分钟的多人会议录音产出一份带说话人标记的 SRT 字幕、一份 JSON 结构化数据以及一段纯文本摘要素材。第一步准备素材和模型。假设素材是meeting.mp3需要说话人标记下载small.en-tdrz模型英文会议或medium中文会议ffmpeg -i meeting.mp3 -ar 16000 -ac 1 -c:a pcm_s16le meeting.wav ./models/download-ggml-model.sh small.en-tdrz预期效果得到 16kHz 单声道的meeting.wav和 tdrz 专用模型。第二步一次转录多格式输出。whisper-cli 支持同时生成多种输出格式./build/bin/whisper-cli -m models/ggml-small.en-tdrz.bin -tdrz -t 8 \ -f meeting.wav -osrt -oj -otxt -of meeting_out预期效果生成meeting_out.srt字幕、meeting_out.json结构化数据、meeting_out.txt纯文本。转写内容中会带有[SPEAKER_00]、[SPEAKER_01]这样的轮次标记你能直接看出谁在什么时候说了什么。第三步快速产出摘要素材。用 jq 把文本和时长抽出来统计总时长和字数jq -r .segments[] | \(.start|floor/60|floor):\(.start|floor%60) \(.text) meeting_out.json预期效果终端按分:秒 文本的紧凑格式输出全部内容。这份文本可以直接贴给总结工具生成会议纪要也可以人工快速浏览定位关键段落。整个流程从原始 mp3 到三份成品文件全程不需要打开任何图形界面跑完一遍之后下个月的会议录音你只需要替换文件名重跑一次。这就是把工具变成生产力的含义。三条进阶路径走到这里你已经能用 whisper-cli 解决真实的语音转文字需求了。想继续深入有三条路摆在面前路径一从命令行走进代码。whisper.cpp 提供了完整的 C APIinclude/whisper.h以及 Go、Java、Ruby、JavaScript 等语言的绑定。如果你想让转录能力嵌入自己的应用而不是手动敲命令从这里入手。路径二换个运行环境。项目支持编译成 WebAssembly 在浏览器里跑也有 Android、iOS 的完整示例。手机端离线语音识别、网页端实时字幕都是这条路径的延伸。路径三往性能极致走。尝试 CUDA、Metal、Vulkan 等 GPU 后端或者研究量化、Flash Attention 对速度和内存的影响。配合bench工具做基准测试你会对性能调优建立直观手感。最后说句实在话开源项目最好的学习方式是把代码仓库 clone 下来自己折腾。跑通一个例子、读一段源码、修一个 bug比看十篇教程都管用。如果你在实战中发现了有意思的用法或者踩了什么文档没写清楚的坑欢迎反馈给社区——每一个工具的背后都是一群愿意分享的人。【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表