拓冰建站拓冰建站
首页 / 资讯中心 / 正文

whisper.cpp 语音转文字全流程实战:从装环境到生成字幕,12 个命令一次讲透

whisper.cpp 语音转文字全流程实战从装环境到生成字幕12 个命令一次讲透【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp你手上有一段录音可能是会议、采访、网课也可能是外语视频里的对白想快速变成可搜索、可编辑的文字。OpenAI 的 Whisper 模型很强但完整版跑起来又重又慢而 whisper.cpp 这个 C/C 移植版把同样的模型塞进了轻量、离线、单机可跑的命令行工具 whisper-cli 里普通笔记本就能流畅转录。本文按从零到实战的旅程组织内容读完你能获得用 3 条命令在 Linux / macOS / Windows 上装好 whisper-cli一张表看懂 6 个官方模型的取舍选对第一份模型掌握量化技巧让老电脑也能跑大模型学会 6 个高频参数自己动手给转录提速、提准生成 SRT 字幕、JSON 结构化结果甚至卡拉 OK 高亮视频复刻两套完整实战会议纪要与外语视频字幕第 1 站动手前先搞清三件事很多人装完跑不起来不是命令错了而是没想清楚三件事机器内存够不够、音频格式对不对、装的是不是新版工具。我们先把这三块地基打好。这台机器跑得动吗先看模型的身材whisper.cpp 的模型从 tiny 到 large-v3 一共六档占用差异接近 50 倍。内存不够时程序会在加载阶段直接报错退出所以先对照这张表评估你的机器模型磁盘占用运行时内存约适合场景tiny75 MiB273 MB树莓派、嵌入式、实时演示base142 MiB388 MB入门体验、英文短句small466 MiB852 MB中文日常对话、中等精度medium1.5 GiB2.1 GB会议、播客等长音频large-v32.9 GiB3.9 GB追求最高精度的离线转录large-v3-turbo约 1.6 GiB约 2.4 GB接近 large 精度、速度更快一句话结论8GB 内存的机器建议从 base 或 small 起步16GB 以上再考虑 large 系列。三条命令装好 whisper-cli项目用 CMake 构建安装过程就是克隆 编译两步。先获取源码git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp然后按你的系统选一条执行# Linux / macOS cmake -B build cmake --build build --config Release # Windows PowerShell需要已安装 VS2022 与 CMake git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp cmake -B build -G Visual Studio 17 2022 cmake --build build --config Release编译完成后主程序在build/bin/whisper-cliWindows 下为build/bin/Release/whisper-cli.exe。顺手验证一下./build/bin/whisper-cli -h能看到一长串参数说明就说明环境 OK 了。这一步相当于拿到了工具箱后面所有玩法都从这一个二进制出发。第 2 站选模型 下载 瘦身三分钟备好弹药whisper-cli 本身不包含模型模型文件需要单独下载就像打印机得配墨盒。一条命令下载官方模型项目内置了下载脚本比如下载多语言版 base./models/download-ggml-model.sh base脚本会显示下载进度完成后给出确认信息Done! Model base saved in models/ggml-base.bin下载时注意一个容易踩的坑文件名里的.en后缀代表仅英文模型如 base.en体积一样但只能识别英文不带后缀的是多语言模型中文、日文都能处理。想省事就认准不带.en的版本。模型量化给模型瘦身却不掉多少精度量化quantization的原理是把模型里的浮点权重从 32 位压缩到更低的位数。类比一下一张照片从 4K 原图压成 1080p肉眼几乎看不出差别但文件小了一大截。whisper.cpp 提供了 quantize 工具# 把 base 模型量化为 q5_0体积约减 40% ./build/bin/quantize models/ggml-base.bin models/ggml-base-q5_0.bin q5_0三种常用量化档位怎么选看这张对比表量化档位体积缩减精度损失适用场景q4_0约 50%轻微内存吃紧的嵌入式/老设备q5_0约 40%极小平衡之选日常主力q8_0约 25%可忽略对精度敏感、内存宽裕时量化后的模型用-m指定即可用法和原版完全一样。第 3 站第一次正式转录从准备音频开始先把音频化妆成标准 WAVwhisper-cli 只认 16kHz、单声道、16-bit 的 PCM WAV。手机录音、MP3、视频里的音轨都不符合好在 ffmpeg 一条命令就能转换# MP3 / 任意格式 → 标准 WAV ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav # 从视频里抽出音轨再转换 ffmpeg -i meeting.mp4 -vn -ar 16000 -ac 1 -c:a pcm_s16le audio.wav这里的三个关键参数值得记住-ar 16000重采样到 16kHzWhisper 训练时的标准采样率-ac 1合并为单声道-c:a pcm_s16le指定无压缩的 PCM 编码。第一次转录 指定语言项目自带一段 11 秒的测试音频samples/jfk.wav肯尼迪演讲用它做第一次尝试最合适./build/bin/whisper-cli -m models/ggml-base.bin -l en -f samples/jfk.wav-l en是告诉模型这段音频说的是英文能省下语言检测的时间。如果是中英混杂或不确定的录音用-l auto让模型自动判断。跑完后你会看到类似这样的输出[00:00:00.000 -- 00:00:02.400] And so my fellow Americans, ask not what your country can do for you. [00:00:02.400 -- 00:00:04.800] Ask what you can do for your country. [00:00:04.800 -- 00:00:07.100] My fellow citizens of the world, ask not what America will do for you.每行前面是起止时间戳后面是识别文本。到这一步音频 → 文字的最小闭环已经跑通。第 4 站像调音师一样调参数让转录又快又准默认参数是稳妥但不激进的。当你想压榨性能或提升准确率时下面这几组参数就是你的调音台。提速四件套# 1. 线程数一般设为 CPU 核心数的 1~2 倍 ./build/bin/whisper-cli -t 8 -f audio.wav # 2. 音频截断长录音只想处理前 30 秒 ./build/bin/whisper-cli -d 30000 -f long_audio.wav # 3. 跳过开头静音段单位毫秒 ./build/bin/whisper-cli -ot 5000 -f audio.wav # 4. 禁用 GPU 兜底-ng 0 为启用1 为禁用 ./build/bin/whisper-cli -ng 0 -f audio.wav提准三件套# 1. 关闭随机性输出更稳定的结果 ./build/bin/whisper-cli -tp 0.0 -f audio.wav # 2. 束搜索beam search同时考虑多个候选再择优 ./build/bin/whisper-cli -bs 5 -bo 2 -f audio.wav # 3. 初始提示词先给模型剧透主题 ./build/bin/whisper-cli --prompt 以下是产品发布会录音涉及参数与定价 -f launch.wav--prompt是个容易被忽略的好东西遇到人名、专有名词频繁识别错时把正确写法塞进提示词准确率会明显回升。一张速查表收好参数作用典型值-t计算线程数CPU 核心数×2-d只处理前 N 毫秒按需-ot跳过开头 N 毫秒5000-tp采样温度越低越稳定0.0~1.0-bs/-bo束搜索宽度 / 候选数5 / 2--prompt初始提示词纠正专有名词一段主题描述第 5 站让结果开口说话——字幕、JSON 与卡拉 OK转录结果不只印在屏幕上whisper-cli 支持 6 种文件输出一次转录可以同时导出多份。六种输出格式怎么选参数产出格式典型用途-otxt纯文本纪要底稿、搜索索引-osrtSRT 字幕视频硬字幕、播放器挂载-ovttVTT 字幕网页视频浏览器原生支持-ojJSON程序二次处理、数据分析-ocsvCSV表格工具、Excel-owts逐词时间戳脚本卡拉 OK 高亮视频示例一次导出字幕 JSON并指定输出文件名./build/bin/whisper-cli -m models/ggml-small.bin -l zh -f interview.wav \ -osrt -oj -of interview_resultSRT 字幕长什么样上面命令会生成interview_result.srt内容大致是1 00:00:00.000 -- 00:00:02.400 各位观众晚上好欢迎收看今天的采访节目。 2 00:00:02.400 -- 00:00:05.100 今天我们请到的嘉宾是一位从业二十年的工程师。把这份 SRT 丢给剪辑软件或ffmpeg -vf subtitles...就能直接烧进视频。JSON 里藏着更多信息-oj生成的 JSON 含语言、时长、分段与置信度等元数据{ language: zh, duration: 305.2, segments: [ { id: 0, start: 0.0, end: 2.4, text: 各位观众晚上好欢迎收看今天的采访节目。 } ] }配合 jq 之类的工具可以轻松提取全文或按时间段切片做会议纪要系统、内容审核管道都很方便。卡拉 OK 玩法加-owts会生成一个 ffmpeg 脚本执行后能产出当前播放歌词高亮的视频./build/bin/whisper-cli -f song.wav -owts source ./song.wav.wts # 执行生成的脚本输出卡拉 OK 视频这个功能很适合给翻唱视频、歌词字幕做后期。第 6 站进阶玩法——实时转录、说话人分离与语法约束边听边写麦克风实时转录stream示例工具把 whisper-cli 变成了实时听写机。先编译再运行cmake --build build --target whisper-stream ./build/bin/whisper-stream -m models/ggml-base.en.bin -t 4 --step 500 --length 5000两个参数要配合理解--step是每次新取多少毫秒音频越小延迟越低--length是上下文窗口多长越大理解越好但响应越慢。想降低延迟就把 step 调小、length 调大想要稳定就把 step 调大。现场演示、实时字幕、语音助手都能用它打底。分清两个说话人会议录音常有两人对谈场景。whisper-cli 支持双声道说话人分离先下载专用模型再给一段立体声左右声道各一个人的音频./models/download-ggml-model.sh small.en-tdrz ./build/bin/whisper-cli -m models/ggml-small.en-tdrz.bin -tdrz -f interview.wav输出里会自动插入说话人切换标记方便后续整理成谁说了什么的逐字稿。用语法把识别结果框住当识别对象是固定句式颜色指令、菜单点单、机器人命令时可以用 GBNF 语法文件约束输出让模型只能在规定词汇里选./build/bin/whisper-cli -f color_command.wav --grammar grammars/colors.gbnf项目grammars/目录里已备好 colors、assistant 等示例语法自定义规则也非常直观类似root 只能由红/绿/蓝等词组成。这个功能对语音交互类产品特别实用能大幅压低误识别率。第 7 站两场完整实战把前面学的串起来实战一40 分钟会议录音 → 结构化纪要假设你有一份meeting.mp3目标产出文字稿 字幕 结构化 JSON三份材料# 第一步转成标准 WAV ffmpeg -i meeting.mp3 -ar 16000 -ac 1 -c:a pcm_s16le meeting.wav # 第二步用 small 模型转录内存与精度的折中一次导出三种格式 ./build/bin/whisper-cli -m models/ggml-small.bin -l zh -f meeting.wav \ -otxt -osrt -oj -of meeting_out拿到meeting_out.txt后配合 jq 抽取 JSON 里的分段文本再丢给摘要工具一份会议纪要就成型了jq -r .segments[].text meeting_out.json full_text.txt实战二给外语视频加中文字幕流程是抽音轨 → 转录英文 → 翻译 → 烧字幕。前两步我们已经会了重点是-tr参数——它能把源语言直接翻成英文ffmpeg -i lecture.mp4 -vn -ar 16000 -ac 1 -c:a pcm_s16le lecture.wav ./build/bin/whisper-cli -m models/ggml-large-v3.bin -l en -tr -f lecture.wav -osrt -of lecture_en ffmpeg -i lecture.mp4 -vf subtitleslecture_en.srt lecture_subbed.mp4如果字幕需要的是中文而不是英文把翻译好的 SRT 交给翻译工具处理再走最后一步烧录即可。这套管道同样适用于播客、公开课、发布会录像。第 8 站翻车自救指南——5 个高频问题现象原因解决办法加载时报内存不足模型档位超过机器负载换 small/tiny或用量化版 q5_0/q4_0识别出一堆乱码音频采样率或声道不对确认已转成 16kHz 单声道 16-bit WAV中文识别很差用了.en英文专用模型改用不带.en的多语言模型GPU 加速不生效编译时未开启对应后端编译加-DGGML_CUDA1NVIDIA或-DGGML_METAL1Apple长录音中途卡死上下文被撑满用-mc 1024限制上下文或-d分段处理另外提醒一句-ng的语义容易搞反-ng 0表示不禁用 GPU即启用-ng 1才是不用 GPU。遇到 GPU 相关问题先确认这条参数和编译选项两头都对齐。写在最后想更进一步还有三张门票到这里你已经掌握了 whisper.cpp 命令行转录的完整链路环境 → 模型 → 参数 → 输出 → 实战 → 排障。想继续深入可以按需探索嵌入到自己的程序项目提供稳定的 C API以及 Go、Java、Ruby、Python 等多语言绑定可以直接在应用里调用转录能力。浏览器里跑whisper.wasm 示例把模型编译成 WebAssembly网页里就能离线转录无需服务器。自定义与调优用models/下的转换脚本接入自己微调过的模型或针对 ARM NEON、AVX2 等指令集重新编译把性能再压榨一轮。如果这篇文章帮你跑通了第一次转录或者你在实践中发现了更妙的参数组合欢迎在评论区分享你的配置遇到问题也可以直接到项目仓库提 issue维护者和其他使用者通常回复得很快。收藏本文下次需要给音频打字时翻出来照着做就好。【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门